Вы используете стандартное перенаправление вывода , а не , добавляя перенаправленный вывод Если вы пытаетесь добавить вывод в исходный файл, я так не думаю .
Из man bash
Перенаправление вывода Если файл не существует, он создается; если он существует, он обрезается до нулевого размера.
Добавление перенаправленного вывода Перенаправление вывода таким образом приводит к открытию файла, имя которого является результатом расширения слова, для добавления в файловый дескриптор n или стандартный вывод (описание файла - tor 1) если n не указано. Если файл не существует, он создается.
Итак, поскольку вы указываете перенаправить вывод в тот же файл, он будет усечен и создан с ожидаемым выводом
Я предлагаю использовать sed
с перенаправление
$ tail -15 ft | sed -e 's|a|A|g' > sed_output
Quiere usar tee .
Ejemplo:
echo "Hello World" | tee out.txt
Esto crea un archivo out.txt con la salida del comando y lo imprime en la pantalla. Use "tee -un nombre de archivo" si desea agregarlo al archivo.
echo "Hello" | tee -a out.txt
echo "World" | tee -a out.txt
out.txt tendrá dos líneas Hola y Mundo (sin -un solo tendría mundo)
Si desea guardar el script completo y generar el script completo:
./script.sh | tee output.txt
Un método que encontré para capturar todos los resultados de cualquier sesión es iniciar una nueva sesión de bash y acceder a un archivo de registro. es realmente útil para rastrear más que solo un script.
bash | tee ~/bash.log #this will save standard output until the bash session is ended bash | tee ~/bash.log 2>&1 #this will save all output including errors until the bash session is ended
o simplemente puede ver el guión en sí mismo
./myscript.sh | tee./myscript.log #this will log only the output of the script.
Siempre puede invocar script
dentro de un script para registrar todo.
En cuanto a imprimir y registrar todo al mismo tiempo en un script bash paralog.txt
:
#!/bin/bash
if [ -z "$SCRIPT" ]
then
/usr/bin/script log.txt /bin/bash -c "$0 $*"
exit 0
fi
echo teste
Ver el registrolog.txt
:
$./a.sh
Script started, output file is log.txt
teste
Script done, output file is log.txt
$ cat log.txt
Script started on Fri Feb 16 17:57:26 2018
command: /bin/bash -c./a.sh
teste
Script done on Fri Feb 16 17:57:26 2018