Как автоматически сохранить вывод команды терминала в файл [дубликат]

Есть ли способ сохранить вывод команды терминала в файл без необходимости каждый раз писать команду ' | tee /abc.txt'?

1
задан 22 May 2014 в 22:36

3 ответа

Да.

Использовать 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 после каждой из Ваших команд для наблюдения их вывода на оболочке, а также сохранении его в файловой системе.
1
ответ дан 22 May 2014 в 22:36

Одна опция состоит в том, чтобы использовать 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
1
ответ дан 22 May 2014 в 22:36

Нет.

Это имеет отношение, как сокеты, названные "стандартный вход" и работа "стандартного вывода", и с полной философией набора инструментальных средств Unix/Linux ", Делают Одну Вещь и Делают Это Хорошо". Можно хотеть занять минуту или два для понимания http://www.tldp.org/LDP/abs/html/io-redirection.html "Перенаправление IO в Bash"

Весь тот сказанный, Вы могли записать сценарий для обертывания команд с тем перенаправлением, но это все еще не сохраняет Вас очень много нажатий клавиш.

0
ответ дан 22 May 2014 в 22:36

Другие вопросы по тегам:

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