Shell_Linux shopt 指令

前端之家收集整理的这篇文章主要介绍了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

如果设置,当正在完成一个包含@的词时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 模式匹配进行举一反三.

猜你在找的Bash相关文章