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


19

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

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

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

Благодарность!

Изменить 2010:

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

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

Изменить 2012:

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

Ответы:


4

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

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

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


Где хранится история прокрутки, и есть ли способ сохранить ее между сеансами? Т.е.: открыть терминал с помощью Byobu, выполнить несколько команд, вызвать exit, закрыть терминал, открыть новый терминал с помощью Byobu и продолжить предыдущий сеанс.
Даррел Холт

11

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


8

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

$ man script


5

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

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

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


5

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.


3

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.