file 2>1 這里的 ,表示重定向的目標(biāo)不是一個 文件 ,而是一個 文件描述符 ,內(nèi)置的文件描述符如下 1 => stdout2 => stderr0 => stdin 換言之? 2>1 ?代表將 stderr 重定向到當(dāng)前路徑下文件名為 1 的 regular file 中,而 2>>file 是一種特殊的用法,也可以寫成 >1 此處 視作整體,分開沒有單獨(dú)的含義 順序問題: find /etc -name .bashrc > list 2>1 > list 這個是從左到右有順序的 第一種 xxx > list 2>1 > list 先將要輸出到 stderr 的內(nèi)容重定向到 stdout ,此時會產(chǎn)" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2025-01-08 10:19 ? 次閱讀

#1 linux輸出重定向

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

這里的&沒有固定的意思

放在>后面的&,表示重定向的目標(biāo)不是一個文件,而是一個文件描述符,內(nèi)置的文件描述符如下

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

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

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

>file 2>&1

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

順序問題:

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

這個是從左到右有順序的

第一種

xxx > list 2>&1

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

第二種

xxx 2>&1 > list

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

#2 輸入重定向

command1 < file1

#3 dev/null

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

command > /dev/null

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

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

command > /dev/null 2>&1

#4 重定向深入

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

標(biāo)準(zhǔn)輸入文件(stdin):stdin的文件描述符為0,Unix程序默認(rèn)從stdin讀取數(shù)據(jù)。

標(biāo)準(zhǔn)輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認(rèn)向stdout輸出數(shù)據(jù)。

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

默認(rèn)情況下,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。

