Como escrevo todas as linhas de menos para um arquivo?

55

Eu canalizei um comando para less e agora quero salvar a saída do comando em um arquivo. Como eu faço isso?

Nesse caso, não quero usar tee , quero uma solução diretamente de menos, para que não precise executar novamente um comando de longa execução se eu esquecer de usar tee .

Esta questão é semelhante a esta, a única diferença é que eu quero salvar todas as linhas, não um subconjunto: Escreva linhas para um arquivo de menos

    
por Flimm 10.12.2014 / 21:47

3 respostas

83

A partir de less , digite s digite o nome do arquivo que deseja salvar, em seguida, Enter .
Na página man , em COMMANDS :

s filename
      Save the input to a file.  This only works if the input is a pipe, not an ordinary file.

man page também indica que, dependendo da instalação específica, o comando s pode não estar disponível. Nesse caso, você poderia ir para a linha 1 com:

g or < or ESC-<
      Go to line N in the file, default 1 (beginning of file).

e canalize todo o conteúdo para cat com:

| <m> shell-command
      <m> represents any mark letter. Pipes a section of the input file to the
      given shell command. The section of the file to be piped is between the
      first line on the current screen and the position marked by the letter. 
      <m> may also be ^ or $ to indicate beginning or end of file respectively.

então:

g|$cat > filename

ou:

<|$cat > filename

i.e. escreva g ou < ( g ou menor que ) | $ ( pipe e dollar ), em seguida, cat > filename e Enter .
Isso deve funcionar se a entrada for um canal ou um arquivo comum.

    
por 10.12.2014 / 22:03
0

Uma maneira de fazer isso sem tee é a seguinte.
less /path/to/input > /path/to/output
O acima irá sobrescrever /path/to/output se já existir.

Para fazer o mesmo, mas acrescentar /path/to/output é o seguinte:
less /path/to/input >> /path/to/output

Para salvar o texto em less depois de abri-lo, você pode usar o recurso Salvar arquivo. Quando em less , pressione s . Em seguida, digite o nome do arquivo.
Se você usou um pipe, o arquivo será automaticamente gravado no Working Directory.
Se você não usou um pipe, você irá abrir um arquivo com o texto (para o qual você pode salvar). Eu acredito que o arquivo será aberto em vim .

    
por 10.12.2014 / 22:01
-1

Você não usa menos, usa tee e depois canaliza tee para menos.

./program | tee program.out | less

    
por 10.12.2014 / 21:49

Tags