#排除a.txt 和b.txt文件
rm -rf !(a.txt|b.txt)
执行后会出现
-bash: !: event not found
原因:
#shopt extglob 未开启
shopt -s extglob #-s开启 -u关闭
#shopt命令和extglob是什么东东
shopt命令
shopt(选项)(参数)
#选项
#-s:激活指定的shell行为选项;
#-u:关闭指定的shell行为选项。
#参数
cdable_vars|cdspell|checkhash|checkwinsize|cmdhist|dotglob|......
等等用时自行查找
shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项
来自: http://man.linuxde.net/shopt
Bash Shell有个extglob选项,开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便。
开启方法很简单,使用shopt命令:shopt -s extglob
关闭,使用shopt命令:shopt -u extglob
开启之后,以下5个模式匹配操作符将被识别:
- ?(pattern-list) - 所给模式匹配0次或1次;
- *(pattern-list) - 所给模式匹配0次以上包括0次;
- +(pattern-list) - 所给模式匹配1次以上包括1次;
- @(pattern-list) - 所给模式仅仅匹配1次;
- !(pattern-list) - 不匹配括号内的所给模式。