全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

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

更新時(shí)間:2021-09-08 來(lái)源:黑馬程序員 瀏覽量:

echo命令是linux中最基礎(chǔ)的命令,在寫(xiě)shell腳本的時(shí)候,會(huì)經(jīng)常被用到,echo命令功能非常豐富,下面我們結(jié)合實(shí)際案例進(jìn)行詳細(xì)介紹。

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

echo命令

除了基本用法,還可以配合一些選項(xiàng)使用

echo -n 表示不換行輸出

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

echo -n

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

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

我們可以使用-e選項(xiàng)輸出轉(zhuǎn)義字符,比如常用的轉(zhuǎn)義字符”\t”, 轉(zhuǎn)義字符”\t”表示制表符,作用相當(dāng)于我們鍵盤(pán)上的tab鍵。

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

echo -e

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

常用的轉(zhuǎn)義字符如下:

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

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

\n 換行,效果看示例。

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

\v 與\f相同;

\t 轉(zhuǎn)以后表示插入tab,即制表符,已經(jīng)在上面舉過(guò)例子;

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

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

使用echo命令輸出上述轉(zhuǎn)義字符的示例如下:

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

echo -e

可以看到,上例中,在”\b”后面不存在任何字符時(shí),”\b”并沒(méi)有轉(zhuǎn)義為”退格鍵”,當(dāng)”\b”后面存在字符時(shí),一個(gè)”\b”就相當(dāng)于按一次backspace鍵。

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

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

echo -e “a\nb"

“\f”轉(zhuǎn)義符表示

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

echo -e “123\f456"

“\v”轉(zhuǎn)義符與”\f”轉(zhuǎn)義符的作用相同。

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

上圖中的第一個(gè)示例中,”\r”后面的123覆蓋了abc,defg沒(méi)有被覆蓋,第二個(gè)示例中,因?yàn)閍bc一共有3個(gè)字符,123也是有3個(gè)字符,所以123覆蓋了abc以后,只剩下了123,第三個(gè)實(shí)例中,123一共有3個(gè)字符,a只有一個(gè)字符,覆蓋以后只剩下123,第四個(gè)示例中,”\r”后面并不存在任何字符,所以”\r”前面的字符沒(méi)有被覆蓋。

“\\”經(jīng)過(guò)轉(zhuǎn)義以后,表示”\”,示例如下。

轉(zhuǎn)義\\

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

我們對(duì)比著示例,再給大家詳細(xì)的解釋?zhuān)纠Ч缦隆?/p>

彩色

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

echo -e我們就不解釋了,不管是輸出轉(zhuǎn)義字符還是輸出彩色字符,都需要使用-e選項(xiàng)。

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

為了方便解釋?zhuān)覀儽M量的縮小范圍,我們排除”傳智教育”字符串,因?yàn)檫@就是我們要輸出的內(nèi)容,沒(méi)有什么好解釋的,排除輸出內(nèi)容后,結(jié)構(gòu)如下

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

我們可以把\033[31m 理解成”開(kāi)始輸出紅色字符”,把 \033[0m理解成”結(jié)束輸出紅色字符”。

當(dāng)echo -e遇到\033[31m的時(shí)候,就認(rèn)為自己要輸出紅色字符了,\033[31m就是一個(gè)信號(hào),它告訴echo -e,需要開(kāi)始輸出紅色字符了, \033[0m也是一種信號(hào),它告訴echo 命令,紅色字符已經(jīng)不能輸出了,再輸出的字符應(yīng)該是黑白字符了,不能是彩色的了。

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

綠色文字

細(xì)心的你一定已經(jīng)發(fā)現(xiàn),輸出紅色TEST字符與輸出綠色TEST字符的唯一區(qū)別就是下圖標(biāo)注的位置。

彩色文字

也就是說(shuō),我們只要改變對(duì)應(yīng)位置的數(shù)字,就能改變輸出字符的顏色,所以,我們將能夠輸出的顏色對(duì)應(yīng)的數(shù)字總結(jié)如下:

30:黑色

31:紅色

32:綠色

33:黃色

34:藍(lán)色

35:紫色

36:淺藍(lán)色

37:灰色

所以,對(duì)應(yīng)上述顏色號(hào)碼,輸出效果如下:

彩色文字

除了能夠使用echo命令輸出彩色字符,我們還能夠?yàn)椴噬址砑硬噬尘埃热?,我們想要輸出具有黃色背景的紅色字符,可以使用如下方法

背景

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

echo

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

聰明如你一定想到了,”43;”代表黃色背景,那么別的背景顏色一定會(huì)有其對(duì)應(yīng)的數(shù)字編號(hào),沒(méi)有錯(cuò),此處列出背景色編號(hào):

40:黑色

41:紅色

42:綠色

43:黃色

44:藍(lán)色

45:紫色

46:淺藍(lán)色

47:灰色

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

我們?cè)谥耙呀?jīng)說(shuō)過(guò), “\033[31m” “\033[m”這些代碼都屬于 ansi 控制碼。

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

常用ANSI控制碼總結(jié)如下:

\033[0m 關(guān)閉所有屬性 ,也就是說(shuō)此控制碼前面的控制碼將會(huì)失效,此控制碼中的0可以省略。

\033[1m 設(shè)置高亮度

\033[4m 下劃線(xiàn)

\033[5m 閃爍

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

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

\033[30m — \33[37m 設(shè)置字符顏色

\033[40m — \33[47m 設(shè)置背景色

\033[K 清除從光標(biāo)到行尾的內(nèi)容

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

echo

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



猜你喜歡:

linux中scp命令的作用和用法

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

Linux基礎(chǔ)教程:linux權(quán)限管理詳細(xì)介紹

linux入門(mén)教程:linux文件管理命令匯總

黑馬程序員Linux云計(jì)算+運(yùn)維開(kāi)發(fā)課程

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!