Flujos estándar en Bash
- Flujos estándar
- Entrada estándar
- Entrada estándar usando el teclado
- Entrada estándar usando archivos
- Entrada estándar de redirección
- Entrada estándar de tubería
- Salida estándar
- Salida estándar a pantalla
- Salida estándar redirigida a archivo
- Salida estándar a través de una tubería
- Error estándar
- Error estándar redirigido al archivo
- Redirigir toda la salida al archivo
Este tutorial explica los flujos estándar y la redirección de salida y entrada hacia y desde un archivo.
Flujos estándar
En Linux, hay tres flujos estándar; entrada estándar (stdin
), salida estándar (stdout
), y error estándar (stderr
). Cada flujo está representado por un descriptor de archivo. La entrada estándar se representa con un 0
, la salida estándar con un 1
y el error estándar con un 2
.
Entrada estándar
La entrada estándar son los datos que se pasan a un programa. Por lo general, es escribiendo en el teclado. También pueden ser datos que se han canalizado o redirigido al programa. La entrada estándar utiliza EOF (fin de archivo) para indicar el final de los datos de entrada.
Entrada estándar usando el teclado
Usaremos el comando cat
para demostrar la entrada estándar usando datos de entrada de la palabra clave. El comando cat
toma la entrada y la imprime en la pantalla.
Abra la terminal de Linux y escriba cat
, y presione enter. Ahora puede escribir cualquier entrada, y una vez que presiona enter, el comando cat
muestra la entrada en la terminal. El comando cat
se ejecuta en bucle; para que deje de recibir más entradas, presione CTRL+D. Actúa como una señal para indicar el EOF.
Entrada estándar usando archivos
Los archivos también pueden proporcionar entrada a un programa. Usaremos el comando cat
para demostrar que un archivo se puede usar como entrada estándar.
El comando cat
toma el nombre del archivo como argumento y muestra el contenido del archivo en la terminal. En la imagen de abajo, el comando cat
toma el archivo, output.txt
, y muestra su contenido en la terminal.
Entrada estándar de redirección
La redirección de entrada estándar utiliza el operador de redirección de entrada estándar, <
. La redirección de entrada utiliza la notación command < filename
. Esto significa que la entrada para el comando proviene del contenido dentro del nombre de archivo especificado.
En la imagen a continuación, los contenidos de output.txt
se pasan al comando cat
que los imprime en la terminal.
Entrada estándar de tubería
Un operador de canalización se utiliza para pasar la salida de un comando como entrada a otro comando. El operador de tubería es una barra vertical, |
.
A continuación, el comando head
obtiene las primeras 10 líneas del archivo, output.txt
, y las canaliza al comando cat
como entrada estándar. El comando cat
lo muestra como salida a la terminal.
Salida estándar
La salida estándar muestra datos generados por un programa. Estos datos se imprimen en el terminal si no se redireccionan o canalizan.
Salida estándar a pantalla
Se puede usar casi cualquier comando de Linux para demostrar la salida estándar. Usaremos el comando head
para demostrar esto. El comando head
toma un nombre de archivo como argumento e imprime solo las primeras 10 líneas del archivo.
Salida estándar redirigida a archivo
La redirección de salida estándar utiliza el operador de redirección de salida estándar, >
. La redirección de salida utiliza la notación command > nombre de archivo
. Significa que la salida del comando debe escribirse en el nombre de archivo especificado.
La notación command >> nombre de archivo
significa agregar la salida del comando al archivo en lugar de sobrescribir el archivo existente. El >>
se denomina operador de redirección de adición.
Usamos el operador de redirección de salida para redirigir la salida del comando ls
al archivo output.txt
. El comando cat
se usa para mostrar el contenido del archivo pasado como argumento.
Salida estándar a través de una tubería
Un operador de canalización se utiliza para pasar la salida de un comando a otro comando. El operador de tubería es una barra vertical, |
.
Aquí, la salida del comando ls
se canaliza al comando head
. El comando head
solo muestra (salida estándar) las primeras 5 líneas al terminal desde la entrada que le fue canalizada.
Error estándar
El error estándar es similar a la salida estándar excepto que se usa para mensajes de error de un programa.
Usaremos el comando ls
para demostrar el error estándar. El comando ls
se usa para mostrar el contenido dentro de una carpeta. Pasaremos un nombre de carpeta que no existe como argumento al comando ls
, y mostrará un mensaje de error usando el error estándar.
Error estándar redirigido al archivo
Usamos el operador de redirección de salida estándar para redirigir el error estándar a un archivo. Sin embargo, tenemos que especificar que nos gustaría redirigir el error estándar agregando 2
al operador de redirección de salida, 2>
como descriptor de archivo.
Redirijamos ahora el error estándar del comando ls
a un archivo. El 2>
especifica que solo los errores generados por el comando ls
deben redirigirse al archivo errors_file.txt
.
Usemos el comando cat
para mostrar el contenido de errors_file.txt
. A continuación, vemos que el archivo contiene el mensaje de error del comando ls
.
Redirigir toda la salida al archivo
Para redirigir tanto la salida estándar como el error estándar al mismo archivo, use la siguiente notación,
command > archivo 2>&1
. Redirige ambas secuencias del comando al archivo especificado.
En la imagen a continuación, tanto la salida estándar como el error estándar del comando ls
se redireccionan al mismo archivo, output.txt
.