我使用過的Linux指令之echo - 顯示文本、列印資訊
本文連結:http://codingstandards.iteye.com/blog/786101 (轉載請注明出處)
用途說明
echo指令用來列印資訊,是一個最常用的指令。在指令行中常用來列印環境變量的值,已确定目前環境中是否設定了指定的環境變量。在shell腳本中,常用來列印資訊和幫助調試程式。
常用參數
-n 列印資訊之後不換行。
-e 對字元串轉義。
使用示例
示例一 列印目前的PATH設定
[[email protected] ~]# 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
[[email protected] ~]#
示例二 列印目前的LANG設定
[[email protected] ~]# echo $LANG
zh_CN.GB18030
[[email protected] ~]#
網上經常有人問在Linux下将預設語言更改為中文,我一般的做法是
在/etc/profile的末尾加上
export LANG=zh_CN.GB18030
然後重新登入即可。但是較低版本的Linux通常在某些指令的輸出中出現亂碼,比如常用的service指令。
示例三 列印之後不換行
[[email protected] ~]# echo -n "Please input your name: "; read name; echo "Your name is $name"
Please input your name: coding
Your name is coding
[[email protected] ~]#
此處使用了-n參數,避免在輸出資訊之後自動換行。
示例四 對輸出資訊進行轉義,比如輸出換行
[[email protected] ~]# echo "hello\nworld"
hello\nworld
[[email protected] ~]# echo -e "hello\nworld"
hello
world
[[email protected] ~]# echo 'hello\nworld'
hello\nworld
[[email protected] ~]# echo -e 'hello\nworld'
hello
world
[[email protected] ~]# echo hello; echo world
hello
world
[[email protected] ~]#
可以使用如下轉義字元
\a 發出警告聲;
\b 删除前一個字元;
\c 最後不加上換行符号;
\f 換行但光标仍舊停留在原來的位置;
\n 換行且光标移至行首;
\r 光标移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字元;
\nnn 插入nnn(八進制)所代表的ASCII字元;
[[email protected] ~]# echo "hello\fworld"
hello\fworld
[[email protected] ~]# echo -e "hello\fworld"
hello
world
[[email protected] ~]# echo "hello\vworld"
hello\vworld
[[email protected] ~]# echo -e "hello\vworld"
hello
world
[[email protected] ~]#
示例五 輸出到标準錯誤輸出
在編寫腳本時,經常會利用管道将前一個指令的輸出作為後一個指令的輸入,如果要列印調試資訊,但不把該資訊幹擾後面的指令,可以将調試資訊輸出到标準錯誤輸出,如下所示。
[[email protected] ~]# echo hello >&2
hello
[[email protected] ~]#
下面是一個應用此技巧的腳本片段。
# usage: proc_cmd
proc_cmd()
{
CMD=$1
NUM=$(get_estimate_count $CMD)
# 隻有傳回數值的時候才列印資訊,否則出錯了
if [ "$NUM" ]; then
printf "%-48s\t%16s\n" $CMD $NUM
else
echo $CMD >&2
echo $CMD >>failed.dat
fi
}
問題思考
1. 将要輸出的資訊放在單引号、雙引号以及不放在引号中有什麼差別?
2. 怎樣輸出彩色文字(如同ls時的效果)?
相關資料
【1】飛諾網 linux echo 用法
【2】360doc linux指令 echo(轉載)
傳回 我使用過的Linux指令系列總目錄