Para escribir un archivo se utiliza (>). Hay que tener mucho cuidado de no borrar un archivo sobreescribiéndolo. Cuando se utilizan redirecciones, debido a su utilidad en los scripts, no se realizan confirmaciones. Si el archivo a escribir existe y posee información valiosa, aplicar > archivo-importante lo sobreescribe con el contenido del flujo.
En cambio el operador (») realiza un agregado2.12 de los datos en el flujo.
No hay nada mejor que un ejemplo esclarificador:
$ escribe-en-salida-estandar > archivo.txt
El (falso) comando escribe-en-salida-estándar justamente hace eso, escribe unas cuantas cosas en salida estándar. Puede ser un ls, un cal o cualquier comando antes visto, como también una combinación de comandos por tuberías.
En este punto el contenido de archivo.txt es lo mismo que saldría en pantalla. Si ejecutamos otro comando redireccionado a archivo.txt, este pierde su contenido y el resultante de la operación pasa a estar en el archivo.
Cuando se necesita tener una lista de acontecimientos, no se quiere que un acontecimiento nuevo borre a todos los anteriores. Para lograr esto agregamos en vez de sobreescribir.
$ echo Este es el acontecimiento Nro. 1 > bitacora.log $ echo Este es el segundo acontecimiento >> bitacora.log
Va a escribir dos líneas en el archivo bitacora.log sin eliminar nada.
Ejemplo Si queremos combinar el ejemplo de las tuberías en la sección 2.5.2 con lo aprendido recientemente podríamos tipear:
$ cat archivo.txt | sort | sacar-repetidas | diccionario >> glosario.txt