Como escrevo todas as linhas de menos para um arquivo?

76

Canalizei um comando para lesse agora quero salvar a saída do comando em um arquivo. Como faço isso?

Nesse caso, não quero usar tee, quero uma solução diretamente a partir de menos, para não precisar executar novamente um comando de longa duração se me esquecer de usá-lo tee.

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

Flimm
fonte

Respostas:

106

Em less, digite se digite o nome do arquivo no qual deseja salvar Enter.
Na manpágina, em COMMANDS:

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

manA página também afirma que, dependendo da sua instalação específica, o scomando pode não estar disponível. Nesse caso, você pode 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:

| <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 também:

g|$cat > filename

ou:

<|$cat > filename

ou seja, digite gor <( g ou menor que ) | $( tubo e dólar ) então cat > filenamee Enter.
Isso deve funcionar se a entrada for um canal ou um arquivo comum.

don_crissti
fonte
0

Uma maneira de fazê-lo sem teeé a seguinte.
less /path/to/input > /path/to/output
O acima será sobrescrito /path/to/outputse ele já existir.

Para fazer o mesmo, mas anexar a /path/to/outputé o seguinte.
less /path/to/input >> /path/to/output

Para salvar o texto lessdepois de abri-lo, você pode usar o recurso Salvar arquivo.
Quando entrar less, pressione s. Em seguida, digite o nome do arquivo.
Se você usou um pipe, o arquivo será automaticamente gravado no Diretório de Trabalho.
Se você não usou um canal, você abrirá um arquivo com o texto (para o qual você pode salvar).
Acredito que o arquivo será aberto vim.

nehcsivart
fonte
4
Quero uma solução lessdepois de abrir less.
Flimm
Eu vejo. Desculpe pelo mal entendido. Eu atualizei minha resposta.
nehcsivart
-2

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

./program | tee program.out | less

SailorCire
fonte
5
Na pergunta, solicitei especificamente uma solução que funcionasse sem teelesster sido aberta.
Flimm