Linux學習之數據重定向

大綱:

一、數據重定向定義

二、數據重定向分類

三、數據重定向作用

四、示例


一、數據重定向:命令的運行的結果默認輸出在監視器上,重定向就是把這個結果輸出到其它地方或其它文件。

二、數據重定向分類:

1.標準輸出: (standard output,簡稱stdout,代碼為 1 ,使用 > 或 >>):命令執行成功輸出的正確提示信息。

2.標準錯誤輸出 (standarp error output,簡稱stderr,代碼為 2 ,使用 2> 或 2>> ):命令執行失敗輸出的錯誤提示信息。

3.標準輸入(standard input,簡稱stdin,代碼為 0 ,使用 < 或 << ):鍵盤鍵入值。

三、作用:

1.保存屏幕輸出信息。

2.后臺運行的程序,不希望它顯示(例如:任務計劃中監控程序每個時間段采集數據命令,可以直接重定向為/dev/null)。

3.正確信息與錯誤信息分別輸出。

四、示例:

1.標準輸出: (standard output,簡稱stdout,代碼為 1 ,使用 > 或 >>):命令執行成功輸出的正確提示信息。

例1:查看/etc/inittab內容并重定向輸出至/tmp/inittab.test.

[root@localhost ~]# cat /etc/inittab > /tmp/inittab.test

通過ls命令查看,發現/tmp目錄下創建了inittab.test文件,且內容與/etc/inittab完全一致;由此可知,重定向輸出指定的文件如果不存在,則創建此文件。

[root@localhost ~]# ll /tmp/ | grep init
 
-rw-r--r--. 1 root root 884 Jun 19 23:52 inittab.test

例2:查看/etc/issue文件內容并把結果重定向至已存在的/tmp/inittab.test,你再次查看inittab.test,會發現文件內容已改變;由此可知:重定向輸出指定的位置如果已存在,則覆蓋。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test 
[root@localhost ~]# cat /tmp/inittab.test
CentOS release 6.5 (Final)
Kernel \r on an \m

例3:內容追加;查看/etc/inittab并把結果重定向追加至/tmp/inittab.test中,另外如果目標位置文件不存在,則創建。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test 
[root@localhost ~]# cat /tmp/inittab.test CentOS release 6.5 (Final) Kernel \r on an \m
.
.
.
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

2.標準錯誤輸出 (standarp error output,簡稱stderr,代碼為 2 ,使用 2> 或 2>> ):命令執行失敗輸出的錯誤提示信息。

例4:據例3可知,/tmp/inittab.test文件里面是有內容的,如下圖,我們再次把/etc/inittab重定向輸出/tmp/inittab.test,當我們不小心把命令敲錯了,把cat敲成了catt;cat一下,你會發現inittab.test里面沒有任何內容了;由此可知,如果輸出指定的文件已存在,

即使命令執行錯誤,也會清空目標文件內容。

[root@localhost ~]# catt /etc/inittab > /tmp/inittab.test 
-bash: catt: command not found 
[root@localhost ~]# cat /tmp/inittab.test 
[root@localhost ~]#
[root@localhost tmp]# sh hardcheck.sh &> out_file                 stdout、stderr合并輸出至out_file

例5:合并重定向;如下兩例,&表示合并的意思。

[root@localhost tmp]# sh hardcheck.sh > out_file 2> &1         stdout輸出至out_file,std_err輸出至stdout
[root@localhost tmp]# sh hardcheck.sh > /tmp/out_right 2>/tmp/out_err   
[root@localhost tmp]# cat /tmp/out_right 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
MemTotal: 1012352 kB 
[root@localhost tmp]# cat out_err 
hardcheck.sh: line 7: cd: /abd: No such file or directory 
[root@localhost tmp]#

例6:分別重定向:執行腳本,標準輸出重定向至/tmp/out_right;標準錯誤輸出重定向至/tmp/out_err;執行完成后,你會發現stdout、stderr已分別保存至/tmp/out_right、/tmp/out_err文件。

