IO重定向和管理及管道

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

(1)
ladsdmladsdm
上一篇 2016-08-05 10:17
下一篇 2016-08-05 10:17

相關推薦

  • 優云軟件:雙態運維下,老司機是怎么玩CMDB的?

    行業內有個科技公司,CMDB前后建設12年,重構了N次,一言不合就重構,我深深的被這種屢拆屢戰,初心不改精神所折服。我真心想問下做CMDB的兄弟,各位是怎么熬過來的?請不要回避,其實我們都曾被這樣虐過! 近幾年我司承建國內很多傳統行業的CMDB項目,坦白的說,隨著互聯網+熱潮的沖擊,因很多傳統企業也慢慢的在轉變業務,把很多傳統型的業務互聯網化,或者開辟新型業…

    2016-08-05
  • centos6開機啟動流程以及系統服務配置管理

    內容:   CentOS6 的啟動流程   服務管理(chkconfig)   手動制定系統開機服務腳本 一、centos6系統啟動流程 綜述過程: POST–>BIOS(Boot Sequence)–>MBR(grub,446)–>Kernel–>init…

    Linux干貨 2016-09-08
  • 0806文本處理工具

    ———- 文件查看工具 ———- cat:    cat [OPTION]… [FILE]…   //查看文本文件內容,一般后面跟文件名(相對路徑),或者是文件名(絕對路徑) -n 加行號 -b 加行號,…

    Linux干貨 2016-08-07
  • 千萬不要把 bool 設計成函數參數

    我們有很多Coding Style 或 代碼規范。但這一條可能會經常被我們所遺忘,就是我們經常會在函數的參數里使用bool參數,這會大大地降低代碼的可讀性。不信?我們先來看看下面的代碼。 當你讀到下面的代碼,你會覺得這個代碼是什么意思? widget->repaint(false); 是不要repaint嗎?還是別的什么意思?看了文檔后,我們才知道這個…

    Linux干貨 2016-07-10
  • ?從實驗來了解grub

    實驗一為grub設置密碼 先看一看grub是怎么樣的 grub有兩個版本 grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2  Note:grub 1.x是完全重寫的只不過是保留grub 0.x的工作機制。 2.利用grub自帶命令生成密碼grub-md5-cry…

    Linux干貨 2016-06-09
  • 0804練習與作業

    0804練習與作業 練習  1 、找出ifconfig 命令結果中本機的所有IPv4 地址 答: 使用cut將電腦的IP地址提取出來。   經過觀察,這些信息極為不規則,沒有明顯的分隔符。這時們需要首先提取出IP地址所在的行,然后去定義一個合適的分隔符,再利用cut進行提取即可。(思路:化繁為簡,化不規則為規則,這樣才能更好的套用我們的命…

    Linux干貨 2016-08-08
欧美性久久久久