file 2>1 這里的 ,表示重定向的目標不是一個 文件 ,而是一個 文件描述符 ,內置的文件描述符如下 1 => stdout2 => stderr0 => stdin 換言之? 2>1 ?代表將 stderr 重定向到當前路徑下文件名為 1 的 regular file 中,而 2>>file 是一種特殊的用法,也可以寫成 >1 此處 視作整體,分開沒有單獨的含義 順序問題: find /etc -name .bashrc > list 2>1 > list 這個是從左到右有順序的 第一種 xxx > list 2>1 > list 先將要輸出到 stderr 的內容重定向到 stdout ,此時會產" />

国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

全面掌握Linux重定向技巧:讓命令行操作效率翻倍的秘密

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-01-08 10:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

#1 linux輸出重定向

$ command > file 2>&1
$ command >> file 2>&1

這里的&沒有固定的意思

放在>后面的&,表示重定向的目標不是一個文件,而是一個文件描述符,內置的文件描述符如下

1 => stdout
2 => stderr
0 => stdin

換言之2>1代表將stderr重定向到當前路徑下文件名為1regular file中,而2>&1代表將stderr重定向到文件描述符1的文件(即/dev/stdout)中,這個文件就是stdoutfile system中的映射

&>file是一種特殊的用法,也可以寫成>&file,二者的意思完全相同,都等價于

>file 2>&1

此處&>或者>&視作整體,分開沒有單獨的含義

順序問題:

find /etc -name .bashrc > list 2>&1
# 為什么不能調下順序,比如這樣
find /etc -name .bashrc 2>&1 > list

這個是從左到右有順序的

第一種

xxx > list 2>&1

先將要輸出到stdout的內容重定向到文件,此時文件list就是這個程序的stdout,再將stderr重定向到stdout,也就是文件list

第二種

xxx 2>&1 > list

先將要輸出到stderr的內容重定向到stdout,此時會產生一個stdout的拷貝,作為程序的stderr,而程序原本要輸出到stdout的內容,依然是對接在stdout原身上的,因此第二步重定向stdout,對stdout的拷貝不產生任何影響

#2 輸入重定向

command1 < file1

#3 dev/null

如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那么可以將輸出重定向到 /dev/null:

command > /dev/null

/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。

如果希望屏蔽 stdout 和 stderr,可以這樣寫:

command > /dev/null 2>&1

#4 重定向深入

一般情況下,每個 Unix/Linux 命令運行時都會打開三個文件:

標準輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。

標準輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。

標準錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。

默認情況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。

如果希望 stderr 重定向到 file,可以這樣寫

command 2 > file

如果希望 stderr 追加到 file 文件末尾,可以這樣寫

command 2 >> file

如果希望將 stdout 和 stderr 合并后重定向到 file,可以這樣寫:

$ command > file 2>&1
或者
$ command >> file 2>&1

如果希望對 stdin 和 stdout 都重定向,可以這樣寫:

$ command < file1 >file2

command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2。

注意:為什么需要將標準錯誤重定向到標準輸出,因為標準錯誤沒有緩沖區,而stdout有。

https://www.runoob.com/linux/linux-shell-io-redirections.html

命令 說明
command > file 將輸出重定向到 file。
command < file 將輸入重定向到 file。
command >> file 將輸出以追加的方式重定向到 file。
n > file 將文件描述符為 n 的文件重定向到 file。
n >> file 將文件描述符為 n 的文件以追加的方式重定向到 file。
n >& m 將輸出文件 m 和 n 合并。
n <& m 將輸入文件 m 和 n 合并。
<< tag 將開始標記 tag 和結束標記 tag 之間的內容作為輸入。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219001
  • 命令行
    +關注

    關注

    0

    文章

    83

    瀏覽量

    10759

