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
留言分享你的想法!
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
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
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)的不同作為區別。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News