Shell 模式匹配

shell 模式匹配中的特殊字符

* 匹配任何字符串(包括空字符串).
? 匹配任何单个字符.
[...] 匹配包含的任意字符.

注意事项:

‘*‘在文件名扩展中使用‘**‘将匹配所有文件和零个或多个子目录.如果在模式结尾加上‘/‘那么仅匹配目录和子目录不匹配文件.

[...] 如果一对字符由连字符(-)分割那么将表示一个范围.如果[]中第一个字符为‘!‘或‘^‘那么[]模式将变为不匹配包含的任意字符.

例如: [a-dx-z]等同于[abcdxyz]

extglob 选项开启

如果 shell 中开启 extglob 选项(■ Shell 内建命令 shopt extglob 选项)将支持下列的模式匹配.

?(pattern-list) # 匹配零或一个给定的模式.
*(pattern-list) # 匹配零或多个给定的模式.
+(pattern-list) # 匹配一或多个给定的模式.
@(pattern-list) # 匹配一个给定的模式.
!(pattern-list) # 匹配除了给定的模式.

多个参数可以使用"|"来进行分割.

时间: 2024-10-02 09:59:52

Shell 模式匹配的相关文章

shell学习四十一天----列出文件ls和od命令

列出文件 首先恶臭命令提供简单的方式列出匹配模式的文件: 命令: echo /bin/*sh #显示/bin下的shell 输出:/bin/bash /bin/csh /bin/dash /bin/sh /bin/tcsh 分析:shell将通配符字符模式替换为匹配的文件列表,echo以空格区分文件列表,在单一行上显示他们.echp不会更近一部解释他的参数,因此与文件系统里的文件也没有任何关系. ls命令则比echo能做更多的处理,因为他纸袋自己的参数应该是文件.未提供命令行选项时,ls只会验证

bash参考手册之五(shell变量)续二

EMACS 如果Bash在shell启动时,在环境中发现这个变量的值是 't',则会认为shell在Emacs shell缓冲区中运行,而禁止行编辑. ENV 类似于BASH_ENV,在shell以POSIX模式调用时使用.(见Bash POSIX模式) EUID 当前用户的数字形式的有效用户ID.这个变量是只读的. FCEDIT 内建命令fc带-e选项时的默认编辑器. FIGNORE 冒号分隔的后缀列表,该列表的内容在执行文件名完成时忽略.一个文件名的后缀匹配FIGNORE中的一个元素时,则该

Shell 内建命令 shopt extglob 选项

简介 shopt 命令可以设置 shell 的可选参数. shopt [-psu] [optname …] -s 开启某个选项. -u 关闭某个选项. -p 列出所有可设置的选项. extglob选项 如果开启 extglob 选项, shell 将启用模式匹配. 可参考 ■ Shell 模式匹配 查看 extglob 选项是否开启(默认是off) $ shopt extglob extglob off 开启 extglob 选项 $ shopt -s extglob 此时查看 extglob

Linux中bash文档翻译

BASH(1)通用命令手册BASH(1) 名称? bash - GNU Bourne-Again SHell 概要? bash [选项] [文件] 版权? Bash是自由软件基金会版权所有(C)1989-2011. 描述? Bash是一种兼容sh的命令语言解释器,它执行从标准输入或文件读取的命令.Bash还包含了有用的功能? Korn和C shell(ksh和csh). Bash旨在成为IEEE POSIX规范(IEEE标准1003.1)的Shell和Utilities部分的一致实现.Bash可

shell的替换运算符和模式匹配运算符

shell 的替换运算符和模式匹配运算符 替换运算符: (1) ${varname:-word}       :如果varname存在且非null,则返回其值:否则,返回word. (2) ${varname:=word}      :如果varname存在且非null, 则返回其值,否则,设置其为word并返回. (3) ${varname:?message} :如果varname存在且非null,则返回其值,否则,返回 varname:message,并退出当前的命令或脚本.省略messag

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

shell中test命令方法详解

test命令用法.功能:检查文件和比较值 1)判断表达式 if test  (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2                  两个表达式都为真 test 表达式1 –o 表达式2                 两个表达式有一个为真 2)判断字符串 test –n 字符串                                   字符串的长度非零 test –z 字符串                          

shell中各种括号的作用

小括号里是命令大括号是变量值   一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b

shell编程中for,while,util,case,select,break, continue用法详解

关于shell脚本的更多详细实例讲解请参考:http://www.cnblogs.com/yuexiaxiaoxi/category/646749.html Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for.while和until.while循环和for循环属于"当型循环",而until属于"直到型循环".循环控制符:break和continue控制流程转向. 参考:<Linux 与unix shell 编程指