echo命令是linux中最基礎的命令,也是很常用的命令,特別是在寫shell腳本的時候,可能會經常被用到,雖然echo命令非常基礎,但是功能還算豐富,本文章對echo命令的常用方法進行總結,並給出示例,方便記憶與回顧。
echo命令的基本用法,很簡單,就是echo命令后面跟上要輸出的文本,如下:
除了基本用法,還可以配合一些選項使用
echo -n 表示不換行輸出
可以看到,如果不添加-n選項,文本輸出以后,指定換行了,而添加了-n選項以后,文本直接連着命令提示符輸出了,並沒有換行,這樣演示效果不明顯,我們可以同時echo兩條信息,效果比較明顯,示例如下:
當使用echo輸出命令的輸出結果的內容時,命令執行結果的格式可能會發生變化,比如,如果我們想要輸出ifconfig命令執行后的結果,我們可能會使用如下命令:
但是我們發現,這樣輸出的文本的格式發生了變化,這樣可能不是我們想要的,因為當我們直接執行ifconfig命令時,ifconfig返回的結果是多行的,
可是當我們使用echo輸出的時候,格式發生了變化,如果想要按照命令執行后的原格式輸出命令替換后的結果,可以使用如下方法,如下方法在寫腳本的時候可能會用到。
我們可以使用-e選項輸出轉義字符,比如常用的轉義字符"\t", 轉義字符"\t"表示制表符,作用相當於我們鍵盤上的tab鍵。
我們可以使用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"表示刪除前兩個字符,\b\b\b表示刪除前三個字符,一次類推。
我們也可以使用\c轉義符,表示不換行輸出,但是當"\c"后面仍然存在字符時,"\c"后面的字符將不會被輸出,如果"\c"后面不存在任何字符時,效果與使用"echo -n"相同,示例如下。
"\n"轉義后表示換行,下例中,被輸出的字符從"\n"處開始另起一行。
"\f"轉移符表示換行,但是換行后的新行的開頭位置連接着上一行的行尾,如下圖示例所示,下圖中的第三個例子中有兩個"\f"。
"\v"轉義符與"\f"轉義符的作用相同。
"\r"轉義符表示使用"\r"后面的字符覆蓋"\r"之前的同等長度的字符,比較不容易理解,但是看下圖示例,就很容易明白了
上圖中的第一個示例中,"\r"后面的123覆蓋了abc,defg沒有被覆蓋,第二個示例中,因為abc一共有3個字符,123也是有3個字符,所以123覆蓋了abc以后,只剩下了123,第三個實例中,123一共有3個字符,a只有一個字符,覆蓋以后只剩下123,第四個示例中,"\r"后面並不存在任何字符,所以"\r"前面的字符沒有被覆蓋。
"\\"經過轉義以后,表示"\",示例如下。