Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
es:slackbook:bash [2019/03/03 23:58 (UTC)] – [Completar con Tab] pedro.herrero | es:slackbook:bash [2019/03/04 00:39 (UTC)] (actual) – [Personalización] pedro.herrero |
---|
====== Redirección de entrada y salida ====== | ====== Redirección de entrada y salida ====== |
| |
Una de las características definitorias de Linux y otros sistemas operativos similares a UNIX es la cantidad de aplicaciones pequeñas y relativamente simples y la capacidad de apilarlas juntas para crear sistemas complejos. Esto se logra redireccionando la salida de un programa a otro, o dibujando la entrada de un archivo o segundo programa. | Una de las características definitorias de Linux y otros sistemas operativos similares a UNIX es la cantidad de aplicaciones pequeñas y relativamente simples y la capacidad de apilarlas juntas para crear sistemas complejos. Esto se logra redireccionando la salida de un programa a otro, o extrayendo la entrada desde un archivo o segundo programa. |
| |
Para comenzar, vamos a mostrarle cómo redirigir la salida de un programa a un archivo. Esto se hace fácilmente con el carácter '>'. Cuando //**bash**// ve el carácter '>', redirige toda la salida estándar (también conocida como stdout) al nombre de archivo que sigue. | Para comenzar, vamos a mostrarle cómo redirigir la salida de un programa a un archivo. Esto se hace fácilmente con el carácter '>'. Cuando //**bash**// ve el carácter '>', redirige toda la salida estándar (también conocida como stdout) al nombre de archivo que sigue. |
</code> | </code> |
| |
En este ejemplo, le mostramos lo que haría //**eco**// si su stdout no se redirigiera a un archivo, luego lo redirigimos al archivo ''/tmp/bar''. Si ''/tmp/bar'' no existe, se crea y la salida del //**eco**// se coloca dentro de él. Si /tmp/bar existiera, entonces su contenido es sobre-escrito. Esta podría no ser la mejor idea si desea mantener esos contenidos en su lugar. Afortunadamente, //**bash**// es compatible con '>>', que agregará la salida al archivo. | En este ejemplo, le mostramos lo que haría //**echo**// si su salida no se redirigiera a un archivo, luego lo redirigimos al archivo ''/tmp/bar''. Si ''/tmp/bar'' no existe, se crea y la salida de //**echo**// se coloca dentro de él. Si /tmp/bar existiera, entonces su contenido es sobre-escrito. Esta podría no ser la mejor idea si desea mantener esos contenidos en su lugar. Afortunadamente, //**bash**// es compatible con '>>', que agregará la salida al archivo. |
| |
<code> | <code> |
</code> | </code> |
| |
Finalmente, puede redirigir la salida de un programa como entrada a otro. Esta es quizás la característica más útil de //**bash**// y otros shells, y se logra usando el caracter '|'. (Este caracter se conoce como 'tubo' (pipe). Si aquí alguien habla de entubar (piping) un programa a otro, esto es exactamente lo que significan). | Finalmente, puede redirigir la salida de un programa como entrada a otro. Esta es quizás la característica más útil de //**bash**// y otros shells, y se logra usando el caracter '|'. (Este caracter se conoce como 'tubería' (pipe). Si se habla de hacer una tubería (piping) de un programa a otro, esto es exactamente lo que significa). |
| |
<code> | <code> |
Slackware Linux y otros sistemas operativos similares a UNIX permiten a los usuarios interactuar con ellos de muchas maneras, pero el más común y posiblemente el más útil es la terminal. En la antigüedad, las terminales eran teclados y monitores (a veces incluso ratones) conectados a un mainframe o servidor a través de conexiones en serie. Hoy en día sin embargo, la mayoría de las terminales son virtuales; Es decir, existen solo en software. Las terminales virtuales permiten a los usuarios conectarse a la computadora sin requerir hardware costoso y, a menudo, incompatible. Más bien, un usuario solo necesita ejecutar el software y se les presenta un terminal virtual (generalmente) altamente personalizable. | Slackware Linux y otros sistemas operativos similares a UNIX permiten a los usuarios interactuar con ellos de muchas maneras, pero el más común y posiblemente el más útil es la terminal. En la antigüedad, las terminales eran teclados y monitores (a veces incluso ratones) conectados a un mainframe o servidor a través de conexiones en serie. Hoy en día sin embargo, la mayoría de las terminales son virtuales; Es decir, existen solo en software. Las terminales virtuales permiten a los usuarios conectarse a la computadora sin requerir hardware costoso y, a menudo, incompatible. Más bien, un usuario solo necesita ejecutar el software y se les presenta un terminal virtual (generalmente) altamente personalizable. |
| |
Las terminales virtuales más comunes (en el sentido de que cada máquina Slackware Linux tendrá al menos una) son los gettys. //**agetty**// (8) ejecuta seis instancias de forma predeterminada en Slackware, y permite a los usuarios locales (aquellos que pueden sentarse físicamente frente a la computadora y escribir desde el teclado) iniciar sesión y ejecutar aplicaciones. Cada uno de estos detalles está disponible en diferentes dispositivos tty a los que se puede acceder por separado presionando la <key>ALT</key> tecla y una de las teclas de función desde el <key>F1</key> principio <key>F6</key>. El uso de estos gettys le permite iniciar sesión varias veces, tal vez como diferentes usuarios, y ejecutar aplicaciones en las carcasas de esos usuarios de forma silenciosa. Esto se hace comúnmente con servidores que no tienen //**X**// instalado, pero se puede hacer en cualquier máquina. | Las terminales virtuales más comunes (en el sentido de que cada máquina Slackware Linux tendrá al menos una) son los gettys. //**agetty**// (8) habilita seis terminales de forma predeterminada en Slackware, y permite a los usuarios locales (aquellos que pueden sentarse físicamente frente a la computadora y escribir desde el teclado) iniciar sesión y ejecutar aplicaciones. Cada uno de estos gettys está disponible en diferentes dispositivos tty a los que se puede acceder por separado presionando la tecla <key>ALT</key> y una de las teclas de función desde el <key>F1</key> principio <key>F6</key>. El uso de estos gettys le permite iniciar sesión varias veces, tal vez como diferentes usuarios, y ejecutar aplicaciones en los shells de esos usuarios de forma silenciosa. Esto se hace comunmente con servidores que no tienen //**X**// instalado, pero se puede hacer en cualquier máquina. |
| |
En computadoras de escritorio, computadoras portátiles y otras estaciones de trabajo donde el usuario prefiere una interfaz gráfica proporcionada por //**X**//, la mayoría de las terminales son gráficos. Slackware incluye muchos terminales gráficos diferentes, pero los más utilizados son la //**consola**// de KDE y la //**Terminal**// de XFCE (1), así como el antiguo modo de espera, xterm (1). Si está utilizando una interfaz gráfica, verifique sus barras de herramientas o menús. Cada entorno de escritorio o administrador de ventanas tiene una terminal virtual (a menudo llamada emuladora de terminal), y todas están etiquetadas de manera diferente. Sin embargo, normalmente, los encontrará en un submenú "Sistema" en entornos de escritorio. Ejecutar cualquiera de estos te dará una terminal gráfica y automáticamente ejecutará tu shell predeterminado. | En computadoras de escritorio, computadoras portátiles y otras estaciones de trabajo donde el usuario prefiere una interfaz gráfica proporcionada por //**X**//, la mayoría de los terminales son gráficos. Slackware incluye muchos terminales gráficos diferentes, pero los más utilizados son la //**consola**// de KDE y la //**Terminal**// de XFCE (1), así como el antiguo modo de espera, xterm (1). Si está utilizando una interfaz gráfica, verifique sus barras de herramientas o menús. Cada entorno de escritorio o administrador de ventanas tiene una terminal virtual (a menudo llamada emuladora de terminal), y todas están etiquetadas de manera diferente. Sin embargo, normalmente, las encontrará en un submenú "Sistema" en entornos de escritorio. Ejecutar cualquiera de estas opciones le dará una terminal gráfica y automáticamente ejecutará su shell predeterminado. |
| |
====== Personalización ====== | ====== Personalización ====== |
bash-3.1$ </code> | bash-3.1$ </code> |
| |
La causa aquí es una variable de entorno especial que controla el indicador de //**bash**//. Algunos shells se consideran shells de //"inicio de sesión"// y otros son shells //"interactivos"//, y ambos tipos leen diferentes archivos de configuración cuando se inician. Los shells de inicio de sesión leen /etc/profile y ~/.bash_profile cuando se ejecute. Los shell interactivos leen en su ~/.bashrc lugar. Esto tiene algunas ventajas para los usuarios avanzados, pero es una molestia común para muchos usuarios nuevos que desean el mismo entorno cada vez que ejecutan //**bash**// y no importa la diferencia entre inicio de sesión y shells interactivos. Si esto se aplica a usted, simplemente edite su propio archivo ~ /.bashrc e incluya las siguientes líneas. (Para obtener más información sobre los diferentes archivos de configuración utilizados, lea la sección INVOCACIÓN de la página de manual de //**bash**//). | La causa aquí es una variable de entorno especial que controla el indicador de //**bash**//. Algunos shells se consideran shells de //"inicio de sesión"// y otros son shells //"interactivos"//, y ambos tipos leen diferentes archivos de configuración cuando se inician. Los shells de inicio de sesión leen /etc/profile y ~/.bash_profile cuando se ejecutan. Los shell interactivos leen en su lugar ~/.bashrc. Esto tiene algunas ventajas para los usuarios avanzados, pero es una molestia común para muchos usuarios nuevos que desean el mismo entorno cada vez que ejecutan //**bash**// y no importa la diferencia entre inicio de sesión y shells interactivos. Si esto se aplica a usted, simplemente edite su propio archivo ~ /.bashrc e incluya las siguientes líneas. (Para obtener más información sobre los diferentes archivos de configuración utilizados, lea la sección INVOCACIÓN de la página de manual de //**bash**//). |
<code># ~/.bashrc | <code># ~/.bashrc |
. /etc/profile | . /etc/profile |
. ~/.bash_profile</code> | . ~/.bash_profile</code> |
Cuando utilice lo anterior, todos sus shells de inicio de sesión e interactivos tendrán la misma configuración de entorno y se comportarán de manera idéntica. Ahora, cada vez que deseamos personalizar una configuración de shell, solo tenemos que editar ~/.bash_profile los cambios específicos del usuario y /etc/profile la configuración global. Comencemos configurando el prompt. | Cuando utilice lo anterior, todos sus shells de inicio de sesión e interactivos tendrán la misma configuración de entorno y se comportarán de manera idéntica. Ahora, cada vez que deseemos personalizar una configuración de shell, solo tendremos que editar ~/.bash_profile para los cambios específicos del usuario y /etc/profile para la configuración global. Comencemos configurando el prompt. |
| |
//**Los**// mensajes de //**bash**// vienen en todas las formas, colores y tamaños, y cada usuario tiene sus propias preferencias. Personalmente, prefiero mensajes cortos y simples que ocupan un mínimo de espacio, pero muchas veces he visto y usado mensajes de línea múltiple. Un amigo mío incluso incluyó ASCII -art en su mensaje de bash. Para cambiar su aviso, solo necesita cambiar su variable PS1. De forma predeterminada, Slackware intenta configurar su variable PS1 de esta manera: | //**Los**// mensajes de //**bash**// vienen en todas las formas, colores y tamaños, y cada usuario tiene sus propias preferencias. Personalmente, prefiero mensajes cortos y simples que ocupen un mínimo de espacio, pero muchas veces he visto y usado mensajes de línea múltiple. Un amigo mío incluso incluyó ASCII -art en su mensaje de bash. Para cambiar su aviso, solo necesita cambiar su variable PS1. De forma predeterminada, Slackware intenta configurar su variable PS1 de esta manera: |
<code>darkstar:~$ echo $PS1 | <code>darkstar:~$ echo $PS1 |
\u@\h:\w\$ </code> | \u@\h:\w\$ </code> |
Sí, esta pequeña pieza de figuras de aspecto gracioso controla tu indicador de bash. Básicamente, todos los caracteres de la variable PS1 se incluyen en el indicador, a menos que sea un escape por a <key>\</key>, que le dice a //**bash**// que lo interprete. Hay muchas secuencias de escape diferentes y no podemos discutirlas todas, pero las explicaré. El primer "\u" se traduce al nombre de usuario del usuario actual. "\H" es el nombre de host de la máquina a la que está conectado el terminal. "\W" es el directorio de trabajo actual, y "\$" muestra <key>#</key> un <key>$</key> signo o un signo, dependiendo de si el usuario actual es root o no. Una lista completa de todas las secuencias de escape rápido se encuentra en el Página de manual de //**bash**// en la sección PROMPTING. | Sí, esta pequeña pieza de figuras de aspecto gracioso controla su indicador de bash. Básicamente, todos los caracteres de la variable PS1 se incluyen en el indicador, a menos que sea un escape por a <key>\</key>, que le dice a //**bash**// que lo interprete. Hay muchas secuencias de escape diferentes y no podemos discutirlas todas, pero las explicaré. El primer "\u" se traduce al nombre de usuario del usuario actual. "\H" es el nombre de host de la máquina a la que está conectado el terminal. "\W" es el directorio de trabajo actual, y "\$" muestra un signo <key>#</key> o un signo <key>$</key> , dependiendo de si el usuario actual es root o no. Una lista completa de todas las secuencias de escape rápido se encuentra en la página de manual de //**bash**// en la sección PROMPTING. |
| |
Ya que hemos pasado por todo este problema para discutir el indicador predeterminado, pensé que me tomaría un tiempo mostrarle un par de ejemplos y los valores de las variables PS1 necesarios para usarlos. | Ya que hemos pasado por todo este problema para discutir el indicador predeterminado, pensé que me tomaría un tiempo mostrarle un par de ejemplos y los valores de las variables PS1 necesarios para usarlos. |
HOST: \H - JOBS: \j - TTY: \l\n\u@\w:\$</code> | HOST: \H - JOBS: \j - TTY: \l\n\u@\w:\$</code> |
| |
Para obtener más información sobre cómo configurar el mensaje de bash, incluida la información sobre cómo configurar mensajes de colores, consulte /usr/doc/Linux-HOWTOs/Bash-Prompt-HOWTO. Después de leer eso por un corto tiempo, tendrás una idea de cuán poderosas pueden ser tus ordenes de //**bash**//. ¡Una vez incluso tuve un aviso que me proporcionó información meteorológica actualizada, como la temperatura y la presión barométrica! | Para obtener más información sobre cómo configurar el mensaje de bash, incluida la información sobre cómo configurar mensajes de colores, consulte /usr/doc/Linux-HOWTOs/Bash-Prompt-HOWTO. Al poco tiempo de leerlo, tendrá una idea de cuán poderosas pueden ser sus ordenes de //**bash**//. ¡Una vez incluso tuve un aviso que me proporcionó información meteorológica actualizada, como la temperatura y la presión barométrica! |
| |
====== Navegación del capítulo ====== | ====== Navegación del capítulo ====== |