Streams / Flujos de datos
Stdin la entrada estándar por defecto espera una entrada por teclado, en caso de que especifiquemos un archivo la entrada sera el archivo indicado.
$ grep [0-9] numeros.txt
1
2
5
6
$ grep [0-9]
Si no indicamos un archivo esperara una entrad por teclado como si fuera un input
en un while
, el proceso terminará cuando pulsemos:
- ctrl + d = Finalizar el proceso.
- ctrl + c = Matar el proceso.
Cambiar comportamiento:
Entrada:
- Argumentos.
- < NOMBRE_FICHERO
Salida:
- > NOMBRE_FICHERO : Crea fichero con la salida, sobreescribe el fichero.
- >> NOMBRE_FICHERO : Añade a un fichero la salida.
Errores:
- 2> NOMBRE_FICHERO : Redirige a un fichero la salida.
- 2>&1 NOMBRE_FICHERO : Redirige a la salida estándar.
Ejemplos.
Entradas:
$ tr [a-z] [A-Z] < NOMBRE_ARCHIVO
AAA
BBB
CCC
Modifica el archivo que indiquemos y lo muestra por pantalla.
Salidas:
$ sort NOMBRE_ARCHIVO > FICHERO_CON_SORT
$ cat FICHERO_CON_SORT
Antonio
Carlos
Francisco
Willy
Nos ha ordenado un fichero existente y guardado el contenido en un archivo nuevo. Sobreescribe el archivo.
Si lo que queremos en añadir ...
$ sort NOMBRE_ARCHIVO > FICHERO_CON_SORT
$ cat FICHERO_CON_SORT
Antonio
Carlos
Francisco
Willy
Antonio
Carlos
Francisco
Willy
Errores:
Para redirigir la salida de errores.
Si queremos por ejemplo mostrar el error por pantalla y almacenar el resultado en un archivo:
$ ls . /noexiste > ls.txt
ls: cannot access /noexiste: No such file or directory
$cat ls.txt
.:
Archivo.txt
OtroArchivo.txt
ls.txt
Para redirigir los errore hacia un archivo ...
$ ls . /noexiste > ls.txt 2> ls.txt.errores
$cat ls.txt.errores
ls: cannot access /noexiste: No such file or directory
$cat ls.txt
.:
Archivo.txt
OtroArchivo.txt
ls.txt
Tendremos un archivo con los erroresls.txt.errores
y otrols.txt
con el resultado correcto.
Para unir todo en un fichero, tenemos que redirigir la salida de errores hcai la salida estandar. recordar la salida estándar es 1 y la salida de errores es 2.
$ ls . /noexiste > ls.txt 2>&1
$cat ls.txt
ls: cannot access /noexiste: No such file or directory
.:
Archivo.txt
OtroArchivo.txt
ls.txt