Respuestas:
Use en >>
lugar de >
cuando dirige la salida a un archivo:
your_command >> file_to_append_to
Si file_to_append_to
no existe, se creará.
Ejemplo:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
Para append
usar un archivo >>
echo "hello world" >> read.txt
cat read.txt
echo "hello siva" >> read.txt
cat read.txt
entonces la salida debería ser
hello world # from 1st echo command
hello world # from 2nd echo command
hello siva
Para overwrite
usar un archivo >
echo "hello tom" > read.txt
cat read.txt
entonces la salida es
hello tom
Puede usar el operador >>. Esto agregará datos de un comando al final de un archivo de texto.
Para probar esto intente ejecutar:
echo "Hi this is a test" >> textfile.txt
Haga esto un par de veces y luego ejecute:
cat textfile.txt
Verá que su texto se ha agregado varias veces al archivo textfile.txt.
Use command >> file_to_append_to
para agregar a un archivo.
Por ejemplo echo "Hello" >> testFile.txt
PRECAUCIÓN: si solo usa >
uno, sobrescribirá el contenido del archivo. Para asegurarse de que eso nunca suceda, puede agregar set -o noclobber
a su .bashrc
.
Esto garantiza que si accidentalmente escribe command > file_to_append_to
en un archivo existente, le alertará de que el archivo ya existe. Mensaje de error de muestra:file exists: testFile.txt
Por lo tanto, cuando lo use >
solo le permitirá crear un nuevo archivo, no sobrescribir un archivo existente.
Use el >>
operador para agregar texto a un archivo.
El uso de tee con la opción -a (--append) le permite agregar múltiples archivos a la vez y también usar sudo (muy útil al agregar archivos protegidos). Además de eso, es interesante si necesita usar otros shells además de bash, ya que no todos los shells admiten los operadores> y >>
echo "hello world" | sudo tee -a output.txt
Este hilo tiene buenas respuestas sobre tee
para toda la pregunta:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
esto agregará 720 líneas (30 * 24) a o.txt y luego cambiará el nombre del archivo según la fecha actual.
Ejecute lo anterior con el cron cada hora, o
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
Usaría printf en lugar de echo porque es más confiable y procesa el formateo como una nueva línea \n
correctamente.
Este ejemplo produce una salida similar a echo en ejemplos anteriores:
printf "hello world" >> read.txt
cat read.txt
hello world
Sin embargo, si reemplazara printf con echo en este ejemplo, echo trataría \ n como una cadena, ignorando así la intención
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
Por ejemplo, su archivo contiene:
1. mangesh@001:~$ cat output.txt
1
2
EOF
si desea agregar al final del archivo, entonces ----> recuerde los espacios entre 'texto' >> 'nombre de archivo'
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
Y para sobrescribir el contenido del archivo:
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write
cat
es ... simplemente completamente loco. (Está vacío porque acaba de redirigir la salida estándar a un archivo.)
echo
elimina las nuevas líneas de la cadena. ¿Cómo se agrega a un archivo una cadena que contiene nuevas líneas?