歡迎您光臨本站 註冊首頁

shell-輸入和輸出-shell編程筆記3

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
1、 echo命令可以顯示文本行或變數,或者把字元串輸入到文件. echo [option] string --命令格式 -e 解析轉義字元 -n 回車不換行,linux系統默認回車換行 轉義符(c,f,t,n) 例子:關於echo的腳本,注意觀察其中的字元和參數的使用. #!/bin/bash #echod echo -e "This echo's 3 new linesnnn" echo "OK" echo echo "This echo's 3 new linesnnn" echo "The log files have all been done">mylogfile.txt 執行這個腳本的結果應該是: #./echod This echo's 3 new lines OK This echo's 3 new linesnnn 和mylogfile.txt文件中的:The log files have all been done 2、 read語句可以從鍵盤或文件的某一行文本中讀入信息,並將其賦給一個變數. read varible1 varible2 ……命令格式 如果只指定了一個變數,那麼read將會把所有的輸入賦給該變數,直至遇到第一個文件結束符或回車;如果給出了多個變數,它們按順序分別被賦予不同的變數.Shell將用空格作為變數之間的分隔符. 例子:關於read的腳本: #!/bin/bash #readname echo -n "First name :" read Firstname echo -n "Last name :" read Lastname Subname Thirdname echo -e "Your firstname is:${Firstname}n" echo -e "Your lastname is:${Lastname}n" echo -e "Your subname is:${Subname}n" echo -e "Your Thirdname is:${Thirdname}n" 3、 cat是一個簡單而且通用的命令,可以用它來顯示文件內容、創建文件,還可以用它來顯示控制字元. Cat [option] filename1 filename2 ……命令格式 -v 顯示控制字元 使用cat命令時要注意,它不會再文件分頁符處停下來;他會一下顯示完整個文件.如果希望每次顯示一頁,可以用more命令或把cat命令的輸出通過管道傳遞到另外一個具有分頁功能的命令(more,less)中. Man cat 列子:#cat myfile #cat mafile1 myfile2 myfile3 #cat mafile1 myfile2 myfile3 >myfile #cat –v dos.txt 4、 管道 ( | )可以把一個命令的輸出傳遞給另一個命令作為輸入. 格式:command1 | command2 例子:#cat myfile | more #ls –l | grep 「myfile」 #df -k | awk '{print $1}' | grep -v "Filesystem" | tee [-a] partation.txt 5、 tee 命令把輸出的一個副本輸送到標準輸出,另一個副本拷貝到相應的文件中. tee –a files--------命令格式 ---如果希望看到輸出的同時,也將其存入一個文件,那麼這個命令再合適不過了. ---一般用於管道之後. 例子:#who | tee –a who.out -a 這個參數是追加的意思,不加的話直接覆蓋原有文件. # df -k | awk '{print $1}' | grep -v "Filesystem" | tee [-a] partation.txt 6、 標準輸入、輸出和錯誤:在shell中執行命令時,每個進程都和三個打開的文件相聯繫,並使用文件描述符來引用這些文件.由於文件描述符不容易記憶,shell同時也給出了相應的文件名.

文件 文件描述符
輸入文件—標準輸入 0(預設時鍵盤,也可以是文件或其他命令的輸出)
輸出文件—標準輸出 1(預設時屏幕,也可以是文件)
錯誤輸出文件—標準錯誤 2(預設時屏幕,也可以是文件)
系統中實際上有12個文件描述符,可以任意使用文件描述符3到9. 7、 文件重定向:改變程序運行的輸入來源和輸出地點.

Command > filename 把標準輸出重定向到一個新文件中
Command >> filename 把標準輸出重定向到一個新文件中(追加)
Command 1 > filename 把標準輸出重定向到一個文件中
Command > filename 2>&1 把標準輸出和標準錯誤一起重定向到一個文件中
Command 2 > filename 把標準錯誤重定向到一個文件中
Command 2 >> filename 把標準錯誤重定向到一個文件中(追加)
Command >> filename 2>&1 把標準輸出和標準錯誤一起重定向到一個文件中(追加)
Command < filename > filename2 Command命令以filename文件作為標準輸入,以filename2作為標準輸出
Command < filename Command命令以filename文件作為標準輸入
Command << delimiter 從標準輸入中讀入,直至遇到delimiter分界符
Command <&m 把文件描述符m作為標準輸入
Command >&m 把標準輸出重定向到文件描述符m中
Command <& 關閉標準輸入
例子:#cat file | sort 1 > sort.out 等同於#cat file | sort > sort.out #pwd >> path.out #>nullfile.txt 清空文件nullfile.txt 也可以理解為創建一個空文件. #sort < file #sort < name.txt > name.out #cat >>term.txt<<CHINAITLAB >Hello,there I am using a $TERM terminal >and my username is $LOGNAME >bye... >CHINAITLAB //這個命令是delimiter的相關用法和追加的例子 #cat term.txt #grep 「trident」 missiles 2 > /dev/null //標準錯誤的輸出 8、 結合使用標準輸出和標準錯誤 例子:#cat account_new.txt account_old.txt 1 > account.out 2 > account.err #cat account.out #cat account.err //這個例子假設account_new.txt存在,而account_old.txt不存在 9、 合併標準輸出和標準錯誤:合併標準輸出和標準錯誤的時候,切記shell是從左至右分析相應的命令的. 例子:#grep 「standard」 standard.txt > grep.out 2 >&1 //不管怎麼樣,結果都輸出到grep.out這個文件中. 10、 exec命令可以用來替代當前shell;換句話說,並沒有啟動子shell,使用這一命令時任何現有環境都會被清除,並重新啟動一個shell. exec command //其中的command通常是一個shell腳本 --對文件描述符進行操作的時候(也只有在這時),它不會覆蓋當前的shell. 例子:#exec ./helloword.sh //實驗一下 ,hellword.sh是一個腳本 11、 文件描述符 --3-9文件描述符,exec與文件描述符的結合 例子:#!/bin/bash #file_desc exec 3<&0 0<name.txt // exec 3<&0打開文件描述符 read line1 read line2 exec 0<&3 //關閉文件描述符 echo $line1 echo $line2 //編輯一個這樣的腳本測試exec與文件描述符的結合是否會覆蓋當前的shell.


[火星人 ] shell-輸入和輸出-shell編程筆記3已經有779次圍觀

http://coctec.com/docs/linux/show-post-49186.html