選項名 | 快捷開關(guān) | 含義 |
---|---|---|
allexport | -a | 從這個選項中被設(shè)置開始就自動標明要輸出的新變量或修改過的變量,直至選項被復位 |
braceexpand | -B | 打開花括號擴展,它是一個默認設(shè)置 |
emacs | 使用emacs內(nèi)置編輯器進行命令行編輯,是一個默認設(shè)置 | |
errexit | -e | 當命令返回一個非零退出狀態(tài)(失?。r退出。讀取初始化文件時不設(shè)置 |
histexpand | -H | 執(zhí)行歷史替換時打開!和!!擴展,是一個默認設(shè)置 |
history | 打開命令行歷史、默認為打開 | |
ignoreeof | 禁止用EOF(Ctrl+D)鍵退出shell。必須鍵入exit才能退出。等價于設(shè)置shell變量IGNOREEOF=10 | |
keyword | -k | 將關(guān)鍵字參數(shù)放到命令的環(huán)境中 |
interactive-comments | 對于交互式shell,把#符后面的文本作為注釋 | |
monitor | -m | 設(shè)置作業(yè)控制 |
noclobber | -C | 防止文件在重定向時被重寫 |
noexec | -n | 讀命令,但不執(zhí)行。用來檢查腳本的語法。交互式運行時不開啟 |
noglob | -d | 禁止用路徑名擴展。即關(guān)閉通配符 |
notify | -b | 后臺作業(yè)完成時通知用戶 |
nounset | -u | 擴展一個未設(shè)置的變量時顯示一個錯誤信息 |
onecmd | -t | 在讀取和執(zhí)行命令后退出 |
physical | -P | 設(shè)置時,在鍵入cd或pwd禁止符號鏈接。用物理目錄代替 |
privileged | -p | 設(shè)置后,shell不讀取.profile或ENV文件,且不從環(huán)境繼承shell函數(shù),將自動為setuid腳本開啟特權(quán) |
verbose | -v | 為調(diào)試打開verbose模式 |
vi | 使用vi內(nèi)置編輯器進行命令行編輯 | |
xtrace | -x | 為調(diào)試打開echo模式 |
shopt命令選項
shopt命令是set命令的一種替代,很多方面都和set命令一樣,但它增加了很多選項??捎惺褂谩?p”選項來查看shopt選項的設(shè)置?!?u”開關(guān)表示一個復位的選項,“-s”表示選項當前被設(shè)置。
shopt命令參數(shù)用法
選項 | 含義 |
---|---|
cdable_vars | 如果給cd內(nèi)置命令的參數(shù)不是一個目錄,就假設(shè)它是一個變量名,變量的值是將要轉(zhuǎn)換到的目錄 |
cdspell | 糾正cd命令中目錄名的較小拼寫錯誤.檢查的錯誤包括顛倒順序的字符,遺漏的字符以及重復的字符.如果找到一處需修改之處,正確的路徑將打印出,命令將繼續(xù).只用于交互式shell |
checkhash | bash在試圖執(zhí)行一個命令前,先在哈希表中尋找,以確定命令是否存在.如果命令不存在,就執(zhí)行正常的路徑搜索 |
checkwinsize | bash在每個命令后檢查窗口大小,如果有必要,就更新LINES和COLUMNS的值 |
cmdhist | bash試圖將一個多行命令的所有行保存在同一個歷史項中.這是的多行命令的重新編輯更方便 |
dotglob | Bash在文件名擴展的結(jié)果中包括以點(.)開頭的文件名 |
execfail | 如果一個非交互式shell不能執(zhí)行指定給exec內(nèi)置命令作為參數(shù)的文件,它不會退出.如果exec失敗,一個交互式shell不會退出 |
expand_aliases | 別名被擴展.缺省為打開 |
extglob | 打開擴展的模式匹配特性(正常的表達式元字符來自Korn shell的文件名擴展) |
histappend | 如果readline正被使用,用戶有機會重新編輯一個失敗的歷史替換 |
histverify | 如果設(shè)置,且readline正被使用,歷史替換的結(jié)果不會立即傳遞給shell解釋器.而是將結(jié)果行裝入readline編輯緩沖區(qū)中,允許進一步修改 |
hostcomplete | 如果設(shè)置,且readline正被使用,當正在完成一個包含@的詞時bash將試圖執(zhí)行主機名補全.缺省為打開 |
huponexit | 如果設(shè)置,當一個交互式登錄shell退出時,bash將發(fā)送一個SIGHUP(掛起信號)給所有的作業(yè) |
interactive_comments | 在一個交互式shell中.允許以#開頭的詞以及同一行中其他的字符被忽略.缺省為打開 |
lithist | 如果打開,且cmdhist選項也打開,多行命令講用嵌入的換行符保存到歷史中,而無需在可能的地方用分號來分隔 |
mailwarn | 如果設(shè)置,且bash用來檢查郵件的文件自從上次檢查后已經(jīng)被訪問,將顯示消息”The mail in mailfile has been read” |
nocaseglob | 如果設(shè)置,當執(zhí)行文件名擴展時,bash在不區(qū)分大小寫的方式下匹配文件名 |
nullglob | 如果設(shè)置,bash允許沒有匹配任何文件的文件名模式擴展成一個空串,而不是他們本身 |
promptvars | 如果設(shè)置,提示串在被擴展后再進行變量和參量擴展.缺省為打開 |
restricted_shell | 如果shell在受限模式下啟動就設(shè)置這個選項.該值不能被改變.當執(zhí)行啟動文件時不能復位該選項,允許啟動文件發(fā)現(xiàn)shell是否受限 |
shift_verbose | 如果該選項設(shè)置,當移動計數(shù)超出位置參量個數(shù)時,shift內(nèi)置命令將打印一個錯誤消息 |
sourcepath | 如果設(shè)置,source內(nèi)置命令使用PATH的值來尋找作為參數(shù)提供的文件的目錄.缺省為打開 |
source | 點(.)的同義詞 |
刪除目錄下除了filename之外的所有文件
下來列出了不同的擴展模式匹配操作符,這些模式列表是一個用 | 分割包含一個或者多個文件名的列表:
通配符 | 含義 |
---|---|
*(模式列表) | 匹配 0 個或者多個出現(xiàn)的指定模式 |
?(模式列表) | 匹配 0 個或者 1 個出現(xiàn)的指定模式 |
@(模式列表) | 匹配 1 個或者多個出現(xiàn)的指定模式 |
!(模式列表) | 匹配除了一個指定模式之外的任何內(nèi)容 |
打開extglob shell選項
shopt -s extglob
刪除目錄下除了filename之外的所有文件
rm -v !("filename")
刪除除了filename1和filename2之外的所有文件
rm -v !("filename1"|"filename2")
刪除除了 .zip 之外的所有文件
rm -i !(*.zip)
關(guān)閉extglob shell選項
shopt -u extglob
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。