Terminal
Cat 和 Less 給出不同的輸出
我執行了以下命令
# top > /home/user/top_output.txt
Nothing Happened 了一段時間,然後按下
Ctrl+C
。當我檢查創建的文件時,它裡面有內容。所以我向它發出了cat
命令,它給了我這個輸出。但是當我用命令嘗試同樣的事情時,
less
我得到了這個。根據這篇文章,工作
Cat,less or More
只是顯示文件的內容而不是翻譯編碼。有人可以告訴我這裡發生了什麼嗎?PS:我目前正在使用 Fedora 19
轉義序列
ESC [ ... m
稱為ANSI Escape Sequences。top
將它們發送到您的終端,使其以彩色、粗體、反轉文本等格式輸出。執行時您永遠不會看到這些字元,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
哪個會轉義不可列印的字元。