bash常見特殊符號及含義

文章轉載自:bash常見特殊符號及含義

bash命令和shell腳本編程中,一些特殊字符具有特殊含義。不瞭解的人往往認爲其晦澀難懂神祕如符文,而掌握其含義則能在使用過程中起到事半功倍的效果。

本文整理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一起使用,代表文件的絕對路徑。注意反斜杆和分號都不能省略

$開頭的特殊字符

&dollar;符號除引用變量、執行子命令外,還有許多晦澀但又有用的黑魔法。其經常出現在hell腳本、makefile文件中,因此非常有必要掌握。本節特地選出常見的用法。

  • $$:當前腳本的進程id
  • $!:上一個後臺進程的id
  • $#:參數個數
  • $[0-n]:第0-n個參數,第0個參數即命令本身
  • $?:上一條命令的退出碼,用來判斷命令是否執行成功
  • &dollar;_:上一條命令的最後一個單詞,命令行中與!$相同
  • $@:全部參數(數組)
  • $*:全部參數(字符串)

參考

  1. Advanced Bash-Scripting Guide
  2. Bash 中的特殊字符大全
  3. bash快捷鍵整理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章