承接上一章介紹的command line, 這裡我們用echo這個命令加以進一步說明。
溫習 標準的
command line三個組成部分:command_name option argument
echo是一個非常簡單、直接的Linux命令:
$echo argument
echo將argument送出到標準輸出(stdout),通常是在監視器(monitor)上輸出。
Note:
在linux系統中任何一個進程默認打開三個文件:stdin、stdout、stderr.
stdin 標準輸入
stdout 標準輸出
stderr 標準錯誤輸出
為了更好理解,不如先讓我們先跑一下echo命令好了:
$echo
$
你會發現只有一個空白行,然後又回到了shell prompt上了。 這是因為echo在預設上,在顯示完argument之後,還會送出以一個換行符號 (new-line charactor). 但是上面的command echo並沒有任何argument,那結果就只剩一個換行符號。 若你要取消這個換行符號, 可以利用echo的-n 選項:
$echo -n
$
不妨讓我們回到command line的概念上來討論上例的echo命令好了: command line只有command_name(echo)及option(-n),並沒有顯示任何argument。
要想看看echo的argument,那還不簡單接下來,你可以試試如下的輸入:
$echo first line
first line
$echo -n first line
first line $
以上兩個echo命令中,你會發現argument的部分顯示在你的屏幕, 而換行符則視 -n 選項的有無而別。 很明顯的,第二個echo由於換行符被取消了, 接下來的shell prompt就接在輸出結果的同一行了... _。
事實上,echo除了-n 選項之外,常用選項有:
關於echo命令所支持的反斜槓控制字符如下表:
| 轉義字符 | 字符的意義 |
|---|---|
| \a | ALERT / BELL(從系統的喇叭送出鈴聲) |
| \b | BACKSPACE, 也就是向左退格鍵 |
| \c | 取消行末之換行符號 |
| \E | ESCAPE, 脫字符鍵 |
| \f | FORMFEED, 換頁字符 |
| \n | NEWLINE, 換行字符 |
| \r | RETURN, 回車鍵 |
| \t | TAB, 表格跳位鍵 |
| \v | VERTICAL TAB, 垂直表格跳位鍵 |
| \n | ASCII 八進制編碼(以x開頭的為十六進制),此處的n為數字 |
| \ | 反斜槓本身 |
Note: 上述表格的資料來自O'Reilly出版社的Learning the Bash Shell, 2nd Ed.
或許,我們可以通過實例來瞭解echo的選項及控制字符:
例一:
$ echo -e "a\tb\tc\n\d\te\tf"
a b c
d e f
$
上例中,用\t來分割abc還有def,及用\n將def換至下一行。
例二:
$echo -e "\141\011\142\011\143\012\144\011\145\011\146"
a b c
d e f
與例一中結果一樣,只是使用ASCII八進制編碼。
例三:
$echo -e "\x61\x09\x62\x09\x63\x0a\x64\x09\x65\x09\x66"
a b c
d e f
與例二差不多,只是這次換用ASCII的十六進制編碼。
例四:
$echo -ne "a\tb\tc\nd\te\bf\a"
a b c
d f $
因為e字母后面是退格鍵(\b),因此輸出結果就沒有e了。 在結束的時聽到一聲鈴響,是\a的傑作。 由於同時使用了-n選項,因此shell prompt緊接在第二行之後。 若你不用-n的話,那你在\a後再加個\c,也是同樣的效果。
事實上,在日後的shell操作及shell script設計上, echo命令是最常被使用的命令之一。 比方說,使用echo來檢查變量值:
$ A=B
$ echo $A
B
$ echo $?
0
Note: 關於變量的概念,我們留到以下的兩章跟大家說明。
好了,更多的關於command line的格式, 以及echo命令的選項, 請您自行多加練習、運用了...