黑洞/dev/null,黑洞,故名思義,可以吞噬其范圍內的任何東西;如果我們把輸出指向/dev/null,自然而然,輸出會被吞噬。

例7:把std指向out_right,stderr指向/dev/null;就會發現stderr會部被丟棄了。

[root@localhost tmp]# sh hardcheck.sh > out_right 2> /dev/null 
[root@localhost tmp]# cat out_right 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
MemTotal: 1012352 kB 
[root@localhost tmp]#

3.標準輸入(standard input,簡稱stdin,代碼為 0 ,使用 < 或 << ):鍵盤鍵入值。

例8:把鍵盤輸入值保存到/tmp/in_file。

[root@localhost ~]# cat > /tmp/in_file   ==>in_file存在則覆蓋,不存在則新建
this is test file.                                        ==>鍵盤輸入值保存值in_file
hello.world! 
==>輸出完成后,可以通過快捷鍵Ctrl+d中止輸入信號。
[root@localhost ~]# cat /tmp/in_file      ==>查看保存后信息
this is test file. 
hello.world!

例9:<<表示結束輸入字符,在stdin時,輸入緊跟<<的字符表示結束輸入的意思。

[root@localhost ~]# cat > in_file <<end   ==><<后代表結束輸入字符
> hao are you! 
> Welcome! 
> end                                                       ==>輸入end回車離開
[root@localhost ~]# cat in_file                  ==>查看in_file,只有輸入的前兩行
hao are you! 
Welcome!


原創文章,作者:老鼠上了貓,如若轉載,請注明出處:http://www.www58058.com/5593

(0)
老鼠上了貓老鼠上了貓
上一篇 2015-06-24 09:39
下一篇 2015-06-24 10:02

相關推薦

  • 生產環境日志審計

         日志審計,就是記錄所有系統和相關用戶行為的信息,并且可以自動分析,處理。在中小企業環境中,一般都是在單個服務器上記錄日志,而大型企業的生產環境當中,會有專門的日志服務器乃至集群。本文通過sudo配合centos自帶的rsyslog(syslog)服務,進行日志審計。    &nb…

    Linux干貨 2016-10-20
  • Linux基礎知識(四)-正則表達式grep,egrep

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。 4、復制/etc/sk…

    Linux干貨 2016-10-17
  • Linux下find命令的使用

    為什么要使用find命令?     Linux系統中有著成千上萬的文件,如果你想要找到自己想要的文件,一款查找軟件是必不可少的,而locate是根據其生成的數據庫進行查找,雖然速度會略快,但非實時查找,有些新的文件或目錄是匹配不到的,而且locate是模糊匹配,而find命令為實時查找,且為精確匹配,如果你對目錄的權限…

    Linux干貨 2016-08-18
  • N25-第1周博客作業

    計算機概述及命令 一、計算機原理及其組成功能 計算機作為一個整體,由軟件和硬件兩大部分組成:  (1)計算機硬件系統。        計算機的硬件系統結構有哈佛結構和馮·諾伊曼結構兩種。 哈佛結構是一種將程序指令存儲和數據存儲分開的存儲器結構。中央處理器首先到程序指令存儲器中讀取程序指令內…

    Linux干貨 2016-12-03
  • 電子眼find

     1、摩根定律。         話不多說,先上圖。          如圖:A和B交集為3    A = 4 + 3  &nbs…

    Linux干貨 2016-08-16
  • 正則表達式及用戶管理命令

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當做其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxuser.txt文件中。 6、列出/etc目錄…

    2017-10-10

評論列表(3條)

  • stanley
    stanley 2015-06-24 10:01

    修改了部分樣式看起來更美觀,添加了標簽可以增加seo搜索命中

    • 老鼠上了貓
      老鼠上了貓 2015-06-24 13:51

      @stanley很贊,效果完全不一樣了,非常感謝!

    • 老鼠上了貓
      老鼠上了貓 2015-06-24 13:54

      @stanley審核之后不能得新編輯了嗎,我想把例5、例6調整下?

欧美性久久久久