1、標準輸入和標準輸出
程序:指令+數據
讀入數據:input
輸出數據:output
Linux給程序提供了三種I/0設備:
標準輸入(stdin)—0 默認接受來自鍵盤的輸入;
標準輸出(stdout)–1 默認輸出到終端窗口;
標準錯誤(stderr)—2 默認輸出到終端窗口;
I/O重定向:改變默認位置;
Stdout和stderr可以被重定向到文件:
命令 操作符號 文件名
> 把stdout重定向到文件,會覆蓋原有文件;
>>把stdout重定向到文件,在原有文件上追加,不覆蓋;
2>把stderr重定向到文件,會覆蓋原有文件;
2>>把stderr重定向到文件,在原有文件上追加,不覆蓋;
&> (2>&1)把正確輸出和錯誤輸出都重定向到文件,會覆蓋原有文件;
&>> (2>>&1)把正確輸出和錯誤輸出都追加重定向到文件,不覆蓋原有文件;
():合并多個程序的stdout
例:(cal 2007;cal 2008)> all.txt
為了防止重定向誤覆蓋原有文件,可以使用set 命令禁止將內容覆蓋:
set -c :禁止重定向內容覆蓋已有文件,但可追加;
強制覆蓋使用 >|
set -c:解除重定向覆蓋原有文件,允許覆蓋;
2、tr命令:
tr [OPTION]… SET1 [SET2]
-c:取字符集的補集;
-d:–delete:刪除所有屬于第一字符集的字符;
-s:把連續重復的字符以單獨一個字符表示;
-t:–truncate-set1:將第一個字符集對應的字符轉化為第二個字符集對應的字符;
3、從文件中導入stdin
使用 < 來重定向標準輸入
例:tr ‘a-z’ ‘A-Z’ < /etc/issue該命令把/etc/issue中的小寫字母轉換成大寫字母;
tr -d abc < /etc/fstab 刪除fatab文件中的所有abc中任意字符;
[root@centos6 ~]# cat > filea
nihao
linux
haha
按ctrl+d離開,可以使用文件代替鍵盤輸入;
使用 “<<終止詞”命令從鍵盤把多行重定向給stdin,直到終止詞位置的所有文件都發送給stdin
例:[root@centos6 ~]#mail -s -u aa <<end
nihao aa
haha
end
輸入end回車郵件就會發送;
4、管道:
管道(使用符號 | 表示)用來連接命令:
命令1 | 命令2 |命令3 | …….
將命令1的stdout發送給命令2的stdout,由命令2的stdout發送到命令3的stdout;
Stderr默認不能通過管道轉發,可以利用2>&1或|&實現;
命令1 | tee 文件名 | 命令2
例:ls |tee a1.txt | grep -i ^a
把命令1的stdout保存到文件中,然后管道再輸入給命令2;
原創文章,作者:zhengyibo,如若轉載,請注明出處:http://www.www58058.com/27472