1重定向
1.1 重定向符號
> 輸出重定向到一個文件或設備 覆蓋原來的文件
>! 輸出重定向到一個文件或設備 強制覆蓋原來的文件
>> 輸出重定向到一個文件或設備 追加原來的文件
< 輸入重定向到一個程序
1.2標準錯誤重定向符號
2> 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件 b-shell
2>> 將一個標準錯誤輸出重定向到一個文件或設備 追加到原來的文件
2>&1 將一個標準錯誤輸出重定向到標準輸出 註釋:1 可能就是代表 標準輸出
>& 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件 c-shell
|& 將一個標準錯誤 管道 輸送 到另一個命令作爲輸入
1.3命令重導向示例
在 bash 命令執行的過程中,主要有三種輸出入的狀況,分別是:
1. 標準輸入;代碼爲 0 ;或稱爲 stdin ;使用的方式爲 <
2. 標準輸出:代碼爲 1 ;或稱爲 stdout;使用的方式爲 1>
3. 錯誤輸出:代碼爲 2 ;或稱爲 stderr;使用的方式爲 2>
[test @test test]# ls -al > list.txt
將顯示的結果輸出到 list.txt 文件中,若該文件以存在則予以取代!
[test @test test]# ls -al >> list.txt
將顯示的結果累加到 list.txt 文件中,該文件爲累加的,舊數據保留!
[test @test test]# ls -al 1> list.txt 2> list.err
將顯示的數據,正確的輸出到 list.txt 錯誤的數據輸出到 list.err
[test @test test]# ls -al 1> list.txt 2> &1
將顯示的數據,不論正確或錯誤均輸出到 list.txt 當中!錯誤與正確文件輸出到同一個文件中,則必須以上面的方法來寫!不能寫成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
將顯示的數據,正確的輸出到 list.txt 錯誤的數據則予以丟棄! /dev/null ,可以說成是黑洞裝置。爲空,即不保存。
1.4爲何要使用命令輸出重導向
• 當屏幕輸出的信息很重要,而且我們需要將他存下來的時候;
• 背景執行中的程序,不希望他干擾屏幕正常的輸出結果時;
• 一些系統的例行命令(例如寫在 /etc/crontab 中的文件)的執行結果,希望他可以存下來時;
• 一些執行命令,我們已經知道他可能的錯誤訊息,所以想以『 2> /dev/null 』將他丟掉時;
• 錯誤訊息與正確訊息需要分別輸出時。
2 grep
2.1 grep簡介
grep 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。通常grep有三種版本grep、egrep(等同於grep -E)和fgrep。egrep爲擴展的grep,fgrep則爲快速grep(固定的字符串來對文本進行搜索,不支持正則表達式的引用但是查詢極爲快速)。grep是Linux文本處理三劍客之一。
2.2 grep使用方式
使用方式:grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
--color=auto:對匹配到的文本着色後進行高亮顯示;
-i:忽略字符的大小寫
-o:僅顯示匹配到的字符串
-v:顯示不能被模式匹配到的行
-E:支持使用擴展的正則表達式
-q:靜默模式,即不輸出任何信息
-A #:顯示被模式匹配的行及其後#行
-B #:顯示被模式匹配的行及其前#行
-C #:顯示被模式匹配的行及其前後各#行
注:使用grep匹配時需使用雙引號引起來(單引號爲強引用),防止被系統誤認爲參數或者特殊命令而報錯。2.3擴展grep使用方式
使用方式:egrep [OPTIONS] PATTERN [FILE...]
grep -E [OPTIONS] PATTERN [FILE...]
-i:忽略字符的大小寫
-o:僅顯示匹配到的字符串本身
-v:顯示不被模式匹配到的行
-q:靜默模式,即不輸出任何信息
-A #:顯示被模式匹配的行及其後#行
-B #:顯示被模式匹配的行及其前#行
-C #:顯示被模式匹配的行及其前後各#行
-G:支持基本正則表達式
2.4 grep正則表達式元字符
‘^‘: 錨定行首
‘$’: 錨定行尾
‘.‘: 匹配任一一個字符
‘*’: 匹配零個或多個先前字符
‘\?‘:匹配其前面的字符0次或者1次;
‘\+’:匹配其前面的字符1次或者多次;
‘\{m\}‘:匹配其前面的字符m次(\爲轉義字符)
‘\{m,n\}’:匹配其前面的字符至少m次,至多n次
‘[]‘: 匹配一個指定範圍內的字符 | ‘[^]’匹配指定範圍外的任意單個字符
‘\<‘或‘\b’:錨定詞首,‘\>’或‘\b’:錨定詞尾(可用\<PATTERN\>:匹配完整單詞)
‘\(\)’:將多個字符當做一個整體進行處理
後向引用:引用前面的分組括號中的模式所匹配到的字符
分組括號中的模式匹配到的內容或被正則表達式引擎自動記錄於內部的變量中:
\1:模式從左側起,第一個左括號及與之匹配的右括號之間模式匹配到的內容
\2:模式從左側起,第二個左括號及與之匹配的右括號之間模式匹配到的內容...
擴展正則表達式與正則表達式略有不同:
'[]':依舊匹配指定範圍內的任意單個字符;但是有很多特殊匹配方式。
[:digit:] 匹配任意單個數字
[:lower:] 匹配任意單個小寫字母
[:upper:] 匹配任意單個大寫字母
[:alpha:] 匹配任意單個字母
[:alnum:] 匹配任意單個字母或數字
[:punct:] 匹配任意單個符號
[:space:] 匹配單個空格
一些地方取消了轉義字符的使用:
‘?‘:匹配其前面的字符0次或者1次;
‘+’:匹配其前面的字符1次或者多次;
‘{m}‘:匹配其前面的字符m次(\爲轉義字符)
‘{m,n}’:匹配其前面的字符至少m次,至多n次
():將一個或多個字符捆綁在一起,當做一個整體進行處理,反向引用照常使用。
‘|’:或(注:‘C|cat’爲C與cat,‘(C|c)at纔是Cat與cat’)
參考:https://www.cnblogs.com/Jeffding/p/7230487.html
http://blog.csdn.net/songyang516/article/details/6758256
Linux 學習視頻:https://edu.csdn.net/course/detail/6032