Что делать, если я хочу вывести каждую команду из sh-файла в файл журнала, а также на консоль?
скажем, сейчас у меня есть ниже, я хочу однострочную команду (вродеПечать в файл,который выведет все выходные данные команд в файл ) который может вывести все выходные данные своих предыдущих команд /echos в файл и консоль #sh
SH
**some command here, so it will print all below echos to file and console**
echo start
echo "My first name is $1"
echo "My surname is $2"
echo "Total number of arguments is $#"
echo end
решение1
Есть два подхода. Другие упоминали tee. Второй подход — это команда "script" и ее варианты, которые записывают все, что отправляется в stdout процессов. Если вы хотите перенаправление в скрипте, то используйте
#!/bin/bash
{
echo start
echo "My first name is $1"
echo "My surname is $2"
echo "Total number of arguments is $#"
echo end
} | tee logfile
решение2
попробуй это...
#!/bin/bash
log_file=/tmp/log.txt
function log(){
echo "$@" | tee -a "${log_file}"
}
log "test"
log "hello"
log "testing...."
решение3
Вы можете использовать tee
команду для перенаправления вывода вашего скрипта в стандартный вывод и файл.
Следующая команда выведет содержимое файла f1.txt в файл f2.txt, а также на стандартный вывод (консоль).
cat f1.txt | tee f2.txt
Для получения дополнительной информации о проверке тройникатройник manpage
решение4
Есть script
программа, которая записывает сеанс терминала, т. е. регистрирует все, что отображается на терминале.