Linux重定向用法詳解
阿新 • • 發佈:2020-07-28
大家好,我是良許。
相信大家平時都會有需要複製貼上資料的時候,如果是開啟檔案進行復制貼上,就不可避免的需要較多的滑鼠與鍵盤的操作,就會比較繁瑣。那麼有沒有可以省掉這些繁瑣操作的複製貼上的方法呢?
答案是肯定的,那就是重定向。重定向是一種高效的方法,無需大量的滑鼠與鍵盤操作就可以完成資料的轉移。重定向可以分為輸入重定向以及輸出重定向這兩種型別。由於所有程式都有輸入或者輸出,因此輸入和輸出的重定向是任何程式語言或指令碼語言都自帶的功能。
每當你與計算機互動時,重定向就必然會發生。學會使用重定向,不僅可以讓你與計算機更好地互動,還可以提高你的工作效率,因此,請讓良許為你講解 Linux 系統中重定向的常見用法:
#### Linux 中的資料流
談到 Linux 的重定向,就不得不提以下這3種資料流:
- 輸入資訊會從 `stdin` 中讀取(標準輸入,通常是鍵盤或滑鼠)。
- 輸出資訊會被輸出到 `stdout` (標準輸出,一個文字檔案或者資料流)。
- 錯誤資訊會被輸出到 `stderr`。
瞭解了這些資料流的存在,在你使用 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 >> alvin
```
#### 重定向輸入
與重定向輸出相反,重定向輸入使用的是 `<` 字元。
輸入重定向可以將輸入資訊重定向至命令中作為引數使用。該功能可能比較少用,但是,當命令需要一個引數列表時,而這些引數都存在一個檔案中,然後你想快速地將它們從檔案中複製貼上到終端,這時這個功能就能派上用場了。
例如,`package.list` 裡記錄了你需要安裝的包的列表,而你想要快速地安裝所有的包,只需執行以下這一條命令,就能一次性安裝 `package.list` 裡的所有包:
```
$ sudo dnf in