重定向

Linux下定義了三種I/O設備:

標準輸入(STDIN):用0表示,默認的標準輸入設備是鍵盤;

標準輸出(STDOUT):用1表示,默認的標準輸出設備是當前終端;

標準錯誤(STDERR):用2表示,默認的標準錯誤輸出設備是當前終端;

I/O重定向即改變默認的位置

1 標準輸出重定向

(1)將標準輸出重定向到其他終端

重定向

重定向

/dev/pts/1代表偽終端1,在偽終端1執行hostname命令(查看主機名),并將其重定向至偽終端2。

(2)將標準輸出重定向到文件

重定向

cal命令用于查看日歷,cal 2017 > /app/cal.log 將2017年的日歷重定向到app目錄下的cal.log文件。

總結: hostname與cal 2017 都是可正確執行的命令,若不重定向,會產生標準輸出,即將兩命令執行的結果輸出到當前終端,所以a、b中實際上都省略了1,即寫成hostname 1> /dev/pts2或cal 2017 1> /app/cal.log 也可以,因為1代表標準輸出,>是重定向符號。

2 標準錯誤重定向

重定向

在根目錄下不存在err文件或目錄,所以ls  /err的結果是標準錯誤:

若不重定向,會將其結果輸出至當前終端,如(1)所示;ls  /err 1>/app/err.log 中的1>表示將標準輸出重定向至/app/err.log,但是ls /err執行的結果只有標準錯誤,沒有標準輸出,由于未對標準錯誤重定向,所以仍然將標準錯誤重定向至當前終端,如(2)所示;

ls  /err 2>/app/err.log中的2表示標準錯誤,該命令實現了將標準錯誤重定向至/app/log文件,所以沒有在當前終端打印錯誤提示,而是將錯誤提示保存到/app/log文件中,如(3)所示。

3 既有標準輸出, 又有標準錯誤,將二者重定向至同一文件

重定向

ls /boot的執行結果是正確的,若不重定向,會將其結果輸出至當前終端,如(1)所示;

ls /err的執行結果是錯誤的,若不重定向,也會將其結果輸出至當前終端,如(2)所示;

重定向

(1)ls /boot /err > /app/all.log 2>&1中的2>&1表示將標準錯誤轉化為標準輸出,然后>將轉化后所得的標準輸出重定向到/app下的all1.log文件,如(1)所示;

(ls /boot /err 2>&1) > /app/all1.log 與ls /boot /err > /app/all.log 2>&1等價,如(2)所示。

重定向

(2)ls /boot /err 2> /app/all3.log 1>&2 中的1>&2表示將標準輸出轉化為標準錯誤,然后2>將轉化后所得的標準錯誤重定向到/app下的all3.log文件,如(1)所示;

(ls /boot /err 1>&2) 2> /app/all4.log與ls /boot /err 2> /app/all3.log 1>&2等價,如(2)所示。

重定向

(3) ls /boot /err &> /app/all5.log中的&>表示將標準輸出和標準錯誤合并為同一個數據流后再進行重定向,如(1)所示;

  ls /boot /err >& /app/all5.log /app/all5.log與 ls /boot /err &> /app/all5.log等價,如(2)所示。

4 標準輸入重定向

重定向

cat命令用于查看文本文件,既有標準輸入又有標準輸出。輸入cat并回車后光標會移至下一行等待接收來自鍵盤的標準輸入,并將其輸出至標準輸出設備即當前終端。圖中黃色線條標識部分即cat的標準輸出。

重定向

cat  /etc/issue命令用于查看/etc/issue文件的內容,其中定義了系統登錄成功后的提示信息。用/etc/issue文件代替鍵盤做標準輸入,即cat從/etc/issue接收標準輸入,然后輸出至標準輸出即當前終端。

重定向

用/etc/issue文件代替鍵盤做標準輸入,即cat從/etc/issue接收標準輸入,然后將標準輸出重定向到/app/issue文件,所以 cat < /etc/issue > /app/issue執行完后當前終端不顯示任何內容,用 cat  /app/issue 可查看重定向到該文件下的內容。

原創文章,作者:以夢為馬,如若轉載,請注明出處:http://www.www58058.com/83461

(1)
以夢為馬以夢為馬
上一篇 2017-07-31
下一篇 2017-07-31

相關推薦

  • yum使用及編譯安裝

    前端程序包管理器     CentOS:yum,dnf     YUM:Yellowdog update Modifier     URL:ftp:// . . .     文件服務器:  …

    Linux干貨 2016-08-24
  • Centos 系列bind搭建DNS服務加固

        在centos系列版本上運用bind搭建dns服務教程已經有很多,先感謝前人做出的貢獻,引用兩篇博文,講解的非常詳細。 地址是: 主dns搭建:http://blog.csdn.net/reblue520/article/details/52537014 從dns搭建:http://blog.csdn.net/reblue520/…

    Linux干貨 2017-04-16
  • openssl&openssh

    安全和加密 不加密流量的易受攻擊性       密碼/數據嗅探       數據操作       驗證操作       相當于郵寄明信片 不安全的傳統協議       telnet、FTP、POP3等等;不安全…

    Linux干貨 2016-09-26
  • 文件查找(Find和Locate)常用用法及摩根定律趣解(重要)

    文件查找(Find和Locate)常用用法及摩根定律趣解(重要) 摩根定律: 非(A 且 B)=(非 A)或(非 B) 非(A 或 B)=(非 A)且(非 B) 這樣看起來不是很好理解下面通過一些列圖片給大家展示; 圖(1)  圖(2)  圖二中的黑色就A且B,A且B的反面三種情況(如圖1)即為(非A)或(非B)。因此…

    Linux干貨 2016-08-21
  • linux上的組管理

    上一次我們談了CentOS上的用戶管理,現在我們再來談下CentOS上的用戶組管理。 groupadd創建一個新的組 用法如下: groupadd [選項] groupname 常用選項: -f 強制添加一個組(這個組可能已經存在系統中) -g 指定組的id; -r 創建系統工作組(系統工作組的組ID小于500) -K 覆蓋配置文件/ect/log…

    Linux干貨 2017-04-09
  • FHS文件系統各目錄功能

        FHS文件系統各目錄功能 前言                  FHS (Files system Hiserarchy Standard)…

    Linux干貨 2016-10-17
欧美性久久久久