文章轉載自:bash常見特殊符號及含義html
bash命令和shell腳本編程中,一些特殊字符具備特殊含義。不瞭解的人每每認爲其晦澀難懂神祕如符文,而掌握其含義則能在使用過程當中起到事半功倍的效果。linux
本文整理bash命令中經常使用的特殊符號並簡要說明其意義,但願對經常使用bash等shell的人有幫助。文章主要參考tldp的Advanced Bash-Scripting Guide,英文不熟悉的網友可查看linux中國刪減版的翻譯:Bash 中的特殊字符大全。本文不求全(太多特殊的符號不多用到),更注重常見易用易懂的特殊字符(好比**$_**很經常使用,但上述兩個文檔中均沒有),讓讀者看完後能迅速上手。正則表達式
簡單的特殊字符
- !:最直接的功能是邏輯非,最經常使用的功能是操做歷史命令(注意此功能不能用在shell編程中)。例如**!!執行上一條命令,!$指代上一條命令的最後一個單詞,!#**指代執行的整條命令,更多可參考:bash快捷鍵整理;
- ,:最直接的功能是表達式分隔符,較常見的是用在**${}中用於參數替代**,一個逗號表示首字母小寫,兩個逗號表示所有小寫(bash 4.0版本添加的功能):
var=FooBar
echo ${var,} // 結果是fooBar
echo ${var,,} // 結果是foobar
- .:最多見的功能是當前目錄,有用的功能是代替
source
命令,其餘功能包括正則表達式中的任意字符
- ::空命令(返回0),也經常使用做PATH等環境變量中的分隔符,神奇的功能是能夠做函數名
- ;:命令分隔符
- ~:用戶主目錄,代替$HOME環境變量
- #:註釋符號,也是字符串裁截符
- &:讓程序放入後臺執行,可單獨使用,也常配合
nohup
一塊兒讓程序脫離當前終端
- /:文件夾分隔符,單獨表明根目錄,也是除號
- *:最經常使用是匹配通配符,也是乘號
- \:轉義或換行
- -:經常使用功能的是命令短選項,例如
ls -ah
;實用的用法是單獨使用表明前一個目錄,以及取代標準輸入輸出;也是減號
- +:經常使用在正則表達式中表示至少匹配一次,也是加號
- |:管道
- ?:匹配一個字符,或正則表達式中的0-1次匹配,也是三元運算符
- ..:上級目錄
- <<:here-doc
- --:最經常使用的是長選項符號,神奇的用法是單獨使用時表明後面參數不作解析,也是遞減符號
- <<<:here-string,與**<<**的區別是不用手動輸入
- &&, ||:邏輯與和邏輯或,經常使用在測試結構或多條命令有條件執行
- >, <, >>, &<, >&:輸入輸出重定向
- {} ;:
find
命令中與-exec
一塊兒使用,表明文件的絕對路徑。注意反斜杆和分號都不能省略
以**$**開頭的特殊字符
**$**符號除引用變量、執行子命令外,還有許多晦澀但又有用的黑魔法。其常常出如今hell腳本、makefile文件中,所以很是有必要掌握。本節特意選出常見的用法。shell
- $$:當前腳本的進程id
- $!:上一個後臺進程的id
- $#:參數個數
- $[0-n]:第0-n個參數,第0個參數即命令自己
- $?:上一條命令的退出碼,用來判斷命令是否執行成功
- $_:上一條命令的最後一個單詞,命令行中與**!$**相同
- $@:所有參數(數組)
- $*:所有參數(字符串)
參考
- Advanced Bash-Scripting Guide
- Bash 中的特殊字符大全
- bash快捷鍵整理