1.shopt 命令简介
2.shopt 参数含义说明
3.shopt 使用示例
1)extglob 参数
shopt 命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。
shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。
1.shopt 命令简介
简介
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
- histappend 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
- [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
- histappend 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
2.shopt 参数含义说明
上面展示了 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的文件名扩展)
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 :
点(.)的同义词
3.shopt 使用示例
博主对 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
=========================
实例
1.将目录下所有的文件和目录移动到 backup 目录中.
当前目录下3个文件以及两个目录
$ ls
dir1 dir2 file1 file2 file3
$ mkdir -p backup
$ mv !(backup) backup/
查看结果
$ lsbackup
$ ls backup/
dir1 dir2 file1 file2 file3
$ ls
backup dir1 dir2 file1 file2 file3
$ rm -rf file[1-3]
$ ls
backup dir1 dir2
3.移动除了 dir1 目录以及 file1 文件到 backup 目录下
$ mv !(dir1|file1|backup) backup/$ ls
backup dir1 file1
$ ls backup/
dir2 file2 file3