1.shopt命令
shopt 命令用于显示和设置shell中的行为选项
shopt -> shell option 这样记忆
shopt 命令
shopt [-psu] [optname …]
-s 开启某个选项
-u 关闭某个选项
-p 列出所有可设置的选项
2.扩展的模式匹配extglob
开启 shopt -s extglob
关闭 shopt -u extglob
[root@abc test]# shopt | grep extglob
extglob off
[root@abc test]# shopt -s extglob
[root@abc test]# shopt | grep extglob
extglob on
[root@abc test]# shopt -u extglob
[root@abc test]# shopt | grep extglob
extglob off
[root@abc test]#
!(pattern-list) #不匹配括号内的所给模式
【例1】移动文件排除
移动除了dir1目录以及file1文件到backup目录下
[root@abc test]# mkdir dir1 dir2 dir3
[root@abc test]# touch file1 file2 file3
[root@abc test]#
[root@abc test]# ls -l
total 0
drwxr-xr-x 2 root root 6 Jun 9 17:28 dir1
drwxr-xr-x 2 root root 6 Jun 9 17:28 dir2
drwxr-xr-x 2 root root 6 Jun 9 17:28 dir3
-rw-r--r-- 1 root root 0 Jun 9 17:28 file1
-rw-r--r-- 1 root root 0 Jun 9 17:28 file2
-rw-r--r-- 1 root root 0 Jun 9 17:28 file3
[root@abc test]#
[root@abc test]# mkdir backup
[root@abc test]# shopt -s extglob
[root@abc test]# mv !(dir1|file1|backup) backup/
[root@abc test]#
[root@abc test]# cd backup/
[root@abc backup]# ls
dir2 dir3 file2 file3
[root@abc backup]#
[root@abc backup]# mv ./* ..
[root@abc backup]# cd ..
[root@abc test]#
【例2】删除文件排除
删除当前路径除了backup和file1之外的路径和文件
[root@abc test]# ls
backup dir1 dir2 dir3 file1 file2 file3
[root@abc test]#
[root@abc test]#
[root@abc test]# rm -rf !(backup|file1)
[root@abc test]# ls
backup file1
[root@abc test]# shopt -u extglob
[root@abc test]#