echo指令—詳解
1.文本輸出:echo指令後面跟上輸出的文本
2.echo自動換行; echo -n 表示不換行輸出
3. echo -e 表示轉義字元
①\b轉義後相當于按倒退鍵(backspace),但前提是“\b”後面存在字元,具體效果參考下方示例。
②\c不換行輸出,在“\c”後面不存在字元的情況下,作用相當于echo -n,具體效果參考下方示例。
③\n換行,具體效果參下方示例。
④\f換行,但是換行後的新行的開頭位置連接配接着上一行的行尾,具體效果參下方示例。
⑤\v與\f相同。
⑥\t轉以後表示插入tab,即制表符。
⑦\r光标移至行首,但不換行,相當于使用“\r”以後的字元覆寫“\r”之前同等長度的字元,隻看這段文字描述的話可能不容易了解,具體效果檢視示例。
⑧\表示插入“\”本身。**
實際操作如下:
[[email protected] ~]$ echo -e "123\b"
123
[[email protected] ~]$ echo -e "123\b4567"
124567
[[email protected] ~]$ echo -e "123\b\b4567"
14567
[[email protected] ~]$ echo -e "123\b\b\b4567"
4567
[[email protected] ~]$ echo -e "123\c"
123[[email protected] ~]$
[[email protected] ~]$ echo -n "123"
123[[email protected] ~]$
[[email protected] ~]$ echo -e "123\c456"
123[[email protected] ~]$
[[email protected] ~]$ echo -e "abcefg\n1234"
abcefg
1234
[[email protected] ~]$ echo -e "123\f456"
123
456
[[email protected] ~]$ echo -e "abcdefg\f1234"
abcdefg
1234
[[email protected] ~]$ echo -e "abcdefg\f1234\[email protected]@@@@@@@"
abcdefg
1234
@@@@@@@@
[[email protected] ~]$ echo -e "abcdefg\r123"
123defg
[[email protected] ~]$ echo -e "abc\r123"
123
[[email protected] ~]$ echo -e "a\r123"
123
[[email protected] ~]$ echo -e "a\r"
a
[[email protected] ~]$ echo -e "abc\\def"
abc\def
4、------使用echo指令的-e選項,除了能夠輸出轉義字元,還能夠在指令行中輸出彩色的字元,或是帶有彩色背景的字元。
例:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB9UNRRUT0kEVOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1IjNzITM0YTM1IzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 從圖中來看,一共可以分為兩部分,\033[31m 和\033[0m。
- 這些代碼有一個專業名詞,叫做“ANSI控制碼”。
- 我們習慣把\033[31m了解成“開始輸出紅色字元”,把\033[0m了解成“結束輸出紅色字元”。
- 當echo -e遇到\033[31m的時候,就認為自己要輸出紅色字元了,\033[31m就是一個信号,它告訴echo -e,需要開始輸出紅色字元了,\033[0m也是一種信号,它告訴echo -e指令,紅色字元已經不能輸出了,在輸出的字元應該是黑白字元了,不能是彩色的了。
那麼,如果我們想要輸出綠色字元,該怎麼寫呢? 示例如下:
-------------------------------------------這是一條美麗的分界線-------------------------------
通過上面兩行指令可以看出,輸出紅色字元與輸出綠色字元唯一差別就是紅色數字。是以我們隻要改變相應位置的數字,就能改變輸出字元的顔色,是以,我們将能夠輸出的顔色對應的數字總結如下:
30 :黑色
31 :紅色
32 :綠色
33 :黃色
34 :黃色
35 :紫色
36 :淺藍色
37 :灰色
輸出效果如下:
除了能夠使用echo指令輸出彩色字元,我們還能夠為彩色字元添加彩色背景,比如,我們想要輸出據歐黃色背景的紅色字元,具體情況如下:
對比一下:
可以看出,唯一不同的地方就是帶有黃色背景的指令中,多了個“43;”其他部分都一樣。
背影顔色編号對應的數字如下:
-----------> 40 :黑色
-----------> 41 :紅色
-----------> 42 :綠色
-----------> 43 :黃色
-----------> 44 :藍色
-----------> 45 :紫色
-----------> 46 :淺藍色
-----------> 47 :灰色
5、我們之前說過,”\033[31m”這些代碼都屬于ANSI控制碼。
ANSI控制碼中不僅有控制顔色的控制碼,還有一些提供其他功能的控制碼,總結如下:
\33[0m 關閉所有屬性,也就是說此控制碼前面的控制碼将會失效,此控制碼中的0可以省略。
- \33[1m 設定高亮度
- \33[4m 下劃線
- \33[5m 閃爍
- \33[7m 反顯,撞色顯示,顯示為白底黑字,或者為黑底白字
- \33[8m 消隐,字元顔色将會與背景顔色相同
- \33[30m----\33[37m設定字型顔色
- \33[40m----\33[47m設定背景顔色
- \33[K 消除從光标到行尾的内容