檔案描述符是和檔案的輸入、輸出相關聯的非負整數,linux核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。常見的檔案描述符是stdin、stdout和stderr。
重定向將輸入文字通過擷取模式儲存到檔案:
echo "this is a text line one" > test.txt寫入到檔案之前,檔案內容首先會被清空。
重定向將輸入文字通過追加模式儲存到檔案:
echo "this is a text line one" >> test.txt寫入到檔案之後,會追加到檔案結尾。
標準錯誤輸出:
[root@localhost text]# cat linuxde.net標準錯誤輸出的重定向方法:cat: linuxde.net: no such file or directory
方法一:因為錯誤資訊被儲存到了out.txt檔案中。[root@localhost text]# cat linuxde.net 2> out.txt //沒有任何錯誤提示,正常執行。
方法二:
[root@localhost text]# cat linuxde.net &> out.txt
[root@localhost text]# cat linuxde.net 2> /dev/null將錯誤輸出丟棄到
/dev/null
中,/dev/null是乙個特殊的裝置檔案,這個檔案接受到任何資料都會被丟系,通常被稱為位桶、黑洞。
tee命令可以將資料重定向到檔案,另一方面還可以提供乙份重定向資料的副本作為後續命令的stdin。
在終端列印stdout同時重定向到檔案中:
ls | tee out.txt1.sh
1.txt
2.txt
eee.tst
eee.tst
oneout.txt
string2
www.pdf
www.pdf
www.pef
[root@localhost text]# ls | tee out.txt | cat -n1 1.sh
2 1.txt
3 2.txt
4 eee.tst
5 eee.tst
6 one
7 out.txt
8 string2
9 www.pdf
10 www.pdf
11 www.pef
#!/bin/bash在cat
this is a text line1
this is a text line2
this is a text line3
eof
cat 與下乙個eof
行之間的所有文字都會當作stdin資料輸入到text.log中。
除了0、1和2分別是stdin、stdout和stderr的系統預留描述符,我們還可以使用exec命令
建立自定義檔案描述符,檔案的的開啟模式有唯讀模式、截斷模式和追加模式。
< 操作符用於從檔案中讀取至stdin:
echo this is a test line > input.txt這裡需要注意只能讀取一次,如果再次使用需要重新建立檔案描述符。exec 3在命令中使用檔案描述符3:
cat
this is a test line
> 操作符用於截斷模式的檔案寫入(資料在檔案內容被截斷之後寫入):
exec 4>output.txt>> 操作符用於追加模式的檔案寫入(新增資料到檔案中,原有資料不會丟失):exec 5>>output.txtecho this is a new line >&4
cat output.txt
this is a new line
cat output.txt
this is a new line
從鍵盤獲取輸入的方式
c 本身沒有直接定義輸入或輸出語句,是通過標準庫提供的,包含在中,即c 的輸入輸出功能是通過流物件進行的。cin 丟掉結束符 c 中,cin 表示從鍵盤輸入,需要注意以下問題 1.cin以空格 換行 tab鍵分割,每次僅讀取乙個 2.按下回車後,輸入內容被壓到緩衝區,同時結尾加上 n 的識別符號 3...
從標準輸入行讀取輸入行並在標準輸出中列印這些輸入行
include include include define max cols 20 所處理的最大列號 define max input 1000 每個輸入行的最大長度 int read column numbers int columns,int max void rearrange char o...
009 shell中從標準輸入資訊
主要涉及到的乙個命令是read,使用示範 解釋 第3行的 n 提示輸入資訊輸出後不換行 第4行 讀入的資訊讀入到line 第7行 不同於第3行,這個輸出提示資訊後換行 第8行 讀取三個變數,讀取資訊以空格分開。回車表示輸入。幾個注意點 輸入比變數多的時候,多出來的資訊連同最後乙個賦值給最後乙個量 輸...