Terminal * saída * histórico?

16

Eu 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 pelo histórico de saída do comando também? (além de manter um histsize grande e inclinar-se na tecla pgup)

Eu não posso apenas "reexecutar o comando", como na minha situação particular a fonte dos comandos muda; Eu freqüentemente preciso olhar para trás na saída de uma alteração anterior.

Hacks bem-vindos.

Obrigado!

Editar 2010:

Eu dei 'tee' o crédito; Entre todos os métodos para registrar sua sessão em outro lugar, ela é a 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 realmente o que eu estava procurando, mas eu percebo que tal coisa realmente não existe.

A aproximação mais próxima que posso imaginar é usar algo como screen (byobu / tmux) que registra no arquivo e gravar (e keybind) um comando personalizado para procurar / página através desse arquivo de log (pense em less paging por prompt, em vez de tela). Obrigado a todos.

Editar 2012:

A resposta de Dustin Kirkland é claramente melhor, pelo menos em geral; o buffer de rolagem do terminal é a maneira menos intrusiva de navegar pelo histórico de saída do comando. Byobu parece ter um grande número padrão de linhas históricas salvas (10K; tmux tem 2K, tela GNU 100), e permite buscas em regex (um olhar superficial indica que a tela GNU não tem busca de rolagem, e tmux tem apenas busca por texto plano).

    
por mikewaters 09.09.2010 / 19:54

6 respostas

3

Você mencionou o uso de byobu ...

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

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

    
por 02.03.2012 / 05:09
10

Você pode usar tee para enviar a saída do seu comando para um arquivo e para o terminal ao mesmo tempo.

    
por 09.09.2010 / 19:57
7

Você pode usar script para registrar sua sessão de terminal em um arquivo. Se você sempre quiser que isso aconteça, adicione um comando script adequado ao seu .login .

$ man script

    
por 09.09.2010 / 19:59
4

use screen -L

depois de sair da sessão do shell ( exit command) você obtém um arquivo de log no mesmo diretório que iniciou screen

você pode ver a saída com more ou less -R

    
por 06.06.2013 / 21:03
4

screen pode ser definido para registrar a saída.

Uma maneira de iniciá-lo, dentro de uma sessão screen em execução, é pressionar Ctrl - a , então : , e então entrar 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.
    
por 09.09.2010 / 21:41
2
O

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

    
por 09.09.2010 / 19:59