Linux輸入輸出重定向和管道符

2021-10-05 23:43:46 字數 2350 閱讀 9552

輸入輸出重定向

linux輸入和輸出在終端的成為標準輸入和輸出。

型別描述

標準輸入重定向(stdin,檔案描述符為0)

預設從鍵盤輸入,也可從其他檔案或命令中輸入

標準輸出重定向(stdout,檔案描述符為1)

預設輸出到螢幕

錯誤輸出重定向(stderr,檔案描述符為2)

預設輸出到螢幕

# 標準輸出

[root@qiandu ~]# ll anaconda-ks.cfg

-rw-------. 1 root root 1211 may 4 22:43 anaconda-ks.cfg

# 錯誤輸出

[root@qiandu ~]# ll anaconda-ks.cfg1

ls: cannot access anaconda-ks.cfg1: no such file or directory

檔案輸入重定向

符號作用

命令 < 檔案

將檔案作為命令的標準輸入

命令 << 分界符

從標準輸入中讀入,直到遇見分界符才停止

命令 < 檔案1 > 檔案2

將檔案1作為命令的標準輸入並將標準輸出到檔案2

[root@qiandu ~]# cat < test2.txt

hello world,

how are you,

i am fine

[root@qiandu ~]# cat << test

> 1234

> test

1234

[root@qiandu ~]# cat < test2.txt > test3.txt

[root@qiandu ~]# cat test*.txt

hello world,

how are you,

i am fine

hello world,

how are you,

i am fine

檔案輸出重定向

符號作用

命令 > 檔案

將標準輸出重定向到乙個檔案中(清空原有檔案的資料)

命令 2> 檔案

將錯誤輸出重定向到乙個檔案中(清空原有檔案的資料)

命令 >> 檔案

將標準輸出重定向到乙個檔案中(追加到原有內容的後面)

命令 2>> 檔案

將錯誤輸出重定向到乙個檔案中(追加到原有內容的後面)

命令 >> 檔案 2>&1 或 命令 &>> 檔案

將標準輸出與錯誤輸出共同寫入到檔案中(追加到原有內容的後面)

[root@qiandu ~]# ls test2.txt > test2.txt

[root@qiandu ~]# ls test3 2> test3.txt

[root@qiandu ~]# cat test*.txt

test2.txt

ls: cannot access test3: no such file or directory

[root@qiandu ~]# echo "hello world" > test2.txt

[root@qiandu ~]# echo "hello world2" >> test2.txt

[root@qiandu ~]# cat test2.txt

hello world

hello world2

[root@qiandu ~]# ls test2 2>> test3.txt

[root@qiandu ~]# cat test3.txt

ls: cannot access test3: no such file or directory

ls: cannot access test2: no such file or directory

[root@qiandu ~]# echo "this is a test" &> test2.txt

[root@qiandu ~]# ls *** &>> test2.txt

[root@qiandu ~]# cat test2.txt

this is a test

ls: cannot access ***: no such file or directory

管道命令符

管道命令符(任意門)把前乙個命令原本要輸出到螢幕的標準正常資料當作是後乙個命令的標準輸入,其書寫方式為:命令a | 命令b

[root@qiandu ~]# grep "/sbin/nologin" /etc/passwd | wc -l

33

linux輸入輸出重定向及管道

重定向 1.1,正確內容的重定向符號 輸出重定向到乙個檔案或裝置 覆蓋原來的檔案 輸出重定向到乙個檔案或裝置 強制覆蓋原來的檔案 輸出重定向到乙個檔案或裝置 追加原來的檔案 1.2,標準錯誤重定向符號 2 將乙個標準錯誤輸出重定向到乙個檔案或裝置 覆蓋原來的檔案 b shell 2 將乙個標準錯誤輸...

Linux輸入輸出重定向以及管道

和程式的標準輸出重定向一樣,程式的錯誤輸出也可以重新定向。使用符號2 或追加符號2 表示對錯誤輸出裝置重定向。例如下面的命令 ls usr tmp 2 err.file 可在螢幕上看到程式的正常輸出結果,但又將程式的任何錯誤資訊送到檔案err.file中,以備將來檢查用。如果你對 2 感到很迷惑,這...

Linux重定向(輸入輸出重定向)

我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...