linux shell下常用輸入輸出操作符是:
1. 標(biāo)準輸入 (stdin) :代碼為 0 榆浓,使用 < 或 << 有额; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
2. 標(biāo)準輸出 (stdout):代碼為 1 ,使用 > 或 >> 伶贰; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
3. 標(biāo)準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>> 呼畸; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr
輸出重定向
“>”和“>>”用于重定向標(biāo)準輸出
command [1-n] > file或文件操作符或設(shè)備
上面命令意思是:將一條命令執(zhí)行結(jié)果(標(biāo)準輸出里初,或者錯誤輸出锅睛,本來都要打印到屏幕上面的) 重定向其它輸出設(shè)備(文件疚膊,打開文件操作符义辕,或打印機等等)1,2分別是標(biāo)準輸出,錯誤輸出寓盗。
1) 可以省略灌砖,不寫,默認所至標(biāo)準輸出
student@student-VirtualBox:/tmp$ ls text.sh
ls: 無法訪問text.sh: 沒有那個文件或目錄
"2>"和“2>>”用于重定向標(biāo)準輸出
2)把錯誤輸出傀蚌,不輸出到屏幕基显,輸出到t1.txt
student@student-VirtualBox:/tmp$ ls text.sh 2>t1.txt
student@student-VirtualBox:/tmp$ cat t1.txt
ls: 無法訪問text.sh: 沒有那個文件或目錄
3) 繼續(xù)追加把輸出寫入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: 沒有那個文件或目錄
"&>"同時重定向標(biāo)準輸出及標(biāo)準錯誤輸出
特殊設(shè)備文件: /dev/null
/dev/null 這個設(shè)備,是linux 中黑洞設(shè)備善炫,什么信息只要輸出給這個設(shè)備撩幽,都會給吃掉
student@student-VirtualBox:~$ ls -ldh /etc/ &> /dev/null
注意:
1、shell遇到”>”操作符箩艺,會判斷右邊文件是否存在摸航,如果存在就先刪除制跟,并且創(chuàng)建新文件。不存在直接創(chuàng)建酱虎。 無論左邊命令執(zhí)行是否成功。右邊文件都會變?yōu)榭铡?2擂涛、“>>”操作符读串,判斷右邊文件,如果不存在撒妈,先創(chuàng)建恢暖。以添加方式打開文件,會分配一個文件描述符[不特別指定狰右,默認為1,2]然后杰捂,與左邊的標(biāo)準輸出(1)或錯誤輸出(2) 綁定。
3棋蚌、當(dāng)命令:執(zhí)行完嫁佳,綁定文件的描述符也自動失效。0,1,2又會空閑谷暮。
4蒿往、一條命令啟動,命令的輸入湿弦,正確輸出瓤漏,錯誤輸出,默認分別綁定0,1,2文件描述符颊埃。
5蔬充、一條命令在執(zhí)行前,先會檢查輸出是否正確班利,如果輸出設(shè)備錯誤饥漫,將不會進行命令執(zhí)行
輸入重定向
command-line [n] <file或文件描述符&設(shè)備
將然有,命令默認從鍵盤獲得的輸入肥败,改成從文件趾浅,或者其它打開文件以及設(shè)備輸入。執(zhí)行這個命令馒稍,將標(biāo)準輸入0皿哨,與文件或設(shè)備綁定。將由它進行輸入
cat >file 記錄的是鍵盤輸入,相當(dāng)于從鍵盤創(chuàng)建文件,并且只能創(chuàng)建新文件,不能編輯已有文件.
student@student-VirtualBox:/tmp$ cat > catfile
test
hello,word
#這里按下 [ctrl]+d 離開
#從標(biāo)準輸入【鍵盤】獲得數(shù)據(jù)纽谒,然后輸出給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輸入數(shù)據(jù)证膨,然后輸出給文件catfile
cat <<EOF,
cat命令是linux下的一個文本輸出命令,通常是用于觀看某個文件的內(nèi)容的鼓黔;
EOF是"end of file"央勒,表示文本結(jié)束符不见。
結(jié)合這兩個標(biāo)識,即可避免使用多行echo命令的方式崔步,并實現(xiàn)多行輸出的結(jié)果稳吮。
student@student-VirtualBox:/tmp$ cat>catfile <<eof
> test a file
> test
> haha!
> eof
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者