Терминал * вывод * история?

32508
mikewaters

Я широко использую функции для навигации по истории команд в моем терминале; Интересно, есть ли способ навигации по истории вывода команд? (помимо сохранения большого гистосайта и опоры на ключ pgup)

Я не могу просто «повторить команду», так как в моей конкретной ситуации источник команд меняется; Мне часто нужно оглядываться на результат предыдущего изменения.

Хаки приветствуются.

Спасибо!

Изменить 2010:

Я дал «тройник» кредит; Среди всех методов для записи вашего сеанса в другом месте, он наиболее применим (т.е. он является частью gnu coreutils и не требует специальной оболочки или утилиты для работы). Это было не совсем то, что я искал, но я понимаю, что такой вещи на самом деле не существует.

Самое близкое приближение, которое я могу придумать, - это использовать что-то вроде screen(byobu / tmux), которое ведет журнал в файл, и написать (и связать ключи) пользовательскую команду для просмотра / поиска по этому файлу журнала (подумайте о поиске lessпо подсказке, а не по экрану). Спасибо всем.

Изменить 2012:

Ответ @Dustin Kirkland явно лучший, по крайней мере, в целом; буфер прокрутки терминала является наименее навязчивым способом навигации по истории вывода команд. По-видимому, в Byobu сохранено большое количество сохраненных по умолчанию строк истории (10 КБ; tmux имеет 2 КБ, экран GNU 100), и он позволяет выполнять поиск по регулярному выражению (беглый взгляд указывает на то, что на экране GNU отсутствует поиск с прокруткой, а в tmux есть только поиск в виде открытого текста).

16

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

10
Carl Norum

Вы можете использовать, teeчтобы отправить вывод вашей команды в файл и на терминал одновременно.

7
Paul R

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

$ man script

4
Dennis Williamson

screen может быть установлен для вывода журнала.

Один из способов запустить его во время текущей screenсессии - нажать Ctrl- a, затем :, затем ввести log.

От man screen:

log [on|off]  Start/stop writing output of the current window to a file "screenlog.n" in the  window's default directory, where n is the number of the current window. This filename can be changed with the `logfile' command. If no parameter is given, the state of logging is toggled. The session log is appended to the previous contents of the file if it already exists. The current contents and the contents of the scrollback history are not included in the session log. Default is `off'.  logfile filename logfile flush secs  Defines the name the log files will get. The default is "screenlog.%n". The  second form changes the number of seconds screen will wait before flushing the logfile buffer to the file-system. The default value is 10 seconds. 
@SQB: я расширил свой ответ. Dennis Williamson 8 лет назад 0
4
wieczorek1990

использование screen -L

после выхода из сеанса оболочки ( exitкоманды) вы получаете лог-файл в том же каталоге, что вы началиscreen

затем вы можете просмотреть вывод с помощью moreилиless -R

3
Dustin Kirkland

Вы упоминаете об использовании byobu ...

Это, безусловно, один из способов сделать это. Byobu хранит 10K строк истории прокрутки для каждого окна или для разделения (панели).

Вы можете легко ввести прокрутку, нажав Alt- PageUp, Alt- PageDownили F7. Перейдя в режим прокрутки, вы можете осуществлять поиск вперед и назад с помощью команд типа vi. Используйте /regexдля поиска вперед и ?regexпоиска назад.

2
Jay

bash хранит историю того, что вы сделали, но не вывод команд. Это потенциально может быть огромным и часто бесполезным.