重定向 Linux重定向用法詳解

2021-10-16 04:26:33 字數 3215 閱讀 5484

相信大家平時都會有需要複製貼上資料的時候,如果是開啟檔案進行複製貼上,就不可避免的需要較多的滑鼠與鍵盤的操作,就會比較繁瑣。那麼有沒有可以省掉這些繁瑣操作的複製貼上的方法呢?

答案是肯定的,那就是重定向。重定向是一種高效的方法,無需大量的滑鼠與鍵盤操作就可以完成資料的轉移。重定向可以分為輸入重定向以及輸出重定向這兩種型別。由於所有程式都有輸入或者輸出,因此輸入和輸出的重定向是任何程式語言或指令碼語言都自帶的功能。

每當你與計算機互動時,重定向就必然會發生。學會使用重定向,不僅可以讓你與計算機更好地互動,還可以提高你的工作效率,因此,請讓良許為你講解 linux 系統中重定向的常見用法:

談到 linux 的重定向,就不得不提以下這3種資料流:

了解了這些資料流的存在,在你使用 shell 時,你就可以更好地控制資料的流向了。

在 linux 系統中,標準輸入,標準輸出以及標準錯誤都作為檔案存在。你可以在/dev目錄下看到它們:

$ ls /dev/std*/dev/stderr  /dev/stdin  /dev/stdout
在 linux 系統中,使用>字元表示重定向輸出。例如,將ls命令的輸出重定向到乙個檔案中:

$ ls > list.txt
執行以上命令後,螢幕上並不會顯示ls命令的輸出資訊,因為輸出資訊已經被重定向至list.txt檔案中了。

$ cat image.png > picture.png
如果你想要將乙個檔案的內容複製到另乙個檔案的末尾,你只需將>字元換成>>字串即可,像這樣:

$ cat lxlinux >> alvi
與重定向輸出相反,重定向輸入使用的是<字元。

輸入重定向可以將輸入資訊重定向至命令中作為引數使用。該功能可能比較少用,但是,當命令需要乙個引數列表時,而這些引數都存在乙個檔案中,然後你想快速地將它們從檔案中複製貼上到終端,這時這個功能就能派上用場了。

例如,package.list裡記錄了你需要安裝的包的列表,而你想要快速地安裝所有的包,只需執行以下這一條命令,就能一次性安裝package.list裡的所有包:

$ sudo dnf install $(
輸入重定向的常見用法是 here-document (簡稱 here-doc) 以及 here-string 。

here-doc 將輸入的文字塊重定向至標準輸入流,直至遇到特殊的檔案結束標記符為止(檔案結束標記符可以是任意的唯一的字串,但大部分人都預設使用eof)。

你可以嘗試在終端輸入以下命令(直到第二個eof字串結束):

$ cat << eof> alvin> lxlinux.net> eof
預期的輸出應該是這樣的:

alvinlxlinux.net
here-doc 是 bash 指令碼編寫者們將多行文字轉儲到檔案或螢幕上的常用技巧。

here-string 與 here-doc 相似,但是它只有乙個字串,或者幾個被引號括起來的字串:

$ cat <<< alvinalvin$ cat <<< "alvin lxlinux.net"alvin lxlinux.net
錯誤資訊缺省會進入叫stderr的流,使用2>可以對其進行重定向。例如,將錯誤資訊重定向到名為output.log的檔案中:

$ ls /nope 2> output.log
就像標準輸入、標準輸出以及標準錯誤一樣,在 linux 檔案系統中,空,也存在乙個檔案與之對應,它叫做null,放在/dev目錄下。為了方便讀,人們經常省略斜槓,直接把他讀作dev null

/dev/null並不儲存資料,被寫入/dev/null的資料最終都會丟失,就像被丟進虛空中一樣。因此,你可以使用重定向將不需要的資料輸送到/dev/null。例如,find命令的輸出往往很冗長,而且在搜尋檔案時還經常會報告許可權衝突的錯誤,像這樣:

$ find ~ -type f/home/seth/actual.filefind: `/home/seth/foggy': permission deniedfind: `/home/seth/groggy': permission deniedfind: `/home/seth/soggy': permission denied/home/seth/zzz.file
這時,你就可以將錯誤資訊重定向到/dev/null,以過濾掉不必要的資訊,像這樣:

$ find ~ -type f 2> /dev/null/home/seth/actual.file/home/seth/zzz.file
在 bash 中,重定向是轉移資料的一種高效方法。你可能並不會總是使用重定向,但是學會如何使用重定向,在你需要的時候可以讓你省掉許多不必要的複製貼上操作,因此也節省了許多操作滑鼠與鍵盤的時間。請不要執著於複製貼上了,使用重定向可以提高你的工作效率,難道,它不香嗎?

→ 精選技術資料共享

→ 高手如雲交流社群

m 」獲取!

推薦閱讀:

為什麼中國開發不出流行的作業系統和程式語言?

槓上了,linus 再次怒噴 intel 直言「去死」

linux系統檢視硬體資訊神器,比裝置管理器好用100倍!

Linux重定向用法詳解

相信大家平時都會有需要複製貼上資料的時候,如果是開啟檔案進行複製貼上,就不可避免的需要較多的滑鼠與鍵盤的操作,就會比較繁瑣。那麼有沒有可以省掉這些繁瑣操作的複製貼上的方法呢?每當你與計算機互動時,重定向就必然會發生。學會使用重定向,不僅可以讓你與計算機更好地互動,還可以提高你的工作效率,因此,請讓良...

Linux重定向用法詳解

相信大家平時都會有需要複製貼上資料的時候,如果是開啟檔案進行複製貼上,就不可避免的需要較多的滑鼠與鍵盤的操作,就會比較繁瑣。那麼有沒有可以省掉這些繁瑣操作的複製貼上的方法呢?答案是肯定的,那就是重定向。重定向是一種高效的方法,無需大量的滑鼠與鍵盤操作就可以完成資料的轉移。重定向可以分為輸入重定向以及...

管道 與 重定向 用法詳解

下表是管道與重定向符的作用 符號作用 將乙個命令的標準輸出重定向給下乙個命令,並作為該命令的標準輸入 將輸出匯入至檔案 將輸出追加至檔案 從檔案中提取輸入資訊 從標準輸入中讀入,直到遇見分界符才停止 2 或2 錯誤資訊的重定向 下面通過幾個例項演示重定向的使用方法 其中標準輸入的檔案描述符為0,標準...