http://fhqdddddd.blog.163.com/blog/static/186991542012417104144188/
echo
使用echo命令可以顯示文本行或變數,或者把字串輸入到檔案。它的一般形式為:
echo string
echo命令有很多功能,其中最常用的是下面幾個:
\c 不換行。
\f 進紙。
\t 跳格。
\n 換行。
linux中使用轉義符時,需要使用-e參數,否則轉義符不生效
# echo -e “aaa \n bbb”
aaa
bbb
# echo “aaa \n bbb”
aaa \n bbb
可以用echo輸出系統變數,或者系統命令的結果
# echo “my home is : $HOME”
my home is : /root
# echo “The time is : `date`”
The time is : Sun Jun 13 13:03:47 CST 2010
注意date命令兩邊的符號不是單引號。
引號是一個特殊字元,所以必須要使用反斜線\來使shell忽略它的特殊含義
# echo “\”/dev/rmt0″\”
“/dev/rmt0″
read
使用r e a d語句從鍵盤或檔案的某一行文本中讀入資訊,並將其賦給一個變數。如果只指定了一個變數,那麼r e a d
將會把所有的輸入賦給該變數,直至遇到第一個檔案結束符或斷行符號。
read varible1 varible2 …
例如:
# read firstname lastname
Arthur MR Liu
# echo $firstname
Arthur
# echo $lastname
MR Liu
cat
cat是一個簡單而通用的命令,可以用它來顯示檔案內容,建立檔案,還可以用它來顯示控制字元。
cat命令的一般形式為:
cat [options] filename1 … filename2 …
cat命令最有用的選項就是:
-v 顯示控制字元
顯示檔案
$ cat myfile
建立檔案
$ cat > myfile
結束按< C T R L – D >
合并檔案
$ cat myfile1 myfile2 myfile3 > bigfile
管道
可以通過管道把一個命令的輸出傳遞給另一個命令作為輸入。管道用豎杠|表示。
命令1 |命令2
其中|是管道符號。
sed、awk和grep都很適合用管道,特別是在簡單的一行命令中。在下面的例子中, who命令的輸出通過管道傳遞給awk命令,以便只顯示使用者名稱和所在的終端。
# who | awk ‘{print $1″\t”$2}’
root pts/1
# df -k | awk ‘{print $1}’ | grep -v “Filesystem”
/dev/mapper/VolGroup00-LogVol00
8030648
/dev/sda1
tmpfs
tee
t e e命令作用可以用字母T來形象地表示,即水管中的三通。
# who | tee who.out
root pts/1 2010-06-13 11:45 (192.168.164.1)
# cat who.out
root pts/1 2010-06-13 11:45 (192.168.164.1)
標準輸入輸出
輸入檔案—標準輸入0
輸出檔案—標準輸出1
錯誤輸出檔案—標準錯誤2
為什麼會有一個專門針對錯誤的特殊檔案。這是由於很多人喜歡把錯誤單獨儲存到
一個檔案中,特別是在處理大的資料檔案時,可能會產生很多錯誤。
command > filename 把把標準輸出重新導向到一個新檔案中
command >> filename 把把標準輸出重新導向到一個檔案中(追加)
command 1 > fielname 把把標準輸出重新導向到一個檔案中
command > filename 2>&1 把把標準輸出和標準錯誤一起重新導向到一個檔案中
command 2 > filename 把把標準錯誤重新導向到一個檔案中
command 2 >> filename 把把標準輸出重新導向到一個檔案中(追加)
command >> filename 2>&1 把把標準輸出和標準錯誤一起重新導向到一個檔案中(追加)
command < filename >filename2 把command命令以f i l e n a m e檔案作為標準輸入,以f i l e n a m e 2檔案為標準輸出
command < filename 把command命令以f i l e n a m e檔案作為標準輸入
command << delimiter 把從標準輸入中讀入,直至遇到d e l i m i t e r分界符
command <&m 把把檔案描述符m作為標準輸入
command >&m 把把標準輸出重新導向到檔案描述符m中
command <&- 把關閉標準輸入
cat passwd | awk -F: ‘{print $1}’ | sort >sort.out
root將收到一個郵件,其中含有檔案contents.txt中的內容:
#mail root < contents.txt
重新導向操作符command << delimiter是一種非常有用的命令,通常都被稱為“此處”文擋。
shell將分界符d e l i m i t e r之後直至下一個同樣的分界符之前的所有內容都作為輸入,遇到下一個分界符,
shell就知道輸入結束了# cat >> myfile1 << EOF
> aaa
> bbb
> ccc
> eof
> EOF
# cat myfile1
aaa
bbb
ccc
eof
# grep “standard” > grep.out 2>&1
在上面的例子中, grep命令的標準輸出和標準錯誤都被重新導向到grep.out檔案中
exec
exec命令可以用來替代當前shell
exec命令的一個常見用法就是在使用者的.profile最後執行時,用它來執行一些用於增強安全性的指令碼。
檔案描述符
可以理解為檔案的代號
# vi readtest
exec 4<&0 0<myfile1
read line1
read line2
exec 0<&4
echo $line1
echo $line2
# cat myfile1
aaa
bbb
ccc
eof
# chmod 744 readtest
# ./readtest
aaa
bbb