首頁技術文章正文

echo什么意思?echo命令有什么用?

更新時間:2021-09-08 來源:黑馬程序員 瀏覽量:

echo命令是linux中最基礎的命令,在寫shell腳本的時候,會經常被用到,echo命令功能非常豐富,下面我們結合實際案例進行詳細介紹。

echo命令的基本用法,很簡單,就是echo命令后面跟上要輸出的文本,如下。

echo命令

除了基本用法,還可以配合一些選項使用

echo -n 表示不換行輸出

如果不添加-n選項,文本輸出以后,指定換行了,而添加了-n選項以后,文本直接連著命令提示符輸出了,并沒有換行,這樣演示效果不明顯,我們可以同時echo兩條信息,效果比較明顯,示例如下。

echo -n

當使用echo輸出命令替換后的內容時,命令執(zhí)行結果的格式可能會發(fā)生變化,比如,如果我們想要輸出ifconfig命令執(zhí)行后的結果,我們可能會使用如下命令

但是我們發(fā)現,這樣輸出的文本的格式發(fā)生了變化,這樣可能不是我們想要的,因為當我們直接執(zhí)行ifconfig命令時,ifconfig返回的結果是多行的,可是當我們使用echo輸出的時候,格式發(fā)生了變化,如果想要按照命令執(zhí)行后的原格式輸出命令替換后的結果,可以使用如下方法,如下方法在寫腳本的時候可能會用到。

我們可以使用-e選項輸出轉義字符,比如常用的轉義字符”\t”, 轉義字符”\t”表示制表符,作用相當于我們鍵盤上的tab鍵。

我們可以使用echo -e輸出轉義字符,將轉義后的內容輸出到屏幕上,示例如下

echo -e

上圖示例中,已經將”\t”轉義過的制表符輸出到了屏幕上,所以,我們只要能夠記住這些轉義字符,就可以在echo命令中輸出它們,那么,我們將常用的轉義字符總結一下,然后給出示例。

常用的轉義字符如下:

\b 轉義后相當于按退格鍵(backspace) ,但前提是”\b”后面存在字符,具體效果參考下方示例。

\c 不換行輸出,在”\c”后面不存在字符的情況下,作用相當于echo -n,具體效果參考下方示例。

\n 換行,效果看示例。

\f 換行,但是換行后的新行的開頭位置連接著上一行的行尾,具體效果查看示例;

\v 與\f相同;

\t 轉以后表示插入tab,即制表符,已經在上面舉過例子;

\r 光標移至行首,但不換行,相當于使用”\r”以后的字符覆蓋”\r”之前同等長度的字符,只看這段文字描述的話可能不容易理解,具體效果查看示例;

\\ 表示插入”\”本身;

使用echo命令輸出上述轉義字符的示例如下:

使用echo命令輸出”\b”轉義字符,在”\b”后面存在字符的前提下,”\b”表示刪除前一個字符,”\b\b”表示刪除前兩個字符。

echo -e

可以看到,上例中,在”\b”后面不存在任何字符時,”\b”并沒有轉義為”退格鍵”,當”\b”后面存在字符時,一個”\b”就相當于按一次backspace鍵。

我們也可以使用\c轉義符,表示不換行輸出,但是當”\c”后面仍然存在字符時,”\c”后面的字符將不會被輸出,如果”\c”后面不存在任何字符時,效果與使用”echo -n”相同,示例如下。

“\n”轉義后表示換行,下例中,被輸出的字符從”\n”處開始另起一行。

echo -e “a\nb"

“\f”轉義符表示

換行,但是換行后的新行的開頭位置連接著上一行的行尾,如下圖示例所示,下圖中的第三個例子中有兩個”\f”。

echo -e “123\f456"

“\v”轉義符與”\f”轉義符的作用相同。

“\r”轉義符表示使用”\r”后面的字符覆蓋”\r”之前的同等長度的字符,比較不容易理解,但是看下圖示例,就很容易明白了。

上圖中的第一個示例中,”\r”后面的123覆蓋了abc,defg沒有被覆蓋,第二個示例中,因為abc一共有3個字符,123也是有3個字符,所以123覆蓋了abc以后,只剩下了123,第三個實例中,123一共有3個字符,a只有一個字符,覆蓋以后只剩下123,第四個示例中,”\r”后面并不存在任何字符,所以”\r”前面的字符沒有被覆蓋。

“\\”經過轉義以后,表示”\”,示例如下。

轉義\\

