重定向

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 07:40
下一篇 2017-07-31 08:54

相關推薦

  • VIM入門及進階

    什么是VIM?     VIM類似于Vi編輯器, 它是一個功能強大、可高度定制的文本編輯器, 是一個純粹的自由軟件。注意:vi和vim不完全相同 為什么要使用VIM?     相信大多數人接觸Linux時使用的第一個文本編輯器都不是VIM,很多人看到VIM復雜的命令操作就望而祛步…

    系統運維 2016-03-04
  • N25-第三周作業

    第三周作業 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ~]#who | cut -d' ' -f 1 | sort | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 ~]#who |tail -1 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 ~]#cat…

    Linux干貨 2016-12-18
  • LAMP

    備注:本次安裝是采用的系統自帶的yum源進行安裝的 第一步:安裝Apache 1:安裝apache,命令如下: yum install?-y httpd   2:修改httpd.conf,修改ServerName的域名,具體步驟如下: 使用vi編輯器打開apache配置文件,命令如下: vi /etc/httpd/conf/httpd.conf 按…

    Linux干貨 2017-10-09
  • AWK——文本處理三劍客

    GNU awk ·文本處理三工具:grep,sed,awk          grep,egrep,fgrep:文本過濾工具:pattern          sed:行編輯器  &nbsp…

    Linux干貨 2016-09-20
  • Linux文件管理初步(第二周)

    第二周作業 1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 目錄管理管理類命令 mkdir make directories mkdir [OPTION]… DIRECTORY… 注意:路徑基名作為命令的作用對象時,基名之前的路徑必須要存在;     -p:自動按…

    Linux干貨 2016-09-05
  • 小巧精悍——常見文本處理工具用法及技巧總結

    小巧精悍——常見文本處理工具用法及技巧總結 Linux最重要的哲學思想就是:一切皆文件。可見文件及文件操作在Linux當中是多么的重要。在Linux系統中我們也會經常用到各種文本文件處理的操作,熟練使用這些小巧精悍的文本處理工具,在關鍵時刻往往展現非凡的神奇功效。常見文本處理小工具:cat、hexdump、nl、less、head、tail、cut、tr、r…

    Linux干貨 2016-11-05
欧美性久久久久