Costumo canalizar a saída do programa para menos, por exemplo
produce_output | less
Isso funciona muito bem, até produce_output
produzir grandes quantidades de saída. Se eu procurar algum texto que esteja dentro do arquivo, menos relatórios
Calculating line numbers... (interrupt to abort)
Se eu interromper com Control + C, ele também mata produce_output
, o que impede de produzir mais saída. Existe alguma maneira de enviar a interrupção para menos, para que produce_output
continue funcionando?
Eu sei que poderia usar kill -INT less_process
, mas acho que deve haver uma solução melhor.
kill
.select
para aguardar a entrada de um arquivo / canal e terminal ao mesmo tempo.F
(seguir). Tubos e ttys são pesquisáveis da mesma maneira.Você pode desativar os números de linha com o
opção.
fonte
Ao trabalhar com grandes quantidades de saída, achei muito útil enviar a saída para um arquivo e usar
tail -f
ouless +F
assistir, por exemplo:A
2>&1
sintaxe garante que stdout e stderr vão paraout
--- remova-o se você quiser que o stdout vá para o arquivo. Dessa forma, você pode inspecionar a saída de várias maneiras (mesmo de uma máquina diferente) sem precisar mexer no programa que produz a saída.Observe que
2>&1
pode ser específico do bash (não tenho certeza). Verifique se você possui espaço em disco suficiente para o arquivo de saída :-)fonte
2>&1
é POSIX, nu>&
é um basismo.less +F
no meu exemplo; Acabei de atualizar minha resposta.less +F
(poisless +F
processa os dados à medida que são gerados). O exemplo que eu dei não tem o mesmo problema que o post originalmente: ctrl + c não será interrompidoprocess_output
. Se alguém não se importa com a funcionalidade 'follow', pode executarproduce_output > out 2>&1
, entãoless out
. Um problemaproduce_output | less
é que, se algo quebrar o tubo (por exemplo, pressionar acidentalmente 'q'less
), eleproduce_output
morrerá (sem manipulação especial do SIGPIPE).Você também pode fazer isso:
fonte