Linux中重定向輸出的學習

2021-06-20 18:24:17 字數 3563 閱讀 3683

在這裡,重定向可以做如下理解:

原來的輸出方式好比是向乙個水池(螢幕)中放水的水龍頭,水就是要輸出的內容

當把水龍頭轉接到不是水池的桶(檔案)中時,就是重定向輸出了。

linux中的輸出方式主要有:

標準輸出的兩種方式:

stdout 標準輸出

stderr 標準錯誤

螢幕的輸出可以被重定向,使得原來應該輸出到螢幕上的內容被重定向到其他的地方,

比如說是檔案:

格式:命令 操作 檔名

e.g.ls /etc -l 1> ls.txt 2>err.txt

其中:命令還是原來操作的命令,所有的已知有輸出命令都是可以的。

操作是輸出的型別,有

1> 一類,stdout

2> 二類,stderr

&> 所有(包括1類和2類訊息)注意此時輸出中如果有錯誤資訊,會首先輸出,無論先執行的是1類還是2類輸出

>  如果不加數字(型別)預設的是標準輸出,即1

它所執行的操作是首先將重定向到的檔案進行刪除,

檔名就是要被重定向到的地方,當原路徑中已有此檔案就會被覆蓋,沒有則生成。

如果想原檔案中的內容不被覆蓋而是在後面進行追加(寫在後面)那麼就可以使用如下的操作

1>> 同 >>

2>>

&>>

追加模式時如果被重定向的輸出有標準輸出和標準錯誤輸出,那麼

e.g. ls /etc /wrongdir 1>>ls.txt 2>>err.txt

ls /etc /wrongdor 1>>ls.txt 2>>ls.txt

不過我在ubuntu12.04中試過後看到使用&>>也是可以的。

當某類輸出被重定向後,該類輸出便不會在螢幕上顯示

當標準輸出和標準錯誤輸出同時存在的時候,根據操作的種類決定重定向內容和重定向的檔案。

head 命令:從頭看

tail 命令:從尾看

後面可以加上引數進行處理:

e.g.     cat 5.txt | head -n5   察看前5行的內容

cat 5.txt | head -n 10 |tail -n 7 察看4,5,6,7,8,9,10共7行內容用這種方法可以快速擷取某大檔案中的某一段

cat 5.txt | head -n 10 |tail -n 7 >result.txt

-------------------------------------

grep 利用正規表示式 達到字元匹配的效果,

-i (case-insensitive) 中的關鍵開關  表示忽略大小寫的差異

-n  列印出搜到的內容所在的行號 配合vim使用的話,可用vim +行號數字 路徑

-v  排除掉給定的東西,給出剩下的東西verse

cat filename |grep ^# -v |grep -v ^$

cat filename |gerp -ev '^(#|$)'--------------注意正規表示式的寫法

以上的兩種寫法是一致的

-a數字      after    在a之後的數字行的內容

-b數字        before     在b之前的數字行的內容

---------------------------------------

cut命令 按照制定的內容將內容進行切割,相當於split()函式

-d (delimiter) 制定分割的分隔符 預設的是tab e.g.  cut -d: #以:進行切割

-f 制定要列印的列   cut -d: -f 1

-c 按照字元進行切割  echo "weuhi-qiege-sdfijo"|cut -c 7-11   #切割qiege

----------------------------------------

sort命令 對內容進行排序

如果直接用sort命令而不制定按照的內容的格式進行排序,那麼預設按照的方式是字元的字典順序

-n 開關,對內容進行排序,排序格式按照的內容是數字 預設是公升序

-r (reverse)降順

-t c使用c作為字段分隔符

-k x對欄位x排序     sort -t: -k 3  按照:進行分割後按照第三列進行分割

-----------------------------------------

uniq命令

將相鄰的兩行相同的內容進行移除

-c 用來統計重複的個數

cat num.txt | sort |uniq -c   用於統計文字中出現的內容

-----------------------------------------

文字分析工具             

wc 對文字進行計數

-l 行數統計

-w 單詞數統計

-c 位元組統計

-m 字元統計(不顯示)

-----------------------------------------

文字分析 對比檔案

diff 對文字進行對比分析 輸出儲存到乙個檔案中,稱呼其為「補丁檔案」

使用時使用 -u作為「統一」格式的diff 適用於補丁檔案,便於以後用patch命令進行打補丁

diff filename1  filename2

出現結果就是兩者檔案的不同  顯示的是兩個檔案中的不同

filename1為左檔案    < 原檔案

filename2為右檔案    > 新檔案

-----------------------------------------

patch  對檔案進行大補丁

複製所作的改變到其他檔案中,使用-b自動備份要改變的檔案

diff -u foo.conf-broken foo.conf-works >foo.patch

patch -b foo.conf-broken ----------------------------------------

tr traslate 翻譯轉換

----------------------------------------

命令sed(stream editor)全文替換

但是其編輯的內容只是流的編輯,當然可以替換的內容重定向到檔案

sed 『s/search/replace/』將要找的內容(search)換成要替換成的內容(replace)

其中/是定界符 還可以是@ #等

g 全域性開關,使得如果一行中出現多個要被替換的內容時可以全部被替換

i 忽略大小寫

d 刪除

命令前新增 m,n表示對[m,n]行區間的內容執行sed '87,93s/search/replace/'命令

m=87 n=93

sed '/cat/,/dog/s/search/replace'  

遇到cat直到dog的內容被替換掉 [cat,dog]

-----------------------------------------

sed -e '表示式1' -e '表示式2' -e '表示式3'

-e開關用法    用一次sed可以執行多個表示式

-f開關用法    將命令的表示式寫到檔案中,然後用sed -f myrule.txt來執行

linux輸出重定向

標準輸入輸出 裝置 鍵盤 顯示器 顯示器 裝置檔名 dev stdin dev sdtout dev sdterr 檔案描述符 0 1 2 型別 標準輸入 標準輸出 標準錯誤輸出 輸出重定向 標準輸出重定向 命令 檔案 以覆蓋的方式,把命令的正確輸出輸出到指定的檔案或裝置當中 命令 檔案 以追加的方...

Linux輸出重定向

linux shell 環境中支援輸入輸出重定向,用符號 和 來表示。0 1和2分別表示標準輸入 標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2 a.txt 表示將錯誤資訊輸出到檔案a.txt中。同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準...

linux輸出重定向

linux shell使用 和 符號來對輸入輸出做重定向。約定 0,1,2分別代表 標準輸入,標準輸出,標準錯誤輸出。下面以ls命令為例加以說明,其他命令或程式的使用方式相同。例1 把標準輸出重定向到log.txt root localhost es ls 1 log.txt 例2 把標準錯誤重定向...