在這裡,重定向可以做如下理解:
原來的輸出方式好比是向乙個水池(螢幕)中放水的水龍頭,水就是要輸出的內容
當把水龍頭轉接到不是水池的桶(檔案)中時,就是重定向輸出了。
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 把標準錯誤重定向...