LINUX-Shell輸入與輸出__LINUX

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.