使用echo命令的-e選項,除了能夠輸出轉義字符,還能夠在命令行中輸出彩色的字符,或者帶有彩色背景的字符。

我們對比著示例,再給大家詳細的解釋,示例效果如下。

彩色

可以看到,上例中輸出了紅色的大寫的”傳智教育”,這就是我們所說的,使用echo -e 輸出彩色字符的效果。

echo -e我們就不解釋了,不管是輸出轉義字符還是輸出彩色字符,都需要使用-e選項。

我們來解釋一下字符串“\033[31m傳智教育\033[0m”是什么意思。

為了方便解釋,我們盡量的縮小范圍,我們排除”傳智教育”字符串,因為這就是我們要輸出的內容,沒有什么好解釋的,排除輸出內容后,結構如下

從上圖可以看出,如果要想輸出紅色字符,至少需要兩部分,\033[31m 和 \033[0m ,這些代碼有一個專業(yè)名詞,叫做”ANSI控制碼”,但是為了方便理解,我們先用通俗的語言解釋它們,用不專業(yè)的思維去理解它們。

我們可以把\033[31m 理解成”開始輸出紅色字符”,把 \033[0m理解成”結束輸出紅色字符”。

當echo -e遇到\033[31m的時候,就認為自己要輸出紅色字符了,\033[31m就是一個信號,它告訴echo -e,需要開始輸出紅色字符了, \033[0m也是一種信號,它告訴echo 命令,紅色字符已經不能輸出了,再輸出的字符應該是黑白字符了,不能是彩色的了。

那么,如果我們想要輸出綠色字符,該怎么寫呢,示例如下

綠色文字

細心的你一定已經發(fā)現,輸出紅色TEST字符與輸出綠色TEST字符的唯一區(qū)別就是下圖標注的位置。

彩色文字

也就是說,我們只要改變對應位置的數字,就能改變輸出字符的顏色,所以,我們將能夠輸出的顏色對應的數字總結如下:

30:黑色

31:紅色

32:綠色

33:黃色

34:藍色

35:紫色

36:淺藍色

37:灰色

所以,對應上述顏色號碼,輸出效果如下:

彩色文字

除了能夠使用echo命令輸出彩色字符,我們還能夠為彩色字符添加彩色背景,比如,我們想要輸出具有黃色背景的紅色字符,可以使用如下方法

背景

那么我們對比一下,輸出紅色字符的echo命令,與輸出黃色背景的紅色字符的echo命令,具體有什么不同。

echo

可以看到,唯一不同的地方就是帶有黃色背景的命令中,多出了”43;” ,其他部分的命令都一樣。

聰明如你一定想到了,”43;”代表黃色背景,那么別的背景顏色一定會有其對應的數字編號,沒有錯,此處列出背景色編號:

40:黑色

41:紅色

42:綠色

43:黃色

44:藍色

45:紫色

46:淺藍色

47:灰色

我們可以同時設定字符的顏色與背景的顏色,怎樣搭配隨你喜歡,大家可以自己多嘗試嘗試。

我們在之前已經說過, “\033[31m” “\033[m”這些代碼都屬于 ansi 控制碼。

ansi控制碼中不僅有控制顏色的控制碼,還有一些提供其他功能的控制碼,我們來總結一下。

常用ANSI控制碼總結如下:

\033[0m 關閉所有屬性 ,也就是說此控制碼前面的控制碼將會失效,此控制碼中的0可以省略。

\033[1m 設置高亮度

\033[4m 下劃線

\033[5m 閃爍

\033[7m 反顯 ,撞色顯示,顯示為白底黑字,或者顯示為黑底白字

\033[8m 消隱 ,字符顏色將會與背景顏色相同

\033[30m — \33[37m 設置字符顏色

\033[40m — \33[47m 設置背景色

\033[K 清除從光標到行尾的內容

上述ANSI控制碼中,有的不能在bash命令行中運行,我們可以掩飾幾個可用的,常用的ANSI控制碼,示例如下圖:

echo

上圖中,我們利用echo命令,使用-e選項,結合著ANSI控制碼,輸出了帶有下劃線的字符以及撞色顯示的字符。



猜你喜歡:

linux中scp命令的作用和用法

Linux系統(tǒng)如何安裝Docker?

Linux基礎教程:linux權限管理詳細介紹

linux入門教程:linux文件管理命令匯總

黑馬程序員Linux云計算+運維開發(fā)課程

分享到:
在線咨詢 我要報名
和我們在線交談!