Menos interrupção em menos

11

Costumo transmitir 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 no 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 que ele produza mais saída. Existe alguma maneira de enviar a interrupção para menos, de modo que produce_output continue em execução?

Eu sei que posso usar kill -INT less_process , mas acho que deve haver uma solução melhor.

    
por Ed McMan 09.05.2012 / 15:56

4 respostas

13

Normalmente, todos os processos em um pipeline são executados no mesmo grupo de processos , fazendo com que todos recebam o sinal. Você pode usar setsid foo | less para executar foo em um pgrp diferente.

    
por 09.05.2012 / 17:18
9

Você pode desativar números de linha com o

   -n or --line-numbers
opção

.

produce_output | less -n
    
por 09.05.2012 / 17:02
0

Ao trabalhar com grandes quantidades de resultados, achei muito útil enviar a saída para um arquivo e usar tail -f ou less +F para assistir, por exemplo:

produce_output > out 2>&1 & less +F out

A sintaxe 2>&1 certifica-se de que stdout e stderr vão para out --- remova isso se você quiser apenas que o stdout vá para o arquivo. Desta forma, você pode inspecionar a saída de várias maneiras (mesmo de uma máquina diferente) sem ter que mexer com o programa que produz a saída.

Observe que 2>&1 pode ser bash-específico (não tenho certeza). Certifique-se de ter espaço em disco suficiente para o arquivo de saída: -)

    
por 09.05.2012 / 16:17
0

Você também pode fazer isso:

less +F -f <(produce_output)
    
por 13.05.2017 / 20:06

Tags