linux系统命令shopt

今天碰到一个需求,删除当前目录下除指定名称之外所有的文件

当时想到了这种写法:rm -f !(a)

没想到回报错了,查了查百度找到了解决方法,利用shopt命令增强shell易用性,分享一波用法

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点(.)的同义词

既然知道了用法,接下来就看下结果

ok,删除成功了,其他选项就不做介绍了,有兴趣的同学自行学习一下吧!!!

再给大家分享一波其他实现这个需求的方法:

find ./ -maxdepth 1 -type f ! -name 'a' -exec rm -f {} \;

ls|grep -v 'a'|xargs -i rm -f {}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值