2>&1 > /dev/null 與/dev/null 2>&1的差異

更新 發佈閱讀 3 分鐘

核心概念

  • stderr (描述符 2)stdout (描述符 1) 是獨立的檔案描述符。
  • 重定向的順序是關鍵,因為每個重定向會即時生效,並影響之後的指令。


範例

分析 ls /etc/nonexistent 2>&1 > /dev/null 的執行過程

步驟 1:2>&1

  • 2>&1 表示將 stderr 重定向到 stdout當前位置
  • 在執行這一部分時:
    • stdout 此時仍然指向終端(因為尚未被重定向)。
    • 所以,stderr 也被重定向到終端。


步驟 2:> /dev/null

  • > /dev/null(相當於 1> /dev/null)表示將 stdout 重定向到 /dev/null
  • 此時:
    • stdout 被重定向到 /dev/null。
    • stderr 仍然指向終端,因為它已在第一步中跟隨了 stdout 的舊位置(終端)


總結結果

  • stdout 的輸出被丟棄到 /dev/null
  • stderr 的輸出仍然顯示在終端


對比 ls /etc/nonexistent > /dev/null 2>&1

步驟 1:> /dev/null

  • > /dev/nullstdout 重定向到 /dev/null
  • 此時:
    • stdout 指向 /dev/null。
    • stderr 仍然指向終端。


步驟 2:2>&1

  • 2>&1stderr 跟隨 stdout當前位置
  • 由於此時 stdout 已指向 /dev/null,所以:
    • stderr 也被重定向到 /dev/null


關鍵點:順序影響重定向目標

  1. 在 2>&1 執行時,stderr 跟隨的是 stdout 的當前位置
    • 如果 stdout 還指向終端,stderr 就會跟隨到終端。
    • 如果 stdout 已被重定向到 /dev/null,stderr 就會跟隨到 /dev/null。
  2. 每個重定向都是即時生效的,不會回溯修改之前的重定向目標。


圖解

raw-image


留言
avatar-img
Genos's Coding Diary的沙龍
6會員
19內容數
我的Java學習日記
2023/11/08
索引(index)能提升搜尋比對資料時的效能
2023/11/08
索引(index)能提升搜尋比對資料時的效能
2023/10/03
為何要重寫equals方法? 為何要重寫hashCode方法?
2023/10/03
為何要重寫equals方法? 為何要重寫hashCode方法?
2023/09/27
兩種方式進行物件比較,使用Comparator或使用Comparable
2023/09/27
兩種方式進行物件比較,使用Comparator或使用Comparable
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
由於一個微電腦系統之輸出入裝置通常不只一個,若CPU欲針對某個輸出入裝置做資料讀寫,必須通過不同的位址來選擇不同的裝置,依微電腦的架構區分,定義I/O位址的方法有兩種,記憶體映射 I/O和隔離式 I/O。 本章節將會詳細介紹兩者。
Thumbnail
由於一個微電腦系統之輸出入裝置通常不只一個,若CPU欲針對某個輸出入裝置做資料讀寫,必須通過不同的位址來選擇不同的裝置,依微電腦的架構區分,定義I/O位址的方法有兩種,記憶體映射 I/O和隔離式 I/O。 本章節將會詳細介紹兩者。
Thumbnail
檔案屬性 filetype(string):回傳參數檔案的種類字串,可能的回傳值有:fifo、char、dir、block、link、file和unknown,如果有錯誤回傳false。 fileatime(string):回傳參數檔案的最後存取時間,單位是UNIX的時間戳記,如果錯誤回傳fal
Thumbnail
檔案屬性 filetype(string):回傳參數檔案的種類字串,可能的回傳值有:fifo、char、dir、block、link、file和unknown,如果有錯誤回傳false。 fileatime(string):回傳參數檔案的最後存取時間,單位是UNIX的時間戳記,如果錯誤回傳fal
Thumbnail
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
Thumbnail
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
Thumbnail
NodeJS 學習來到 file systems 操作,在文檔操作上有分為同步跟異步的處理,接下來分階段介紹操作函數
Thumbnail
NodeJS 學習來到 file systems 操作,在文檔操作上有分為同步跟異步的處理,接下來分階段介紹操作函數
Thumbnail
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
Thumbnail
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
Thumbnail
sed 指令 ( 取代 , 截取行 ) 删除文件第一行: sed -i ‘1d’ filename 删除文件最后一行: sed -i ‘$d’ fileName 刪除首行空白 sed ‘s/^[ \t]*//g’ 參考 : https://codertw.com/前端開發/393321/ 在檔案最後
Thumbnail
sed 指令 ( 取代 , 截取行 ) 删除文件第一行: sed -i ‘1d’ filename 删除文件最后一行: sed -i ‘$d’ fileName 刪除首行空白 sed ‘s/^[ \t]*//g’ 參考 : https://codertw.com/前端開發/393321/ 在檔案最後
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
Thumbnail
檔案路徑(相對路徑、絕對路徑)、檔案讀入,匯出
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News