Como enviar o comando linux e o resultado retornado no mesmo arquivo de texto?

3

Todos os comandos que vi até agora parecem com command > file ou command >> file , que geram o resultado para o arquivo designado. Por exemplo, quando eu digito openssl version > lab4.txt , tudo que vejo no arquivo de texto é OpenSSL 1.0.1e-fips 11 Feb 2013 .

E se eu quiser produzir tanto o comando que eu digitei como o resultado retornado um abaixo do outro assim?

linux2[20]% openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

Obrigado por ajudar

    
por Richard77 20.04.2015 / 03:46

2 respostas

6

O operador de redirecionamento command > file irá redirecionar o STDOUT de um comando, ou STDERR de um comando se usado como command 2> file ou ambos, se usado como &> no bash ou em qualquer shell pelo portable command > file 2>&1 way. Não tenho conhecimento de nenhum método direto usando redirecionamento que possa alcançar o que você precisa.

Embora seja possível usar o programa script . Basicamente, ele salvará tudo o que estiver impresso no terminal nessa sessão de script .

De man script :

script makes a typescript of everything printed on your terminal. 
It is useful for students who need a hardcopy record of an 
interactive session as proof of an assignment, as the typescript file 
can be printed out later with lpr(1).

Você pode iniciar uma sessão script digitando apenas script no terminal, todos os comandos subseqüentes e suas saídas serão todos salvos em um arquivo chamado typescript no diretório atual. Você pode salvar o resultado em um arquivo diferente também iniciando script como:

script output.txt

Para sair da sessão screen (parar de salvar o conteúdo), basta digitar exit .

Aqui está um exemplo:

$ script output.txt
Script started, file is output.txt

$ ls
output.txt  testfile.txt  foo.txt

$ exit
exit
Script done, file is output.txt

Agora, se eu ler o arquivo:

$ cat output.txt

Script started on Mon 20 Apr 2015 08:00:14 AM BDT
$ ls
output.txt  testfile.txt  foo.txt
$ exit
exit

Script done on Mon 20 Apr 2015 08:00:21 AM BDT

script também tem muitas opções, por ex. executando silenciosamente -q ( --quiet ) sem mostrar / salvando mensagens do programa, ele também pode executar um comando específico -c ( --command ) em vez de uma sessão, ele também tem muitas outras opções. Verifique man script para ter mais ideia.

    
por heemayl 20.04.2015 / 03:55
1

Você precisaria criar um script com o seguinte:
echo 'command -params/r' > file.lst
command -params >> file.lst

    
por LDC3 20.04.2015 / 04:03