標籤:

為什麼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 以 & 作為分隔,以「[」作為動作指令的開始,進行了「3;J」、「H」、「2J」三個操作。

J操作是清屏,H操作是把游標移動到終端的某個位置。根據這幾個參數,大概就是把整個屏幕的內容清掉,然後把游標推到左上角。


How does clear command work?


想理解這個問題,你得先明白 cat -A 幹了啥

先給你個例子:

echo -e "33[31;1mIm red33[m"

如果你的 Terminal 支持,你就會看到

其中 33 是一個二進位字元,表示開始轉義,31表示紅色,1表示加亮。[ 和 m 分別表示開始和終止。後面的 33[m 表示清除所有特效。

好了,接下來我們看 cat -A 幹了啥

你瞧,它把前面這條命令裡面乾的事兒給說出來了 (前一條命令:我負責干,你TM給說出來了?)

那麼回到你這個問題,就是 clear 幹了啥?

clear 就是幹了件翻篇的事(幾個控制符組合)。然後這事被 cat -A 給說出來了


前面道友都說的很對,就是翻篇啊


把clear 命令重定向到一個文件中你就可以在文件中看到這些字元,如果你再cat 這個文件的話就可以達到clear命令的效果


推薦閱讀:

如何才能成為一個專業的linux運維?
linux下雙網卡能不能設置同一網段?
女生去馬哥培訓學linux運維怎麼樣?
linux系統下,有哪些類似行為監管軟體?
馬哥教育的網路授課怎麼樣?

TAG:Linux | Linux運維 |