天天看點

我使用過的Linux指令之echo - 顯示文本、列印資訊我使用過的Linux指令之echo - 顯示文本、列印資訊

我使用過的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指令系列總目錄

繼續閱讀