溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell中set與shopt命令如何使用

發布時間:2021-06-25 15:44:15 來源:億速云 閱讀:251 作者:Leah 欄目:開發技術

Shell中set與shopt命令如何使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

set命令選項

set命令作用主要是顯示系統中已經存在的shell變量,以及設置shell變量的新變量值。使用set更改shell特性時,符號"+"和"-"的作用分別是打開和關閉指定的模式。set命令不能夠定義新的shell變量。如果要定義新的變量,可以使用declare命令以變量名=值的格式進行定義即可。

內置set命令選項

選項名快捷開關含義
allexport-a從這個選項中被設置開始就自動標明要輸出的新變量或修改過的變量,直至選項被復位
braceexpand-B打開花括號擴展,它是一個默認設置
emacs
使用emacs內置編輯器進行命令行編輯,是一個默認設置
errexit-e當命令返回一個非零退出狀態(失?。r退出。讀取初始化文件時不設置
histexpand-H執行歷史替換時打開!和!!擴展,是一個默認設置
history
打開命令行歷史、默認為打開
ignoreeof
禁止用EOF(Ctrl+D)鍵退出shell。必須鍵入exit才能退出。等價于設置shell變量IGNOREEOF=10
keyword-k將關鍵字參數放到命令的環境中
interactive-comments
對于交互式shell,把#符后面的文本作為注釋
monitor-m設置作業控制
noclobber-C防止文件在重定向時被重寫
noexec-n讀命令,但不執行。用來檢查腳本的語法。交互式運行時不開啟
noglob-d禁止用路徑名擴展。即關閉通配符
notify-b后臺作業完成時通知用戶
nounset-u擴展一個未設置的變量時顯示一個錯誤信息
onecmd-t在讀取和執行命令后退出
physical-P設置時,在鍵入cd或pwd禁止符號鏈接。用物理目錄代替
privileged-p設置后,shell不讀取.profile或ENV文件,且不從環境繼承shell函數,將自動為setuid腳本開啟特權
verbose-v為調試打開verbose模式
vi
使用vi內置編輯器進行命令行編輯
xtrace-x為調試打開echo模式

shopt命令選項

shopt命令是set命令的一種替代,很多方面都和set命令一樣,但它增加了很多選項??捎惺褂谩?p”選項來查看shopt選項的設置?!?u”開關表示一個復位的選項,“-s”表示選項當前被設置。

shopt命令參數用法

選項含義
cdable_vars如果給cd內置命令的參數不是一個目錄,就假設它是一個變量名,變量的值是將要轉換到的目錄
cdspell糾正cd命令中目錄名的較小拼寫錯誤.檢查的錯誤包括顛倒順序的字符,遺漏的字符以及重復的字符.如果找到一處需修改之處,正確的路徑將打印出,命令將繼續.只用于交互式shell
checkhashbash在試圖執行一個命令前,先在哈希表中尋找,以確定命令是否存在.如果命令不存在,就執行正常的路徑搜索
checkwinsizebash在每個命令后檢查窗口大小,如果有必要,就更新LINES和COLUMNS的值
cmdhistbash試圖將一個多行命令的所有行保存在同一個歷史項中.這是的多行命令的重新編輯更方便
dotglobBash在文件名擴展的結果中包括以點(.)開頭的文件名
execfail如果一個非交互式shell不能執行指定給exec內置命令作為參數的文件,它不會退出.如果exec失敗,一個交互式shell不會退出
expand_aliases別名被擴展.缺省為打開
extglob打開擴展的模式匹配特性(正常的表達式元字符來自Korn shell的文件名擴展)
histappend如果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點(.)的同義詞

刪除目錄下除了filename之外的所有文件

下來列出了不同的擴展模式匹配操作符,這些模式列表是一個用 | 分割包含一個或者多個文件名的列表:

通配符含義
*(模式列表)匹配 0 個或者多個出現的指定模式
?(模式列表)匹配 0 個或者 1 個出現的指定模式
@(模式列表)匹配 1 個或者多個出現的指定模式
!(模式列表)匹配除了一個指定模式之外的任何內容

打開extglob shell選項

shopt -s extglob

刪除目錄下除了filename之外的所有文件

rm -v !("filename")

刪除除了filename1和filename2之外的所有文件

rm -v !("filename1"|"filename2")

刪除除了 .zip 之外的所有文件

rm -i !(*.zip)

關閉extglob shell選項

shopt -u extglob

看完上述內容,你們掌握Shell中set與shopt命令如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女