Echoando a saída para o arquivo ao vê-lo no console no mesmo tempo [duplicado]

2

Então eu echo saída dos meus programas correu no terminal por command 2>&1 >> /path/toFile.txt

Cria algumas limitações que eu quero superar:

  1. Ele "congela" e não fornece saída no terminal - apenas a maneira de ver a saída real é abrir o arquivo de saída
  2. Abrir o arquivo de saída não está dando resultados ao vivo. Dá resultados a partir do momento de abrir esse arquivo

Como fazer o eco da saída para um arquivo e ser capaz de:

a) veja as mudanças ao vivo naquele arquivo (seria necessário um programa separado)

ou

b) saída para arquivo e ver aquela saída no terminal no mesmo horário

    
por Szymon Toda 28.12.2013 / 09:51

2 respostas

9

para a) Existe um utilitário chamado "tail" que mostra as últimas linhas de um arquivo e, opcionalmente, monitora um arquivo para novas linhas adicionadas ao final:

$ tail -f /path/toFile.txt

O pager menor também tem a capacidade de seguir as alterações, pressionando shift-F faz com que ele entre em um modo muito parecido com tail -f, com a vantagem de pressionar o botão ctrl-c para voltar à visualização normal do arquivo modo, para que você possa rolar para trás pelo arquivo ou pesquisá-lo sem fechá-lo.

para b) Existe um utilitário padrão chamado tee apenas para esse propósito ( link )

Você provavelmente desejará algo como o seguinte:

command 2>&1 | tee -a /path/toFile.txt | less

O | less no final é obviamente opcional, mas esteja ciente de que, se você incluí-lo, o fechamento de menos provavelmente também fechará o comando que você está executando.

Como um aparte, se este for um processo de longa duração, considere strongmente executá-lo sob nohup ou executá-lo dentro da tela, para que ele sobreviva a um logout.

    
por 28.12.2013 / 12:00
3

Isso soa como um trabalho para tee. A saída será gravada simultaneamente no terminal e no arquivo.

command 2>&1 | tee -a /path/toFile.txt
    
por 28.12.2013 / 19:56