1. 程式人生 > >shell 錯誤輸出重定向到標準輸出

shell 錯誤輸出重定向到標準輸出

經常可以在一些指令碼,尤其是在crontab呼叫時發現如下形式的命令呼叫

/tmp/test.sh > /tmp/test.log 2>&1
前半部分/tmp/test.sh > /tmp/test.log很容易理解,那麼後面的2>&1是怎麼回事呢?

要解釋這個問題,還是得提到檔案重定向。我們知道>和<是檔案重定向符。那麼1和2是什麼?在shell中,每個程序都和三個系統文

件相關聯:標準輸入stdin,標準輸出stdout和標準錯誤stderr,三個系統檔案的檔案描述符分別為0,1和2。所以這裡2>&1的意思

就是將標準錯誤也輸出到標準輸出當中。

下面通過一個例子來展示2>&1有什麼作用:

$ cat test.sh
t
date
test.sh中包含兩個命令,其中t是一個不存在的命令,執行會報錯,預設情況下,錯誤會輸出到stderr。date則能正確執行,並且

輸出時間資訊,預設輸出到stdout

  1. ./test.sh > test1.log
  2. ./test.sh: line 1: t: command not found
  3. $ cat test1.log
  4. Tue Oct 9 20:51:50 CST 2007


可以看到,date的執行結果被重定向到log檔案中了,而t無法執行的錯誤則只打印在螢幕上。

  1. .
    /test.sh > test2.log 2>&1
  2. $ cat test2.log
  3. ./test.sh: line 1: t: command not found
  4. Tue Oct 9 20:53:44 CST 2007


這次,stderr和stdout的內容都被重定向到log檔案中了。

實際上, > 就相當於 1> 也就是重定向標準輸出,不包括標準錯誤。通過2>&1,就將標準錯誤重定向到標準輸出了(stderr已作為

stdout的副本),那麼再使用>重定向就會將標準輸出和標準錯誤資訊一同重定向了。如果只想重定向標準錯誤到檔案中,則可以使

用2> file。

那麼如何將標準錯誤輸出重定向到一個檔案的同時在螢幕上也顯示?

  1. [[email protected] root]# id fdfd 2>&|tee logfile
  2. id: fdfd: No such user
  3. [[email protected] root]# cat logfile
  4. id: fdfd: No such user


管道的用途是把程序的標準輸出連線到另一個程序的標準輸入,2>&1是把標準錯誤作為標準輸出的副本。在樓頂那個命令裡,把標

準輸出和標準錯誤都輸出作為tee命令的標準輸入,tee的用途是把標準輸入的副本拷貝到檔案,並輸出。不要混淆管道與重定向,

這是兩個不同的概念。

相關推薦

linux系統shell定向 標準輸出 錯誤輸出 >/dev/null 2>&1

經常shell指令碼中,會看到: 仔細體會下面例子。 >/dev/null  2>&1 這句話的意思簡單理解為:標準輸出和錯誤輸出都不會輸出出來。 [email protected]:/tmp>date>1.txt >/de

標準輸入輸出錯誤輸出定向標準輸出

I/O重定向詳解及應用例項 1、 基本概念(這是理解後面的知識的前提,請務必理解) a、 I/O重定向通常與 FD有關,shell的FD通常為10個,即 0~9; b、 常用FD有3個,為0(stdin,標準輸入)、1(stdout,標準輸出)、2(stderr,標準錯誤輸出),預設與keyboar

nohup 後臺執行,以及定向標準輸出標準錯誤 &/dev/null 檔案

