Zsh или Bash: все команды выводятся через пейджер как приложение автоматически?

432
Brad Parks

Есть ли способ в bash или zsh автоматически передать весь вывод из любых команд, которые я запускаю через другую программу?

Например, если я запустил эту команду

$ cat /tmp/it 

Я бы хотел, чтобы он работал так, как я написал так:

$ cat /tmp/it | tee /tmp/cmdoutput 

где | tee /tmp/cmdoutputчасть может быть любой командой вообще. Мои варианты использования - для раскрашивания и для сохранения вывода для команд, которые я запускаю, чтобы я мог редактировать их в vim или искать их в vim. Я делаю это уже вручную, но хочу знать, есть ли способ сделать это автоматически, и я ищу общее решение!

1
Вам нужна команда, которую вы ввели в свой выходной файл? oliv 6 лет назад 0
Я в основном заинтересован в том, чтобы любая команда, которую я запускаю, несмотря ни на что, сохранялась где-то во временном файле - так что, если я хочу просмотреть вывод любой команды, которую я выполнил в любой момент, например, сегодня, я мог бы посмотреть во временную папку там были мои команды с меткой времени и выводом там же. Вид скользящего журнала о том, что я делаю в командной строке. Но идея колоризации - это еще одна вещь, для которой мне также хотелось бы использовать этот процесс, без необходимости вручную передавать или псевдонимы определенных команд. Brad Parks 6 лет назад 0
Я советую посмотреть на [Auditd] (https://linux.die.net/man/8/auditd). В противном случае необработанный вывод команд интерактивного сеанса можно просто выполнить с помощью `bash | tee / tmp / cmdoutput` oliv 6 лет назад 1
Другой альтернативой может быть [script] (https://linux.die.net/man/1/script). mpy 6 лет назад 1
Как насчет добавления псевдонима для команд, которые вы чаще всего используете? Fanatique 6 лет назад 0

1 ответ на вопрос

1
harrymc

Используйте команду script :

Сценарий делает машинопись всего, что отображается на вашем терминале. Это полезно для студентов, которым нужна бумажная запись интерактивного сеанса в качестве доказательства задания, поскольку файл машинописного текста можно распечатать позже с помощью lpr (1).

Если указан файл аргумента, скрипт сохраняет диалог в этом файле. Если имя файла не указано, диалог сохраняется в машинописном тексте.

Когда вы будете готовы начать запись файла журнала, введите:

script /tmp/cmdoutput 

Теперь, пока вы не остановите скрипт, все входные и выходные данные в Терминале будут храниться в cmdoutput. Когда вы закончите, просто введите:

exit 

Источник: Как мне зарегистрировать весь ввод и вывод в терминальной сессии?

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