Есть ли способ сохранить вывод команды терминала в файл без необходимости каждый раз писать команду ' | tee /abc.txt'?
Да.
Использовать tee
на Вашем терминале.
$ bash | tee /abc.txt
bash
запустит другую оболочку в той, которую Вы в настоящее время используете. Будет похоже, что ничего не произошло, но, при попытке закрыть терминал, то Вам предложат с чем-то как:
There is still a process running in this terminal. Closing the terminal will kill it.
Тот процесс, это bash
. Это считает Вашу команду как Ваша другая оболочка без любой проблемы, потому что Ваша первая оболочка уже, по всей вероятности, работает bash
также. Это - просто пример. Существуют другие оболочки, и можно узнать о них здесь: [Рецензент, вставьте ссылку 1 здесь]
Когда Вы будете сделаны, можно хотеть ввести exit
закрыть его.
|
символ, используемый для представления каналов. M. Jackson объясняет, что они здесь: http://www.dsj.net/compedge/shellbasics1.html
Каналы. Философия UNIX призывает к использованию маленьких все же высоко сфокусированных программ, которые могут использоваться вместе для выполнения сложных задач. Так, изучение, как представить в виде строки вместе много маленьких команд на командной строке, является внутренней частью того, чтобы быть довольным Bash. Чтобы сделать это, мы направляем стандартный вывод одной программы в стандартный вход другой программы, но мы не используем редиректоры, мы используем оператор канала, '' | ''. В UNIX, процессы, соединенные каналами, выполненными вместе динамично как потоки данных между ними.
tee
, ради полноты: [Рецензент, вставьте ссылку 2 здесь] [чтения] от стандартного входа и записи к стандартному выводу и файлам
bash
(более точно вывод команд, выполненных в нем), вручат tee
как его вход. Эффективно устраняя необходимость использования | tee /abc.txt
после каждой из Ваших команд для наблюдения их вывода на оболочке, а также сохранении его в файловой системе. Одна опция состоит в том, чтобы использовать script
программа
NAME
script — make typescript of terminal session
SYNOPSIS
script [-a] [-c command] [-e] [-f] [-q] [-t[=file]] [-V] [-h] [file]
DESCRIPTION
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).
Отметьте однако это script
сохраняет все в терминале (а не просто управляйте выводом) - включая последовательности цвета ANSI, которые могут мешать извлекать простой текст из получающегося файла в случае цветных терминалов.
Следующее является просто идеей, могут быть глюки, о которых я не знаю связанный с использованием его
Подобный предложению @MomentumMori порождения a tee
- d колотят подоболочку, если Вы хотите стать необычными с перенаправлениями, Вы могли бы, вероятно, сделать что-то как
exec 3>&1
сохранить текущий дескриптор файла стандартного вывода, затем
exec 1> >(tee -a outfile)
С этого момента стандартный вывод перенаправляется к a tee
подпроцесс, который добавляет все к outfile
. Поскольку мы не перенаправили поток вывода подпроцесса, копия вывода команды все еще появляется в терминале также.
После того как Вы сделаны с командами, чьи производит Вас, хотят получить, можно инвертировать перенаправление и закрыть временный дескриптор файла
exec 1>&3 3>&-
после которого можно заглянуть outfile
видеть выводы команд
cat outfile
Нет.
Это имеет отношение, как сокеты, названные "стандартный вход" и работа "стандартного вывода", и с полной философией набора инструментальных средств Unix/Linux ", Делают Одну Вещь и Делают Это Хорошо". Можно хотеть занять минуту или два для понимания http://www.tldp.org/LDP/abs/html/io-redirection.html "Перенаправление IO в Bash"
Весь тот сказанный, Вы могли записать сценарий для обертывания команд с тем перенаправлением, но это все еще не сохраняет Вас очень много нажатий клавиш.