Cat e Less fornecem uma saída diferente

5

Eu executei o seguinte comando

# top > /home/user/top_output.txt

Nada aconteceu por um tempo e então eu pressionei Ctrl+C . Quando eu verifiquei o arquivo que foi criado, ele tinha o conteúdo nele. Então eu disparei o comando cat e ele me deu essa saída.


Masquandoeutenteiamesmacoisacomocomandolesseuconseguiisso.


De acordo com essa postagem , o trabalho de Cat,less or More é apenas para exibir o conteúdo do arquivo que não está traduzindo a codificação. Alguém pode me dizer o que está acontecendo aqui?
P.S: Atualmente estou usando o Fedora 19

    
por Aditya Cherla 09.02.2014 / 12:36

1 resposta

12

As seqüências de escape ESC [ ... m são chamadas Sequências de escape ANSI . top os envia para o seu terminal para formatá-lo em cores, negrito, texto invertido e assim por diante. Você nunca vê esses caracteres quando executa top , mas vê o formato resultante. Você pode pensar em ver uma página da Web em um navegador. Você não vê o <html>... formatando o conteúdo.

Ao despejar a saída de top em um arquivo, você está salvando as seqüências de escape não imprimíveis com todo o resto. Pense nisso como salvando view source no seu navegador.

O padrão para less é escapar dos caracteres de controle do terminal, exibindo-os em um formato imprimível.

O padrão para cat é passá-los para o seu terminal, que os interpreta e faz com que pareça "normal".

Experimente less -r /home/user/top_output.txt

   $ man less ...
   -r or --raw-control-chars
          Causes "raw" control characters to be displayed.  
           The default is to display control characters using the caret
           notation; for example, a control-A (octal 001) is displayed as 
           "^A". Warning: when the -r option is used, less cannot keep 
           track of the actual appearance of the screen (since this depends
           on how the screen responds to each type of control
           character).  Thus, various display problems may result, such
           as long lines being split in the wrong place.

Compare com cat -v /home/user/top_output.txt , que escapará de caracteres não imprimíveis.

    
por 09.02.2014 / 12:42