重定向,/dev/null, 1>, 2>什麼意思?

来源:https://www.cnblogs.com/ghostwu/archive/2018/05/30/9108382.html
-Advertisement-
Play Games

文件描述符我們常見的就是系統預留的0,1和2這三個,他們的意義分別有如下對應關係: 0 —— stdin(標準輸入) 1 —— stdout (標準輸出) 2 —— stderr (標準錯誤) 其中,shell編程里經常用到的就是描述符1,和描述符2。 如:ls命令執行的時候,在標準輸出 輸出了結果 ...


文件描述符我們常見的就是系統預留的0,1和2這三個,他們的意義分別有如下對應關係:

  • 0 —— stdin(標準輸入)
  • 1 —— stdout (標準輸出)
  • 2 —— stderr (標準錯誤)

其中,shell編程里經常用到的就是描述符1,和描述符2。

如:ls命令執行的時候,在標準輸出 輸出了結果,我們可以通過重定向符號,把標準輸出的結果重定向到文件。

ghostwu@dev:~/linux/std_err_out$ ls
ghostwu@dev:~/linux/std_err_out$ touch ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt
ghostwu@dev:~/linux/std_err_out$ ls > std_out.txt
ghostwu@dev:~/linux/std_err_out$ cat std_out.txt 
ghostwu.txt
std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls 1> std_out1.txt
ghostwu@dev:~/linux/std_err_out$ cat std_out1.txt 
ghostwu.txt
std_out1.txt
std_out.txt

> 和 1>是等價的,都表示標準輸出重定向。

 

錯誤重定向:

什麼時候會產生錯誤重定向?比如,最簡單,不存在某文件

ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt  std_out1.txt  std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls std_err.txt
ls: cannot access 'std_err.txt': No such file or directory

我們可以把錯誤信息,通過錯誤重定向寫入文件。

ghostwu@dev:~/linux/std_err_out$ ls std_error.txt
ls: cannot access 'std_error.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt  std_out1.txt  std_out.txt
ghostwu@dev:~/linux/std_err_out$ ls std_error.txt 2> output_error.txt
ghostwu@dev:~/linux/std_err_out$ cat output_error.txt 
ls: cannot access 'std_error.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$ 

 2>&1,&1的含義就可以理解為用標準輸出的引用

2>表示錯誤輸出,&等價於標準輸出

ghostwu@dev:~/linux/std_err_out$ ls a.txt 2>&1
ls: cannot access 'a.txt': No such file or directory
ghostwu@dev:~/linux/std_err_out$ ls
ghostwu.txt  output_error.txt  std_out1.txt  std_out.txt

2>/dev/null意思就是把錯誤輸出到“黑洞” 

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
ls: cannot access 'ghostwu.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>/dev/null
ghostwu@dev:~/linux/shell/pipe$ 

>/dev/null 2>&1預設情況是1,也就是等同於1>/dev/null 2>&1。意思就是把標準輸出重定向到“黑洞”,還把錯誤輸出2重定向到標準輸出1,也就是標準輸出和錯誤輸出都進了“黑洞” 

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt
ghostwu.txt
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null
ls: cannot access 'ghostwu2.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null 2>&1
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt >/dev/null 2>&1
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt >/dev/null 2>&1

2>&1 >/dev/null意思就是把錯誤輸出2重定向到標準輸出1,也就是屏幕,標準輸出進了“黑洞”,也就是標準輸出進了黑洞,錯誤輸出列印到屏幕 

ghostwu@dev:~/linux/shell/pipe$ ls ghostwu.txt 2>&1>/dev/null
ghostwu@dev:~/linux/shell/pipe$ ls ghostwu2.txt 2>&1>/dev/null
ls: cannot access 'ghostwu2.txt': No such file or directory
ghostwu@dev:~/linux/shell/pipe$

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 添加 父節點,併為父節點添加子節點 移除選中節點(父/子都可以移除) 為節點添加圖標(父/子都可以添加) ...
  • src直接寫入api地址,filename是對應伺服器視頻存儲的地址。 後臺對應代碼 ...
  • 轉發請註明出處:https://home.cnblogs.com/u/zhiyong-ITNote/ 整個Demo是基於Controller-Service-Repository架構設計的,每一層之間是通過介面來實現解耦與調用的,參照了《ASP.NETMVC5框架揭秘》一書最後的網站示例架構,使用U ...
  • 路由跟URL 重寫的功能性略有不同。路由是將Request 找到對應的服務,而URL 重寫是為了推卸責任轉送Request。本篇將簡單介紹下ASP.NET Core的URL重寫(URL Rewrite)。 URL Rewrite 註冊 URL Rewriting Middleware需要Micros ...
  • 用ASP.NET Core 2.0 建立規範的 RESTful API -- 建立Richardson成熟度2級的DELETE, UPDATE, PATCH 和 Log。 之前一篇文章講了POST和GET。 ...
  • [1] Linux中 “shell終端” 和 “bash解釋器” 的區別 shell終端是通過基於系統調用介面開發出的程式,用來讓用戶與系統進行對話,管理計Linux系統。它是一個命令行工具,操作類似於Windows下的CMD工具。shell終端工具有很多,bash解釋器只是其中的一種,而且是主流L ...
  • 幫助命令 whatis 命令 #顯示命令的簡短功能 man 命令 #查看手冊頁和命令描述 命令--help #適用於外部命令 help 命令 #適用於內部命令 type 命令 #查看命令內嵌還是外部 文件管理 位置判斷 絕對路徑 :從/開始 相對路徑:以 . 或 .. 開始的 文件管理 touch/ ...
  • nux磁碟分區格式化及掛載 意義: 給linux 系統伺服器擴容, 加一塊硬碟 實驗環境: virtualBox虛擬軟體 + centos6.5 第一步: 添加硬體 硬碟 (我這裡用virtualBox模擬) 啟動 查看設備,找到新加的硬碟標識 fdisk -l 分區 fdisk /dev/sdb ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...