echo命令是Linux中最基礎和最常用的命令,特別是在Shell腳本經常用來列印輸出調試信息等,功能比較豐富,現來總結一下,方便後續查看。 1.基本語法 echo [參數] 字元串 主要參數解釋如下所示: | 參數 | 功能 | | | | | -e | 激活轉義字元 | | -n | 輸出不進行 ...
echo命令是Linux中最基礎和最常用的命令,特別是在Shell腳本經常用來列印輸出調試信息等,功能比較豐富,現來總結一下,方便後續查看。
1.基本語法
echo [參數] 字元串
主要參數解釋如下所示:
參數 | 功能 |
---|---|
-e | 激活轉義字元 |
-n | 輸出不進行換行 |
- 轉義符詳細解釋如下所示:
轉義符 | 含義 |
---|---|
\a | 發出警告聲 |
\b | 轉義後相當於退格鍵(Backspace),前提是\b後面存在字元 |
\c | 不進行換行,若後面有字元也不輸出,若沒有與echo -n等效 |
\n | 輸出換行 |
\f | 換行,但換行後新行的開頭位置連接著上一行的行尾 |
\v | 與\f相同 |
\r | 游標移到行首,但不換行,相當於使用\r後面的字元覆蓋\r之前同等長度的字元 |
\t | 插入TAB符 |
\ | 插入 \ 字元 |
使用選項-e參數後,除了可以輸出轉義字元,還可以輸出彩色的字元和帶有彩色背景的字元。示例如下所示:
echo -e "\033[43;31m Surpass \033[0m"
- \033[43;31m和\033[0m:專業名詞叫做ANSI控制碼,\033[表示開始輸出設定顏色的字元,\033[0m表示結束輸出設定的字元
- 43;表示輸出字元的背景顏色
- 31表示輸出字元的字體顏色
ASNI控制碼不僅可以控制顏色的輸出,還有其他一些功能的控制碼,如下所示:
ANSI控制碼 | 功能 |
---|---|
\033[0m | 關閉所有屬性 ,也就是說此控制碼前面的控制碼將會失效,此控制碼中的0可以省略 |
\033[1m | 設置高亮度 |
\033[4m | 添加下劃線 |
\033[5m | 閃爍 |
\033[7m | 反顯 ,撞色顯示,顯示為白底黑字,或者顯示為黑底白字 |
\033[8m | 消隱 ,字元顏色將會與背景顏色相同 |
\033[30m — \033[37m | 設置字元字體顏色 |
\033[40m — \033[47m | 設置字元背景顏色 |
- 常用字元字體顏色如下所示:
數字 | 顏色 | 數字 | 顏色 |
---|---|---|---|
30 | 黑色 | 31 | 紅色 |
32 | 綠色 | 33 | 黃色 |
34 | 藍色 | 35 | 紫色 |
36 | 淺藍色 | 37 | 灰色 |
- 常用字元背景顏色如下所示:
數字 | 顏色 | 數字 | 顏色 |
---|---|---|---|
40 | 黑色 | 41 | 紅色 |
42 | 綠色 | 43 | 黃色 |
44 | 藍色 | 45 | 紫色 |
46 | 淺藍色 | 47 | 灰色 |
2.常用示例
- 1、-n輸出不換行
[root@Surpass ~]# echo -n "Surpass"
Surpass[root@Surpass ~]#
- 2、\b刪除前一個字元
[root@Surpass ~]# echo -e "S\burpass"
urpass
[root@Surpass ~]# echo -e "Sur\b\b\bpass"
pass
\b\b\b:表示刪除前面三個字元
- 3、\c輸出不換行,但當\c後存在字元時,其後面的字元將不會輸出,若\c後面沒有字元時,功能與echo -n等效
[root@Surpass ~]# echo -e "Surpass\c"
Surpass[root@Surpass ~]# echo -e "Sur\cpass"
Sur[root@Surpass ~]#
- 4、\n表示輸出換行
[root@Surpass ~]# echo -e "I love \nSurpass"
I love
Surpass
- 5、\f,換行,但新行的行首連接前一行的行尾
[root@Surpass ~]# echo -e "I love \fSurpass"
I love
Surpass
[root@Surpass ~]# echo -e "I \flove \fSurpass"
I
love
Surpass
- 6、\r相當於\r後面的字元覆蓋\r之前同等長度的字元
[root@Surpass ~]# echo -e "I love Surpass\rdiana"
dianae Surpass
[root@Surpass ~]# echo -e "Surpa ss\rdiana"
diana ss
- 7、\t插入TAB分隔符
[root@Surpass ~]# echo -e "Surpass\t\t\tdiana"
Surpass diana
- 8、輸出\
[root@Surpass ~]# echo -e "Surpass \\ love \\ Diana"
Surpass \ love \ Diana
- 9、輸出同時帶有字體和背景顏色的字元
3.腳本封裝示例
根據今天的筆記,封裝一個列印輸出日誌記錄腳本,如下所示:
#!/bin/bash
function printMessage(){
dt=$(date '+%F %T')
type=$([ -z "$1" ] && echo "INFO" || echo "$1" | tr [:lower:] [:upper:])
message=$([ -z "$2" ] && echo "NONE" || echo "$2")
if [ "${type}" == "INFO" ]
then
echo -e "\033[32m ${dt} ${type} ${message}\033[0m"
elif [ "${type}" == "WARNING" ]
then
echo -e "\033[33m ${dt} ${type} ${message}\033[0m"
elif [ "${type}" == "ERROR" ]
then
echo -e "\033[31m ${dt} ${type} ${message}\033[0m"
else
echo -e "\033[34m ${dt} ${type} or ${message} error \033[0m"
fi
}
function main(){
printMessage info "I love Surpass"
printMessage WARNING "I love Surpass"
printMessage errOR "I love Surpass"
printMessage Test "I love Surpass"
}
main
最終效果如下所示:
原文地址:https://www.jianshu.com/p/6dbb04e56e60
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註:
作者: Surpassme
來源: http://www.jianshu.com/u/28161b7c9995/
http://www.cnblogs.com/surpassme/
聲明:本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出 原文鏈接 ,否則保留追究法律責任的權利。如有問題,可發送郵件 聯繫。讓我們尊重原創者版權,共同營造良好的IT朋友圈。