Все команды, которые я видел до сих пор, выглядят как command > file
или command >> file
, которые выводят результат в указанный файл. Например, когда я печатаю openssl version > lab4.txt
, все, что я вижу в текстовом файле, это OpenSSL 1.0.1e-fips 11 Feb 2013
.
Что если я захочу вывести и набранную мной команду, и результат, который был возвращен один под другим, как этот?
linux2[20]% openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
Спасибо за помощь
Оператор перенаправления command > file
перенаправит STDOUT команды или STDERR команды, если используется как command 2> file
или оба, если используется как &>
в ударе или в любой оболочке портативным устройством command > file 2>&1
путь. Я не знаю ни о каком прямом методе использовать перенаправление, которое может достигнуть того, в чем Вы нуждаетесь.
Хотя это - возможное использование script
программа. Это в основном сохранит все распечатанное на терминале в этом script
сессия.
От man script
:
script makes a typescript of everything printed on your terminal.
It is useful for students who need a hardcopy record of an
interactive session as proof of an assignment, as the typescript file
can be printed out later with lpr(1).
Можно запустить a script
сессия, просто введя script
в терминале все последующие команды и их выводы будут все сохранены в названном файле typescript
в текущем каталоге. Можно сохранить результат в другой файл также, только начав script
как:
script output.txt
К выходу из системы screen
сессия (прекращают сохранять содержание), просто введите exit
.
Вот пример:
$ script output.txt
Script started, file is output.txt
$ ls
output.txt testfile.txt foo.txt
$ exit
exit
Script done, file is output.txt
Теперь, если я считал файл:
$ cat output.txt
Script started on Mon 20 Apr 2015 08:00:14 AM BDT
$ ls
output.txt testfile.txt foo.txt
$ exit
exit
Script done on Mon 20 Apr 2015 08:00:21 AM BDT
script
также имеет много опций, например, работающий бесшумно -q
(--quiet
) не показывая/сохраняя сообщения программы, это может также выполнить определенную команду -c
(--command
) вместо сессии, это также имеет много других опций. Проверить man script
получить больше идеи.
Необходимо было бы создать сценарий со следующим:
echo 'command -params/r' > file.lst
command -params >> file.lst