Terminal * saída * histórico?

19

Faço uso extensivo das funções para navegar pelo histórico de comandos no meu terminal; Gostaria de saber se existe alguma maneira de navegar no histórico de saída do comando também? (além de manter um tamanho grande e encostar na tecla pgup)

Não posso simplesmente 'executar novamente o comando', pois na minha situação particular a fonte dos comandos muda; Frequentemente, preciso olhar para os resultados de uma alteração anterior.

Hacks bem-vindos.

Obrigado!

Editar 2010:

Eu dei crédito a 'tee'; dentre todos os métodos para registrar sua sessão em outro lugar, é o mais amplamente aplicável (isto é, faz parte do gnu coreutils e não requer um shell ou utilitário específico para funcionar). Não era exatamente o que eu estava procurando, mas percebo que isso realmente não existe.

A aproximação mais próxima que consigo pensar é usar algo como screen(byobu / tmux) que registra em arquivo e escreve (e keybind) um comando personalizado para paginar / pesquisar nesse arquivo de log (pense em lesspaginar por prompt e não por tela). Obrigado a todos.

Editar 2012:

A resposta de @Dustin Kirkland é claramente a melhor, pelo menos em geral; o buffer de rolagem do terminal é a maneira menos invasiva de navegar no histórico de saída do comando. O Byobu parece ter um grande número padrão de linhas de histórico salvas (10K; tmux tem 2K, tela 100 do GNU) e permite pesquisas de expressões regulares (uma aparência superficial indica que a tela do GNU não tem pesquisa de rolagem e o tmux tem apenas pesquisa de texto sem formatação).

mikewaters
fonte

Respostas:

4

Você menciona usar byobu ...

Essa é certamente uma maneira de fazer isso. O Byobu armazena 10 mil linhas do histórico de rolagem por janela ou por divisão (painel).

Você pode inserir a rolagem facilmente pressionando Alt- PageUp, Alt- PageDownou F7. Quando estiver no modo de rolagem, você pode procurar para frente e para trás usando comandos do tipo vi. Usar/regex para pesquisar para frente e ?regexpara trás.

Dustin Kirkland
fonte
Onde o histórico de rolagem é armazenado e existe uma maneira de fazê-lo persistir entre as sessões? Ou seja: Abra o terminal com o Byobu, execute alguns comandos, chame exit, feche o terminal, abra um novo terminal com o Byobu e ainda tenha a sessão anterior.
Darrel Holt
11

Você pode usar teepara enviar sua saída de comando para um arquivo e para o terminal ao mesmo tempo.

Carl Norum
fonte
8

Você pode usar scriptpara registrar sua sessão do terminal em um arquivo. Se você sempre quer que isso aconteça, adicione um scriptcomando adequado ao seu .login.

$ man script

Paul R
fonte
5

usar screen -L

depois de sair da sessão do shell ( exitcomando), você obtém um arquivo de log no mesmo diretório que você iniciouscreen

então você pode ver a saída com moreouless -R

wieczorek1990
fonte
5

screen pode ser configurado para registrar a saída.

Uma maneira de iniciá-lo, dentro de um correndo screensessão, é a imprensa Ctrl- ae, em seguida :, em seguida, digite log.

De 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.
Pausado até novo aviso.
fonte
@SQB: Eu expandi minha resposta.
Pausado até novo aviso.
3

O bash mantém o histórico do que você fez, mas não a saída dos comandos. Pode ser enorme e frequentemente não é útil.

Jay
fonte