為什麼Linux執行clear | cat -A命令出現一串隱藏字元串?
列印出了一串^[[3;J^[[H^[[2J
難道clear命令的原理是使用終端控制字元清屏的嗎?
然而在Ubuntu的默認terminal裡面,clear只是幫你滾了滾動條,讓所有的字都看不見。
clear &>&> a.log
可以看到文件里的內容就是 ^[[3;J^[[H^[[2J 這個,解析一下其實就是 x1b[3;Jx1b[Hx1b[2J,x1b其實就是 ASCII 碼中的 &
這裡用到的 escape sequence code 以 &
J操作是清屏,H操作是把游標移動到終端的某個位置。根據這幾個參數,大概就是把整個屏幕的內容清掉,然後把游標推到左上角。
How does clear command work?
想理解這個問題,你得先明白 cat -A 幹了啥
先給你個例子:
echo -e " 33[31;1mIm red 33[m"
如果你的 Terminal 支持,你就會看到
其中 33 是一個二進位字元,表示開始轉義,31表示紅色,1表示加亮。[ 和 m 分別表示開始和終止。後面的 33[m 表示清除所有特效。
好了,接下來我們看 cat -A 幹了啥
你瞧,它把前面這條命令裡面乾的事兒給說出來了 (前一條命令:我負責干,你TM給說出來了?)
那麼回到你這個問題,就是 clear 幹了啥?
clear 就是幹了件翻篇的事(幾個控制符組合)。然後這事被 cat -A 給說出來了
前面道友都說的很對,就是翻篇啊
把clear 命令重定向到一個文件中你就可以在文件中看到這些字元,如果你再cat 這個文件的話就可以達到clear命令的效果
推薦閱讀:
※如何才能成為一個專業的linux運維?
※linux下雙網卡能不能設置同一網段?
※女生去馬哥培訓學linux運維怎麼樣?
※linux系統下,有哪些類似行為監管軟體?
※馬哥教育的網路授課怎麼樣?