注意:為什么需要將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出,因?yàn)闃?biāo)準(zhǔn)錯誤沒有緩沖區(qū),而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 將開始標(biāo)記 tag 和結(jié)束標(biāo)記 tag 之間的內(nèi)容作為輸入。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11320

    瀏覽量

    209839
  • 命令行
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    10405

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

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    圖形用戶界面與命令行接口的比較

    界面(GUI) : GUI是一種用戶界面,允許用戶通過圖形圖標(biāo)和視覺指示器與電子設(shè)備進(jìn)行交互。 它通常包括窗口、按鈕、圖標(biāo)和菜單等元素,用戶可以通過鼠標(biāo)或觸摸屏進(jìn)行操作。 命令行接口(CLI) : CLI是一種用戶界面,用戶通過輸入文本
    的頭像 發(fā)表于 11-12 14:38 ?429次閱讀

    Mobaxterm 的命令行使用方法

    的遠(yuǎn)程桌面協(xié)議(如RDP和VNC),以及文件傳輸協(xié)議(如FTP和SFTP)。本文將詳細(xì)介紹如何使用Mobaxterm的命令行功能。 2. 安裝 Mobaxterm 在開始之前,確保你已經(jīng)安裝
    的頭像 發(fā)表于 11-11 09:08 ?1608次閱讀

    APM32F411板的python+pyocd命令行操作

    前段時間學(xué)習(xí)了一下如何使用pyocd配合APM32F411VCTINY板在命令行下給它進(jìn)行各種騷操作,在使用一段時間后就想著:pyocd是基于python的,那是不是也可以使用python腳本+pyocd使用起來呢?
    的頭像 發(fā)表于 10-18 16:21 ?337次閱讀
    APM32F411板的python+pyocd<b class='flag-5'>命令行</b><b class='flag-5'>操作</b>

    Windows操作系統(tǒng)中的常用命令

    Windows操作系統(tǒng)提供了許多實(shí)用的命令行工具,通過命令行界面(Command Prompt)或Windows PowerShell,用戶可以執(zhí)行各種任務(wù),如文件管理、系統(tǒng)維護(hù)、網(wǎng)絡(luò)配置等。
    的頭像 發(fā)表于 08-07 15:40 ?670次閱讀
    Windows<b class='flag-5'>操作</b>系統(tǒng)中的常用<b class='flag-5'>命令</b>

    常用CentOS命令總結(jié)

    免費(fèi)的、穩(wěn)定的、可自由使用的替代品。CentOS的穩(wěn)定性和安全性使其成為服務(wù)器和生產(chǎn)環(huán)境中的首選。作為運(yùn)維工程師,掌握CentOS命令行操作不僅能提高工作效率,還能解決日常工作中的復(fù)雜
    的頭像 發(fā)表于 08-07 15:35 ?347次閱讀

    鴻蒙ArkUI-X跨平臺開發(fā):【命令行工具(ACE Tools)】

    ACE Tools是一套為ArkUI-X項(xiàng)目跨平臺應(yīng)用開發(fā)者提供的命令行工具,支持在Windows/Ubuntu/macOS平臺運(yùn)行,用于構(gòu)建OpenHarmony/HarmonyOS、Android和iOS平臺的應(yīng)用程序,其功能包括開發(fā)環(huán)境檢查,新建項(xiàng)目,編譯打包,安裝調(diào)試等。
    的頭像 發(fā)表于 05-21 17:39 ?1856次閱讀
    鴻蒙ArkUI-X跨平臺開發(fā):【<b class='flag-5'>命令行</b>工具(ACE Tools)】

    高效云端管理的秘訣——華為云命令行工具 KooCLI

    發(fā)現(xiàn)了云上命令行工具,我的云端管理效率從此得到了質(zhì)的飛躍。 我從華為云官方產(chǎn)品幫助文檔中了解了 KooCLI 工具,文檔中介紹的便捷操作和高效管理我心動不已,于是,我開啟了我的體驗(yàn)。
    的頭像 發(fā)表于 05-10 00:25 ?712次閱讀
    高效云端管理的秘訣——華為云<b class='flag-5'>命令行</b>工具 KooCLI

    鴻蒙OpenHarmony南向:【Hi3516標(biāo)準(zhǔn)系統(tǒng)入門(命令行方式)】

    除小型系統(tǒng)外,Hi3516DV300開發(fā)板還支持標(biāo)準(zhǔn)系統(tǒng)。此章節(jié)簡要介紹如何使用命令行在Hi3516DV300開發(fā)板上進(jìn)行標(biāo)準(zhǔn)系統(tǒng)的開發(fā)。
    的頭像 發(fā)表于 05-08 09:26 ?906次閱讀
    鴻蒙OpenHarmony南向:【Hi3516標(biāo)準(zhǔn)系統(tǒng)入門(<b class='flag-5'>命令行</b>方式)】

    HarmonyOS開發(fā):【基于命令行(安裝庫和工具集)】

    使用命令行進(jìn)行設(shè)備開發(fā)時,可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具。
    的頭像 發(fā)表于 04-25 21:03 ?439次閱讀
    HarmonyOS開發(fā):【基于<b class='flag-5'>命令行</b>(安裝庫和工具集)】

    香港vps的centos如何切換命令行和桌面?

    要在CentOS上切換命令行和桌面環(huán)境,您可以通過以下步驟進(jìn)行: 1、安裝桌面環(huán)境:如果您的CentOS VPS上還沒有安裝圖形桌面環(huán)境,您需要安裝一個。一般來說,常用的桌面環(huán)境有GNOME、KDE
    的頭像 發(fā)表于 04-10 17:41 ?678次閱讀

    STM32G070RB使用jlink命令行下載無法識別芯片怎么解決?

    STM32G070RB 使用jlink命令行下載無法識別芯片,想手動添加芯片,請問哪里可以下載驅(qū)動.elf文件 或者有什么方法能夠?qū)崿F(xiàn)jlink命令行下載
    發(fā)表于 04-02 06:15

    util-linux修復(fù)WallEscape漏洞,影響Linux系統(tǒng)wall命令使用

    WallEscape 主要影響“wall”命令操作,Linux 系統(tǒng)中的常規(guī)下,該指令被用作向系統(tǒng)所有登錄用戶的終端發(fā)布消息。然而在處理命令行參數(shù)輸入時,過濾器未正確識別和過濾轉(zhuǎn)義序列
    的頭像 發(fā)表于 03-29 14:35 ?996次閱讀

    tasking的命令行控制中如何生成makefiles文件?

    tasking的命令行控制中如何生成makefiles文件?
    發(fā)表于 02-06 07:56

    Linux上如何通過命令行來更改日期和時間?

    Linux上如何通過命令行來更改日期和時間? 在Linux上,我們可以使用命令行工具來更改日期和時間。操作系統(tǒng)中有一個專門的
    的頭像 發(fā)表于 01-16 17:10 ?2874次閱讀

    2分鐘搞懂輸出重定向

    視頻最后我們通過重定向把標(biāo)準(zhǔn)輸出寫到了文件中,但是錯誤輸出還是留在了屏幕上。
    的頭像 發(fā)表于 01-15 16:41 ?578次閱讀