17

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

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

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

Спасибо!

Изменить 2010:

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

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

Изменить 2012:

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

6 ответов6

10

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

7

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

$ man script

4

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.
4

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

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

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

3

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

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

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

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .