Bash內建命令 shopt

2021-09-03 03:13:09 字數 4673 閱讀 2557

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...