IO重定向
通常對程序來講,輸入輸出數據可以是鍵盤、鼠標、顯示器等;IO重定向就是將原來系統命令的默認執行方式進行改變,比如說簡單的我不想看到在顯示器輸出而是希望輸入到某以文件中的可以通過Linux重定向進行這項工作。
IO重定向和FD(File Descriptor)有關。
標準輸入(stdin): 0 默認是鍵盤
標準輸出(stdout): 1 默認是顯示器
標準錯誤輸出(stdeer): 2 默認是顯示器
標準輸出重定向格式
COMMAND 1>FILE.OUT COMMAND 1>>FILE.OUT
1>:覆蓋標準輸出重定向,輸出到一個已存的文件,之前的文件會被清除覆蓋 1(可以不加)
1>>:追加標準輸出重定向,輸出到目標文件,目標文件匯總的原有文件會被刪除
標準錯誤輸出重定向格式
COMMAND 2>FILEERR.OUT COMMAND 2>>FILEERR.OUT
[root@localhost testdir]# cp /etc/issue ./ #復制一個文件做實驗 [root@localhost testdir]# echo "overwrite file " >issue #覆蓋重定向到文件中 [root@localhost testdir]# cat issue overwrite file #之前的新加的覆蓋 [root@localhost testdir]# echo "add newline context" >>issue #追加到尾行 [root@localhost testdir]# cat issue overwrite file add newline context #輸如的加到尾行
2>:覆蓋標準錯誤輸出重定向,輸出到目標文件,目標文件匯總的原有文件會被刪除
2>>:追加標準錯誤輸出重定向,輸出到目標文件,新內容追加到目標文件的尾部
[root@localhost testdir]# cp /etc/fstab ./ #復制來做實驗 [root@localhost testdir]# cat fstab #查看源文件內容 # # /etc/fstab # Created by anaconda on Tue Jul 26 08:01:18 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=62e9e57b-3452-4314-8567-85566ca642dc / xfs defaults 0 0 UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot xfs defaults 0 0 UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr xfs defaults 0 0 UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap swap defaults 0 0 [root@localhost testdir]# cat /etcccc 2>fstab #標準錯誤覆蓋輸如 [root@localhost testdir]# cat fstab cat: /etcccc: No such file or directory #只有錯誤輸出提示 [root@localhost testdir]# ca /etc/ifconfig 2>>fstab #追加錯誤輸出 [root@localhost testdir]# cat fstab cat: /etcccc: No such file or directory -bash: ca: command not found #追加到尾行
標準輸出和錯誤輸出各自不同的位置
COMMAND > /PATH/TO/FILE.OUT 2>/PATH/TO/ERR.OUT
COMMAND >>/PATH/TO/FILE.OUT 2>>/PATH/TO/ERR.OUT
[root@localhost testdir]# cp /etc/issue.net /etc/issue ./ #復制實驗文件 [root@localhost testdir]# cat /etc/issue issue.net #查看原內容 \S Kernel \r on an \m Mage Education Learning Services http://www.magedu.com \S Kernel \r on an \m [root@localhost testdir]# cat /etc/centos-release /ssdd >issue 2>issue.net #標準輸出和錯誤輸出到不同位置 [root@localhost testdir]# cat issue #標準輸出顯示 CentOS Linux release 7.2.1511 (Core) [root@localhost testdir]# cat issue.net #錯誤輸出顯示 cat: /ssdd: No such file or directory
合并標準輸出和錯誤輸出為同一個數據流進行定向
&>:覆蓋重定向
&>>:追加重定向
COMMAND> /PATH/TO/FILEOUT 2>&1
COMMAND>>/PATH/TO/FILEOUT 2>>&1
COMMAND &>/PATH/TO/FILEOUT
COMMAND &>>/PATH/TO/FILEOUT
root@localhost testdir]# cp /etc/redhat-release ./ #復制文件做實驗 [root@localhost testdir]# cat /etc/fstab /eqd >redhat-release 2>&1 #合并輸入到同一文件 (固定格式不得更改) [root@localhost testdir]# cat redhat-release # # /etc/fstab #顯示合并輸出文件 # Created by anaconda on Tue Jul 26 08:01:18 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=62e9e57b-3452-4314-8567-85566ca642dc / xfs defaults 0 0 UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot xfs defaults 0 0 UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr xfs defaults 0 0 UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap swap defaults 0 0 cat: /eqd: No such file or directory #錯誤輸入在尾行 [root@localhost testdir]# cp /etc/fstab ./ #另一種合并輸出 [root@localhost testdir]# cat /etc/fstab a123fd &>>fstab [root@localhost testdir]# cat fstab # # /etc/fstab # Created by anaconda on Tue Jul 26 08:01:18 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=62e9e57b-3452-4314-8567-85566ca642dc / xfs defaults 0 0 UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot xfs defaults 0 0 UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr xfs defaults 0 0 UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap swap defaults 0 0 # # /etc/fstab # Created by anaconda on Tue Jul 26 08:01:18 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=62e9e57b-3452-4314-8567-85566ca642dc / xfs defaults 0 0 UUID=bb3ff6b4-e9c3-4090-b968-5affdb57782e /boot xfs defaults 0 0 UUID=366cf2a1-0923-4d99-bc20-35d93082ac3a /usr xfs defaults 0 0 UUID=58be63b5-585a-49e7-a8c2-b9b49cf44860 swap swap defaults 0 0 cat: a123fd: No such file or directory
合并多個命令輸出 :()
[root@localhost testdir]# (cal 8 2016;cal 12 2016) >day.txt #多命令輸出 [root@localhost testdir]# cat day.txt #查看輸出結果 August 2016 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #輸出結果 21 22 23 24 25 26 27 28 29 30 31 December 2016 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
標準輸入重定向,
COMMAND> FILE.OUT<FILEIN.IN :把標準輸入覆蓋到標準輸出中
COMMAND <<EOF <<標準輸入結束符
[root@localhost ~]# ls -a . .bashrc Downloads Music Templates .. .cache .esd_auth Pictures Videos anaconda-ks.cfg .config .gstreamer-0.10 Public .viminfo .bash_history .cshrc .gtkrc-2.0-kde4 qwe .Xauthority .bash_logout Desktop .kde .ssh .bash_profile Documents .local .tcshrc [root@localhost ~]# cat >.bashrc <.bash_profile [root@localhost ~]# ll .bashrc .bash_profile -rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r--. 1 root root 176 Aug 4 22:14 .bashrc
管道
將一個命令的輸出當做另一命令的輸入!
格式 COMMAND1 |COMMAND2|COMMAND3
[root@localhost testdir]# cat /etc/issue |tr 'a-z' 'A-Z'# cat查看結果用tr轉換顯示 \S #轉換結果 KERNEL \R ON AN \M MAGE EDUCATION LEARNING SERVICES HTTP://WWW.MAGEDU.COM
原創文章,作者:ladsdm,如若轉載,請注明出處:http://www.www58058.com/29095