Linux 基礎(chǔ)教程 47-echo詳細(xì)講解

? ? echo命令是Linux中最基礎(chǔ)和最常用的命令,特別是在Shell腳本經(jīng)常用來打印輸出調(diào)試信息等,功能比較豐富,現(xiàn)來總結(jié)一下,方便后續(xù)查看。

1.基本語法

echo [參數(shù)] 字符串

? ? 主要參數(shù)解釋如下所示:

參數(shù) 功能
-e 激活轉(zhuǎn)義字符
-n 輸出不進(jìn)行換行
  • 轉(zhuǎn)義符詳細(xì)解釋如下所示:
轉(zhuǎn)義符 含義
\a 發(fā)出警告聲
\b 轉(zhuǎn)義后相當(dāng)于退格鍵(Backspace),前提是\b后面存在字符
\c 不進(jìn)行換行,若后面有字符也不輸出,若沒有與echo -n等效
\n 輸出換行
\f 換行,但換行后新行的開頭位置連接著上一行的行尾
\v 與\f相同
\r 光標(biāo)移到行首,但不換行,相當(dāng)于使用\r后面的字符覆蓋\r之前同等長度的字符
\t 插入TAB符
\ 插入 \ 字符

? ? 使用選項(xiàng)-e參數(shù)后,除了可以輸出轉(zhuǎn)義字符,還可以輸出彩色的字符和帶有彩色背景的字符。示例如下所示:

echo -e "\033[43;31m Surpass \033[0m"
  • \033[43;31m和\033[0m:專業(yè)名詞叫做ANSI控制碼,\033[表示開始輸出設(shè)定顏色的字符,\033[0m表示結(jié)束輸出設(shè)定的字符
  • 43;表示輸出字符的背景顏色
  • 31表示輸出字符的字體顏色

? ? ASNI控制碼不僅可以控制顏色的輸出,還有其他一些功能的控制碼,如下所示:

ANSI控制碼 功能
\033[0m 關(guān)閉所有屬性 ,也就是說此控制碼前面的控制碼將會(huì)失效,此控制碼中的0可以省略
\033[1m 設(shè)置高亮度
\033[4m 添加下劃線
\033[5m 閃爍
\033[7m 反顯 ,撞色顯示,顯示為白底黑字,或者顯示為黑底白字
\033[8m 消隱 ,字符顏色將會(huì)與背景顏色相同
\033[30m — \033[37m 設(shè)置字符字體顏色
\033[40m — \033[47m 設(shè)置字符背景顏色
  • 常用字符字體顏色如下所示:
數(shù)字 顏色 數(shù)字 顏色
30 黑色 31 紅色
32 綠色 33 黃色
34 藍(lán)色 35 紫色
36 淺藍(lán)色 37 灰色
  • 常用字符背景顏色如下所示:
數(shù)字 顏色 數(shù)字 顏色
40 黑色 41 紅色
42 綠色 43 黃色
44 藍(lán)色 45 紫色
46 淺藍(lán)色 47 灰色

2.常用示例

  • 1、-n輸出不換行
[root@Surpass ~]# echo -n "Surpass"
Surpass[root@Surpass ~]#
  • 2、\b刪除前一個(gè)字符
[root@Surpass ~]# echo -e "S\burpass"
urpass
[root@Surpass ~]# echo -e "Sur\b\b\bpass"
pass

\b\b\b:表示刪除前面三個(gè)字符

  • 3、\c輸出不換行,但當(dāng)\c后存在字符時(shí),其后面的字符將不會(huì)輸出,若\c后面沒有字符時(shí),功能與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相當(dāng)于\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、輸出同時(shí)帶有字體和背景顏色的字符


    01 echo-01.png

3.腳本封裝示例

? ? 根據(jù)今天的筆記,封裝一個(gè)打印輸出日志記錄腳本,如下所示:

#!/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

? ? 最終效果如下所示:

02 echo-02.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容