Сохранять весь вывод сценария в файл (из самого сценария) [дублировать]

Вы используете стандартное перенаправление вывода , а не , добавляя перенаправленный вывод Если вы пытаетесь добавить вывод в исходный файл, я так не думаю .

Из man bash

Перенаправление вывода Если файл не существует, он создается; если он существует, он обрезается до нулевого размера.

Добавление перенаправленного вывода Перенаправление вывода таким образом приводит к открытию файла, имя которого является результатом расширения слова, для добавления в файловый дескриптор n или стандартный вывод (описание файла - tor 1) если n не указано. Если файл не существует, он создается.

Итак, поскольку вы указываете перенаправить вывод в тот же файл, он будет усечен и создан с ожидаемым выводом

Я предлагаю использовать sed с перенаправление

$ tail -15 ft | sed -e 's|a|A|g' > sed_output

5
16.02.2018, 20:08
3 ответа

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
2
27.01.2020, 20:39

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.

1
27.01.2020, 20:39

Siempre puede invocar scriptdentro 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
4
27.01.2020, 20:39

Теги

Похожие вопросы