1.shopt 命令簡介
2.shopt 引數含義說明
3.shopt 使用示例
1)extglob 引數
shopt 命令用於顯示和設定shell中的行為選項,通過這些選項以增強shell易用性。
shopt命令若不帶任何引數選項,則可以顯示所有可以設定的shell操作選項。
shopt [-psu] [optname …]
-s 開啟某個選項.
-u 關閉某個選項.
-p 列出所有可設定的選項.
執行shopt 看看都有那些選項 與 系統的預設值
[root@master four]# shopt
autocd off
cdable_vars off
cdspell off
checkhash off
checkjobs off
checkwinsize on
cmdhist on
compat31 off
compat32 off
compat40 off
dirspell off
dotglob off
execfail off
expand_aliases on
extdebug off
extglob on
extquote on
failglob off
force_fignore on
globstar off
gnu_errfmt off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
上面展示了 shopt 所有的引數。這一大堆引數估計大家看名字難以猜測含義,下面給出這些引數的含義。
cdable_vars:
如果給cd內建命令的引數不是乙個目錄,就假設它是乙個變數名,變數的值是將要轉換到的目錄
cdspell:
糾正cd命令中目錄名的較小拼寫錯誤.檢查的錯誤包括顛倒順序的字元,遺漏的字元以及重複的字元.如果找到一處需修改之處,正確的路徑將列印出,命令將繼續.只用於互動式shell
checkhash:
bash在試圖執行乙個命令前,先在雜湊表中尋找,以確定命令是否存在.如果命令不存在,就執行正常的路徑搜尋
checkwinsize:
bash在每個命令後檢查視窗大小,如果有必要,就更新lines和columns的值
cmdhist:
bash試圖將乙個多行命令的所有行儲存在同乙個歷史項中.這是的多行命令的重新編輯更方便
dotglob:
bash在檔名擴充套件的結果中包括以點(.)開頭的檔名
execfail:
如果乙個非互動式shell不能執行指定給exec內建命令作為引數的檔案,它不會退出.如果exec失敗,乙個互動式shell不會退出
expand_aliases:
別名被擴充套件.預設為開啟
extglob:
開啟擴充套件的模式匹配特性(正常的表示式元字元來自korn shell的檔名擴充套件)
如果readline正被使用,使用者有機會重新編輯乙個失敗的歷史替換
histverify:
如果設定,且readline正被使用,歷史替換的結果不會立即傳遞給shell直譯器.而是將結果行裝入readline編輯緩衝區中,允許進一步修改
hostcomplete:
如果設定,且readline正被使用,當正在完成乙個包含@的詞時bash將試圖執行主機名補全.預設為開啟
huponexit:
如果設定,當乙個互動式登入shell退出時,bash將傳送乙個sighup(掛起訊號)給所有的作業
interactive_comments:
在乙個互動式shell中.允許以#開頭的詞以及同一行中其他的字元被忽略.預設為開啟
lithist:
如果開啟,且cmdhist選項也開啟,多行命令講用嵌入的換行符儲存到歷史中,而無需在可能的地方用分號來分隔
mailwarn:
如果設定,且bash用來檢查郵件的檔案自從上次檢查後已經被訪問,將顯示訊息」the mail in mailfile has been read」
nocaseglob:
如果設定,當執行檔名擴充套件時,bash在不區分大小寫的方式下匹配檔名
nullglob:
如果設定,bash允許沒有匹配任何檔案的檔名模式擴充套件成乙個空串,而不是他們本身
promptvars:
如果設定,提示串在被擴充套件後再進行變數和參量擴充套件.預設為開啟
restricted_shell:
如果shell在受限模式下啟動就設定這個選項.該值不能被改變.當執行啟動檔案時不能復位該選項,允許啟動檔案發現shell是否受限
shift_verbose:
如果該選項設定,當移動計數超出位置參量個數時,shift內建命令將列印乙個錯誤訊息
sourcepath:
如果設定,source內建命令使用path的值來尋找作為引數提供的檔案的目錄.預設為開啟
source:
點(.)的同義詞
博主對 shopt 中的引數使用的並不太多,
extglob 引數 :
主要使用的引數是 extglob
如果開啟 extglob 選項, shell 將啟用模式匹配. 可參考 ■ shell 模式匹配
檢視 extglob 選項是否開啟(預設是off)
[root@master load_data]# shopt extglob
extglob off
開啟 extglob 選項
此時檢視 extglob 選項是否開啟
[root@master four]# shopt -s extglob
[root@master four]# shopt extglob
extglob on
關閉 extglob 選項
[root@master four]# shopt -u extglob
[root@master four]# shopt extglob
extglob off
當前目錄下3個檔案以及兩個目錄
$ ls
dir1 dir2 file1 file2 file3
新建乙個 backup 目錄
$ mkdir -p backup
將除了 backup 目錄的其他檔案和目錄移動到 backup 目錄下
$ mv !(backup) backup/
檢視結果
$ ls
backup
$ ls backup/
dir1 dir2 file1 file2 file3
$ ls
backup dir1 dir2 file1 file2 file3
$ rm -rf file[1-3]
$ ls
backup dir1 dir2
$ mv !(dir1|file1|backup) backup/
$ ls
backup dir1 file1
$ ls backup/
dir2 file2 file3
其他的需求還需要結合 shell 模式匹配進行舉一反三.
原文:
bash選項設定 shopt命令
shopt命令是set命令的一種替代 p 選項來檢視shopt選項的設定。u 開關表示乙個復位的選項,s 表示選項當前被設定。shopt命令選項 shopt p 檢視當前設定情況 shopt u cdable vars shopt u cdspell shopt u checkhash shopt ...
Bash中的shopt選項
bash中的shopt選項 shopt命令用於顯示和設定shell中的行為選項,通過這些選項以增強shell易用性。shopt命令若不帶任何引數選項,則可以顯示所有可以設定的shell操作選項。set選項與shopt選項是兩組不同的內容,用set o和shopt p可以分別檢視兩個組所有的開啟和關閉...
Bash內建命令 read
read ers a aname d delim i text n nchars n nchars p prompt t timeout u fd name 從標準輸入中讀取一行,或從 u選項指定的檔案描述符fd讀取一行,拆成單詞後,依次賦值給name echo 1 2 3 foo read a b...