路徑名稱擴展
於 Bash shell 之命令列上指定 path 時,可運用一些特殊字符,來協助搜尋符合規則樣式的檔案目錄,
而此特殊字符一般稱之為 Wildcards(通配字元/萬用字元)或”Pattern matching”。
範例:
[barry@rhel ~]$ touch file{AB,c,12}{de,456} 'my file' 'test file'
[barry@rhel ~]$ export LANG=C
→ 先調整語系為 C,以利測試。
以下使用 echo 指令測試 expansion:
[barry@rhel ~]$ echo file[1-6]*
[barry@rhel ~]$ echo file[A-Z]???
[barry@rhel ~]$ echo abc{3..6}
abc3 abc4 abc5 abc6
→ {3..6} 展開後為 3 4 5 6。
[barry@rhel ~]$ echo file\* file*
[barry@rhel ~]$ (echo {ab,123}file;echo good dog) > test.txt
→ 將兩 echo 指令執行結果輸出至 test.txt 檔案中。
[barry@rhel ~]$ cat /etc/passwd | cat -n | head -n 30 \ > | tail -n 11 | tee testfile
→ 將 Enter key 跳脫出去,以便於第二提示號下繼續輸入未完成之指令敘述。
↑萬用字元 | 符號 | ↓正規表示式 |
代表任何字串,可以是 0~n 個字元。 | * | 在「*」的前一個字元可以出現 0~n 次。 |
任意單一字元,含空白字元 。 | ? | 表前一個字元可出現 0 或 1 次。 |
表括弧內任一字元。使用-表範圍,如[a-e]表 a~e 任一字元。 | [ab…] | 表括弧內任一字元。[a-z0-9]中之「-」表一段連續範圍。 |
非括弧內任一字元。 | [!ab…] | 非括弧內任一字元。 |
非括弧內任一字元。 | [^ab…] | |
指令群組,表示指令之集合。 | ( ) |
表字串群組。 EX1: (abc)? EX2: x(ab|cd)y |
大括弧擴展(Brace expansion):將{}內之字串展開。字串間用”,”做區隔。 | { } | |
跳脫字符”\”(escape character): Bash Shell 中有許多字元具特殊涵義,當欲將這些特殊字元當成一般字元對待時,可把此字元緊置於”\”後方(之間無其他字元),如此即忽略其特殊涵義。 當欲跳脫包含多個特殊字元之字串時,可用單引號或雙引號將字串包住。 |
\ | 置於「\」後之特殊字符,會被當成一般字元處理。 |
. | 表任意單一字元,含空白字元。 | |
+ | 表前一個字元可出現 1~n 次。 | |
| | abc|xy|mn 表 abc 或 xy 或 mn。 | |
^abc | 表示該行是以 abc 為首。 | |
abc$ | 表示該行是以 abc 為尾。 |
正規表示式(Regular Expression)
- 簡稱 regexp 或 RE。
- 是一種描述字串的方法,藉由所輸入字串來進行樣式比對,以達搜尋、替代或刪除等目的。
- 輸入字串裡常指定一些特殊字符於其中,以提高執行效率。
- 支援 regexp 的指令有 grep、sed、vim 等。
Note:一般於正規表示法的字串前後會加上單引號,
其目的是為了避免讓這些特殊字符提早被 shell 解析掉,以便能將其完整的交給支援 RE 的指令來處理。
EX: grep ’barry chen’ /etc/passwd
更多資料 http://linux.vbird.org/linux_basic/0330regularex.php#basic_regexp
留言列表