linux shell下常用輸入輸出操作符是:
1. 標準輸入 (stdin) :代碼為 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
2. 標準輸出 (stdout):代碼為 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
3. 標準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr
輸出重定向
“>”和“>>”用于重定向標準輸出
command [1-n] > file或文件操作符或設備
上面命令意思是:將一條命令執行結果(標準輸出,或者錯誤輸出,本來都要打印到屏幕上面的) 重定向其它輸出設備(文件,打開文件操作符,或打印機等等)1,2分別是標準輸出,錯誤輸出。
1) 可以省略,不寫,默認所至標準輸出
student@student-VirtualBox:/tmp$ ls text.sh
ls: 無法訪問text.sh: 沒有那個文件或目錄
"2>"和“2>>”用于重定向標準輸出
2)把錯誤輸出,不輸出到屏幕,輸出到t1.txt
student@student-VirtualBox:/tmp$ ls text.sh 2>t1.txt
student@student-VirtualBox:/tmp$ cat t1.txt
ls: 無法訪問text.sh: 沒有那個文件或目錄
3) 繼續追加把輸出寫入t1.txt “>>”追加操作符
student@student-VirtualBox:/tmp$ cat t1.txt
ls: 無法訪問text2.sh: 沒有那個文件或目錄
student@student-VirtualBox:/tmp$ ls text3.sh 2>>t1.txt
student@student-VirtualBox:/tmp$ cat t1.txt
ls: 無法訪問text2.sh: 沒有那個文件或目錄
ls: 無法訪問text3.sh: 沒有那個文件或目錄
"&>"同時重定向標準輸出及標準錯誤輸出
特殊設備文件: /dev/null
/dev/null 這個設備,是linux 中黑洞設備,什么信息只要輸出給這個設備,都會給吃掉
student@student-VirtualBox:~$ ls -ldh /etc/ &> /dev/null
注意:
1、shell遇到”>”操作符,會判斷右邊文件是否存在,如果存在就先刪除,并且創建新文件。不存在直接創建。 無論左邊命令執行是否成功。右邊文件都會變為空。
2、“>>”操作符,判斷右邊文件,如果不存在,先創建。以添加方式打開文件,會分配一個文件描述符[不特別指定,默認為1,2]然后,與左邊的標準輸出(1)或錯誤輸出(2) 綁定。
3、當命令:執行完,綁定文件的描述符也自動失效。0,1,2又會空閑。
4、一條命令啟動,命令的輸入,正確輸出,錯誤輸出,默認分別綁定0,1,2文件描述符。
5、一條命令在執行前,先會檢查輸出是否正確,如果輸出設備錯誤,將不會進行命令執行
輸入重定向
command-line [n] <file或文件描述符&設備
將然有,命令默認從鍵盤獲得的輸入,改成從文件,或者其它打開文件以及設備輸入。執行這個命令,將標準輸入0,與文件或設備綁定。將由它進行輸入
cat >file 記錄的是鍵盤輸入,相當于從鍵盤創建文件,并且只能創建新文件,不能編輯已有文件.
student@student-VirtualBox:/tmp$ cat > catfile
test
hello,word
#這里按下 [ctrl]+d 離開
#從標準輸入【鍵盤】獲得數據,然后輸出給catfile文件
student@student-VirtualBox:/tmp$ cat catfile
test
hello,word
student@student-VirtualBox:/tmp$ cat>catfile < t1.txt
student@student-VirtualBox:/tmp$ cat catfile
abcdef
# cat從catfile輸入數據,然后輸出給文件catfile
cat <<EOF,
cat命令是linux下的一個文本輸出命令,通常是用于觀看某個文件的內容的;
EOF是"end of file",表示文本結束符。
結合這兩個標識,即可避免使用多行echo命令的方式,并實現多行輸出的結果。
student@student-VirtualBox:/tmp$ cat>catfile <<eof
> test a file
> test
> haha!
> eof
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。