Reduzindo a impressão para stdout se um arquivo inteiro pode ser exibido em uma tela

13

Quando moreé passado um arquivo cujo conteúdo pode ser exibido em uma tela, ele apenas grava o conteúdo do arquivo no stdout sem paginação. Se o arquivo não puder caber em uma tela, morepagine-o.

lesstem uma opção para sair se o arquivo com o qual está trabalhando pode ser exibido em uma tela ( -F) e possui um morerecurso de emulação que se comporta de maneira semelhante ao -Fsinalizador, mas nenhuma dessas opções parece causar lessa gravação do conteúdo do arquivo para stdout se o conteúdo puder caber em uma tela.

Como posso lessescrever o conteúdo de um arquivo no stdout se o conteúdo do arquivo pode caber em uma tela e paginar o arquivo como normalmente faria?


fonte

Respostas:

16

Use less -FX. De man less:

   -F or --quit-if-one-screen
          Causes less to automatically exit if the entire file can be dis-
          played on the first screen.

   -X or --no-init
          Disables sending the termcap initialization and deinitialization
          strings  to  the  terminal.   This is sometimes desirable if the
          deinitialization string does something unnecessary, like  clear-
          ing the screen.
Chris Down
fonte
Por que -Fapenas funciona -X?
Jesse
2
@ Jessie Na verdade, funciona bem sem -X, mas não como o esperado. Como menos é um pager que atua na tela alternativa em seu terminal, se você não desativar a inicialização do termcap, ele será iniciado e encerrado na tela alternativa. Você provavelmente verá um flash rápido.
Chris Down
Então não vejo nada echo lol | LESS=F lessporque imprime em uma tela alternativa e volta imediatamente? Faz sentido, eu acho (embora eu não veja um flash rápido). Obrigado.
Jesse
Bah! Eu me pergunto o que diabos menos desenvolvedores pensaram ao usar a tela alternativa se -F está presente e "usado". Não faz sentido usar a tela alternativa nesse caso.
ThiefMaster
Consulte unix.stackexchange.com/q/107315/85237 para fazer o less -Ftrabalho sem -X.
John Mellor