原文標題:全面掌握Linux重定向技巧:讓命令行操作效率翻倍的秘密

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調用Kubernetes API Server實現對集群資源的全面管理。在生產環境中,運維工程師需要熟練掌握kubec
    的頭像 發表于 02-02 16:40 ?409次閱讀

    Linux中13個基本Cat命令示例

    This is test1 file. This is test2 file. 9、使用標準輸出和重定向操作符 我們可以將文件的標準輸出重定向到一個新文件中,否則現有文件中的 \'>\'(大于)符號。仔細
    發表于 12-26 06:09

    命令行阿里千問搭建過程

    克隆千問倉庫,安裝依賴; 下載模型權重; 命令行執行啟動腳本,配置參數后運行推理。
    發表于 12-24 10:35

    TI Driverlib 標準輸出完整重定向的改進方案

    探索出了一種用于TI Driverlib的完整輸出重定向方案
    的頭像 發表于 11-11 00:33 ?460次閱讀

    迅為3568開發板從零學習Linux驅動開發:迅為一站式資料包如何效率翻倍

    迅為3568開發板從零學習Linux驅動開發:迅為一站式資料包如何效率翻倍
    的頭像 發表于 11-05 11:16 ?400次閱讀
    迅為3568開發板從零學習<b class='flag-5'>Linux</b>驅動開發:迅為一站式資料包如何<b class='flag-5'>讓</b>我<b class='flag-5'>效率</b><b class='flag-5'>翻倍</b>

    推薦5個測試效率翻倍的MCP

    推薦5個測試效率翻倍的MCP
    的頭像 發表于 09-19 10:02 ?628次閱讀
    推薦5個<b class='flag-5'>讓</b>測試<b class='flag-5'>效率</b><b class='flag-5'>翻倍</b>的MCP

    遠程命令執行:IT 運維效率翻倍新方式

    。SplashtopAEM(自動端點管理)解決方案內置的遠程命令提示符功能,允許IT管理員無需啟動完整的遠程會話,即可輕松在遠程設備上執行命令行指令。該功能同時兼容W
    的頭像 發表于 09-04 17:15 ?1088次閱讀
    遠程<b class='flag-5'>命令</b>執行:IT 運維<b class='flag-5'>效率</b><b class='flag-5'>翻倍</b>新方式

    所見即所得——Luban-Lite VS Code插件讓開發實現“命令行自由”

    NEWS所見即所得!Luban-LiteVSCode插件指南親愛的開發者朋友們,你是否還在為嵌入式開發中頻繁切換命令行而抓狂?配置環境參數如“走迷宮”,編譯燒錄還需切換AiBurn?今天,匠芯創為您
    的頭像 發表于 08-07 15:38 ?1096次閱讀
    所見即所得——Luban-Lite VS Code插件讓開發實現“<b class='flag-5'>命令行</b>自由”

    解析K8S實用命令

    前言: 作為運維工程師,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文將深入解析 K8S 最實用的命令,從基礎操作到高級技巧,助你成為容器化集群管理專家。
    的頭像 發表于 07-24 14:07 ?864次閱讀

    一文掌握Linux命令

    作為一名運維工程師,熟練掌握Linux命令是基本功中的基本功。無論是日常工作中的系統維護,還是面試時的技術考核,Linux命令都是繞不開的核
    的頭像 發表于 07-22 15:23 ?610次閱讀

    USB串行配置實用程序是否有可用的命令行版本?

    USB串行配置實用程序是否有可用的命令行版本?
    發表于 07-22 08:09

    淺談wsl --update` 命令行選項無效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項無效: --update
    的頭像 發表于 06-27 10:28 ?1.1w次閱讀

    aurix development studio無法用命令行編譯工程的原因?

    aurix development studio無法用命令行編譯工程
    發表于 04-18 06:50

    請問如何通過S32K312命令行構建代碼?

    現在我們已經通過 S32DS3.5 IDE 開發了固件,它也可以工作了。 最近,我們收到了通過命令行構建代碼的要求,并且 我從 S32DS 幫助內容中讀取了相關文檔,但這種情況會發生 有關 JAVA
    發表于 04-09 07:48

    樹莓派新手必看!在樹莓派上編寫和運行 Shell 腳本!

    在本教程中,我將討論Shell腳本的基礎知識、它們的用途以及如何在RaspberryPi上編寫和運行Shell腳本。什么是Shell腳本?Shell腳本可以你自動化幾乎所有在Linux命令行上可以
    的頭像 發表于 03-25 09:28 ?1154次閱讀
    樹莓派新手必看!在樹莓派上編寫和運行 Shell 腳本!