具體的命令我就不介紹了, 一般都是在linux下 nohup command_line 或者 nohup command_line & 這之間的差別是帶&的命令列,即使terminal關閉,或者電腦宕機程式依然執行(前提是你把程式遞交到伺服器上); 它把標準輸出(STDOUT)和標準錯誤(S

Java 輸入/輸出——定向標準輸入/輸出

ole catch som align oid int limit 文件的 pan   在System類中提供了如下三個重定向標準輸入/輸出方法。 static void setErr?(PrintStream err) Reassigns the "standar

定向標準輸出到檔案有時看不到檔案的內容

作轉碼測試程式時,將輸出儲存到檔案。開始時可以。 將列印的音、視訊的pts刪除後,就看不到檔案的內容了,還以為是程式出問題了。 查了一下,是緩衝地區的問題。 原來有很多的printf,緩衝地區滿了,就會寫到檔案。 可以使用 fflush(stdout)解決。 也可以用se

shell中的定向(輸入輸出)

shell中的重定向(輸入輸出) Linux 命令預設從標準輸入裝置(stdin)獲取輸入,將結果輸出到標準輸出裝置(stdout)顯示。一般情況下,標準輸入裝置就是鍵盤,標準輸出裝置就是終端,即顯示器。 輸出重定向 命令的輸出不僅可以是顯示器,還可以很容易的轉移向到檔案,這被稱為輸出重定向。

在python中如何定向標準輸出stdout到檔案程式碼示例

import sys oldStdout = None logfile = None try: logfile = open('d:/1.log','w+') oldStdout = sys.stdout sys.stdout = logfile print 'H

Shell中將標準錯誤標準輸出定向到同一個檔案的兩種方式

在Shell中,標準錯誤寫法為 2>, 標準輸出為 1> 或者 >。如要要將標準輸出和標準錯誤合二為一,都重定向到同一個檔案,可以使用下面兩種方式: 方式一: > out.txt 2>&1 [[email protected] ~

shell 錯誤輸出定向標準輸出

經常可以在一些指令碼,尤其是在crontab呼叫時發現如下形式的命令呼叫 /tmp/test.sh > /tmp/test.log 2>&1 前半部分/tmp/test.sh > /tmp/test.log很容易理解,那麼後面的2>&1是怎麼回事呢? 要解釋這個

linux定向標準輸入輸出,標準錯誤

lin linux重定向 文件描述符 name txt 文件 sets color 描述符 標準輸入是文件描述符0。它是命令的輸入,缺省是鍵盤,也可以是文件或其他命令的輸出。標準輸出是文件描述符1。它是命令的輸出,缺省是屏幕,也可以是文件。標準錯誤是文件描述符2。這是命令錯

shell基礎02 標準文件描述符STDIN,STDOUT,STDERR和輸入輸出定向

stdin isp pen blank input open 日誌文件 重定向 分開 文件描述符 縮寫 描述

2>&1 &:將標準錯誤2定向標準輸出1中

bash中 2>&1 & 的解釋 1、bash中0,1,2三個數字分別代表: 0 STDIN_FILENO 標準輸入(一般是鍵盤) 1 STDOUT_FILENO 標準輸出(一般是使用者終端控制檯) 2 STDERR_FILENO 標準錯

將Linux 標準輸出錯誤輸出定向到檔案

1.想要把make輸出的全部資訊,輸出到某個檔案中,最常見的辦法就是:make xxx > build_output.txt此時預設情況是沒有改變2=stderr的輸出方式,還是螢幕,所以,如果有錯誤資訊,還是可以在螢幕上看到的。2.只需要把make輸出中的錯誤(及警

Shell 腳本學習筆記十:Shell輸入輸出定向

描述符 獨立 文件重定向 eof 輸出 合並 包含 span 輸出重定向 command > file 將輸出重定向到 file。 command < file 將輸入重定向到 file。 command >> file

8.1 shell介紹 8.2 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出定向

8.1 shell介紹 8.2 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出重定向8.1 shell介紹 8.2 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出重定向 # Linux shell 基礎 # 8.1 shell 介紹 - 什麽是shell 1

shell介紹,命令歷史,命令補全和別名,通配符,輸入輸出定向

重定向 輸入輸出 history 筆記內容:l 8.1 shell介紹l 8.2 命令歷史l 8.3 命令補全和別名l 8.4 通配符l 8.5 輸入輸出重定向筆記日期:2017.8.11 8.1 shell介紹Shell俗稱殼(用來區別於核),是指“提供使用者使用界面”的軟件(命令解析器)。sh

shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出定向

linux基礎shell介紹shell是一個命令解釋器,提供用戶和機器之間的交互,支持特定語法,比如邏輯判斷、循環,每個用戶都可以有自己特定的shellCentOS7默認shell為bash(Bourne Agin Shell)還有zsh、ksh等命令歷史查看歷史命令[root@test76 ~]# cat

shell介紹、歷史命令、命令補全和別名、通配符、輸入輸出定向

linuxshell介紹shell是系統跟計算機硬件交互時使用的中間介質,它只是系統的一個工具。在計算機硬件之間還有一層東西——系統內核。如果把計算機硬件比作一個人的軀體,那系統內核就是人的大腦。至於shell,把它比作人的五官似乎更貼切些。言歸正傳,用戶直接面對的不是計算機硬件而是shell,用戶把指令告訴

5周第3次課 shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出定向

linux中shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向1.shell介紹shell 是一個命令解釋器,提供用戶和機器之間的交互。它支持特定語法,邏輯判斷、循環。比如,我們登陸的終端,它其實就是一個 shell,供我們和機器交互。Linux 下面有很多 shell,每個用戶都可以有自

shell介紹,命令歷史記錄,命令和文件名自動補齊;通配符和輸入輸出定向

數字 51cto ksh 開頭 chat inux shell images 重定向 shell介紹 Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。在計算機硬件之間還有一層東西——系統內核。如果把計算機硬件比作