欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Shell_Linux shopt 指令 有大用 有大大用

1.shopt 命令简介

2.shopt 参数含义说明

3.shopt 使用示例

1)extglob 参数


shopt 命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。

shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。



1.shopt 命令简介

简介

shopt [-psu] [optname …]

-s 开启某个选项.

-u 关闭某个选项.

-p 列出所有可设置的选项.


执行shopt 看看都有那些选项 与 系统的默认值

  1. [root@master four]# shopt
  2. autocd         off
  3. cdable_vars     off
  4. cdspell         off
  5. checkhash       off
  6. checkjobs       off
  7. checkwinsize   on
  8. cmdhist         on
  9. compat31       off
  10. compat32       off
  11. compat40       off
  12. dirspell       off
  13. dotglob         off
  14. execfail       off
  15. expand_aliases on
  16. extdebug       off
  17. extglob         on
  18. extquote       on
  19. failglob       off
  20. force_fignore   on
  21. globstar       off
  22. gnu_errfmt     off
  23. histappend     off
  24. histreedit     off
  25. histverify     off
  26. hostcomplete   on
  27. huponexit       off
  28. interactive_comments on
  29. lithist         off
  30. login_shell     on
  31. mailwarn       off
  32. no_empty_cmd_completion off
  33. nocaseglob     off
  34. nocasematch     off
  35. nullglob       off
  36. progcomp       on
  37. promptvars     on
  38. restricted_shell off
  39. shift_verbose   off
  40. sourcepath     on
  41. xpg_echo       off
  42. [root@master four]# shopt
  43. autocd         off
  44. cdable_vars     off
  45. cdspell         off
  46. checkhash       off
  47. checkjobs       off
  48. checkwinsize   on
  49. cmdhist         on
  50. compat31       off
  51. compat32       off
  52. compat40       off
  53. dirspell       off
  54. dotglob         off
  55. execfail       off
  56. expand_aliases on
  57. extdebug       off
  58. extglob         on
  59. extquote       on
  60. failglob       off
  61. force_fignore   on
  62. globstar       off
  63. gnu_errfmt     off
  64. histappend     off
  65. histreedit     off
  66. histverify     off
  67. hostcomplete   on
  68. huponexit       off
  69. interactive_comments on
  70. lithist         off
  71. login_shell     on
  72. mailwarn       off
  73. no_empty_cmd_completion off
  74. nocaseglob     off
  75. nocasematch     off
  76. nullglob       off
  77. progcomp       on
  78. promptvars     on
  79. restricted_shell off
  80. shift_verbose   off
  81. sourcepath     on
  82. 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)

  1. [root@master load_data]# shopt extglob
  2. extglob         off

开启 extglob 选项

此时查看 extglob 选项是否开启

  1. [root@master four]# shopt -s extglob
  2. [root@master four]# shopt extglob
  3. extglob         on

关闭 extglob 选项

  1. [root@master four]# shopt -u extglob
  2. [root@master four]# shopt extglob
  3. extglob         off


=========================


实例


1.将目录下所有的文件和目录移动到 backup 目录中.


当前目录下3个文件以及两个目录
$ ls

dir1  dir2  file1  file2  file3


新建一个 backup 目录

$ mkdir -p backup


将除了 backup 目录的其他文件和目录移动到 backup 目录下
$ mv !(backup) backup/


查看结果

$ ls
backup
$ ls backup/

dir1  dir2  file1  file2  file3



2.删除当前目录下所有file开头的文件或目录


$ 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


其他的需求还需要结合 shell 模式匹配进行举一反三.


文章知识点与官方知识档案匹配,可进一步学习相关知识
普通分类: