我使用過的Linux命令之echo - 顯示文本、打印信息



用途說明

echo命令用來打印信息,是一個最常用的命令。在命令行中常用來打印環境變量的值,已確定當前環境中是否設置了指定的環境變量。在shell腳本中,常用來打印信息和幫助調試程序。

 

常用參數

-n 打印信息之後不換行。

-e 對字符串轉義。

 

使用示例

示例一 打印當前的PATH設置

[root@jfht ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@jfht ~]#

 

示例二 打印當前的LANG設置(LANG爲語系文件變量,有時系統中文亂碼可能就需要改變該文件)

[root@jfht ~]# echo $LANG
zh_CN.GB18030
[root@jfht ~]#

 

網上經常有人問在Linux下將默認語言更改爲中文,我一般的做法是

在/etc/profile的末尾加上

export LANG=zh_CN.GB18030

然後重新登錄即可。但是較低版本的Linux通常在某些命令的輸出中出現亂碼,比如常用的service命令。

 

示例三 打印之後不換行

[root@jfht ~]# echo -n "Please input your name: "; read name; echo "Your name is $name"
Please input your name: coding
Your name is coding
[root@jfht ~]#

 

此處使用了-n參數,避免在輸出信息之後自動換行。

 

示例四 對輸出信息進行轉義,比如輸出換行

[root@jfht ~]# echo "hello\nworld"
hello\nworld
[root@jfht ~]# echo -e "hello\nworld"
hello
world
[root@jfht ~]# echo 'hello\nworld'
hello\nworld
[root@jfht ~]# echo -e 'hello\nworld'
hello
world
[root@jfht ~]# echo hello; echo world
hello
world
[root@jfht ~]#


可以使用如下轉義字符

\a 發出警告聲;
\b 刪除前一個字符;
\c 最後不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\n 換行且光標移至行首;
\r 光標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字符;
\nnn 插入nnn(八進制)所代表的ASCII字符;

 

[root@jfht ~]# echo "hello\fworld"
hello\fworld
[root@jfht ~]# echo -e "hello\fworld"
hello
     world
[root@jfht ~]# echo "hello\vworld"
hello\vworld
[root@jfht ~]# echo -e "hello\vworld"
hello
     world
[root@jfht ~]#

 

示例五 輸出到標準錯誤輸出

在編寫腳本時,經常會利用管道將前一個命令的輸出作爲後一個命令的輸入,如果要打印調試信息,但不把該信息干擾後面的命令,可以將調試信息輸出到標準錯誤輸出,如下所示。

[root@jfht ~]# echo hello >&2
hello
[root@jfht ~]#

 

下面是一個應用此技巧的腳本片段。

Bash代碼 複製代碼 收藏代碼
  1. # usage: proc_cmd  
  2. proc_cmd()  
  3. {  
  4.         CMD=$1  
  5.         NUM=$(get_estimate_count $CMD)  
  6.         # 只有返回數值的時候纔打印信息,否則出錯了  
  7.         if [ "$NUM" ]; then  
  8.                 printf "%-48s\t%16s\n"  $CMD    $NUM  
  9.         else  
  10.                 echo $CMD >&2  
  11.                 echo $CMD >>failed.dat  
  12.         fi  
  13. }  
 

問題思考

1. 將要輸出的信息放在單引號、雙引號以及不放在引號中有什麼區別?

2. 怎樣輸出彩色文字(如同ls時的效果)?

發佈了14 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章