Terminal

Cat 和 Less 給出不同的輸出

  • February 9, 2014

我執行了以下命令

# top > /home/user/top_output.txt

Nothing Happened 了一段時間,然後按下Ctrl+C。當我檢查創建的文件時,它裡面有內容。所以我向它發出了 cat命令,它給了我這個輸出。

cat 文本文件的輸出

但是當我用命令嘗試同樣的事情時,less我得到了這個。

文件輸出更少

根據這篇文章,工作Cat,less or More只是顯示文件的內容而不是翻譯編碼。有人可以告訴我這裡發生了什麼嗎?

PS:我目前正在使用 Fedora 19

轉義序列ESC [ ... m稱為ANSI Escape Sequencestop將它們發送到您的終端,使其以彩色、粗體、反轉文本等格式輸出。執行時您永遠不會看到這些字元,top但您會看到生成的格式。您可以將其視為在瀏覽器中查看網頁 - 您看不到<html>...內容的格式。

將 的輸出轉儲top到文件中時,您會將不可列印的轉義序列與其他所有內容一起保存。將其視為保存view source在瀏覽器中。

的預設值less是轉義終端控製字元,以可列印的形式顯示它們。

預設設置cat是將它們傳遞到您的終端,終端會解釋它們並使其看起來“正常”。

嘗試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.

比較cat -v /home/user/top_output.txt哪個會轉義不可列印的字元。

引用自:https://unix.stackexchange.com/questions/114355