通配符

  1. linux通配符

      在使用shell命令对多个文件对象执行单一操作时,例如删除当前目录下的file1到file8,多次使用相同的命令rm file1到rm file8非常麻烦,通常使用通配符模式解决这个问题:rm file[1-8]。
当使用通配符指定一种模式时,该模式与底层系统上的一个或多个文件匹配,shell以空格隔开的所有匹配对象的列表来替换该模式;当模式不能找到匹配对象时,shell将不理会参数、通配符等,保留原样。例如,当ls -d /etc/g*不能找到/etc/g*的任何文件时,就会报错。


--------代表任意个字符,但不会匹配以.开始的文件名

--------代表一个字符

--------转义字符,可将通配符或者特殊字符还原成一般字符
[abc]
--------匹配[]里面的某个字符
[a-z]
--------匹配a到z之间的某个字符,还能写成[A-Z]、[0-9]、[A-Za-z]等
[!abc]
--------匹配任意不包含在[!]里的字符,同样包括[!a-z]等的用法,这里[和!之间不能有空格
{c1,c2}
--------同c1或者c2相匹配,其中c1和c2也是通配符,比如{[0-9]abc,[efg]}与[0-9]abc、[efg]均通配
;
--------连续性命令,比如command1;command2,不管前者是否正确,后者都会执行,使用&&和||则会有先后顺序

--------逻辑运算中的非
/
--------路径字符
$
--------读取变量字符,例如echo $PATH
>,>> 
--------输出导向,分别为清空与末尾累加

--------单引号

--------双引号
`` 
--------两个`中间为可以先执行的指令,例如cat /etc/`pwd`/hello.

注意:
使用[]时,[与]之间绝对不能为空,所以[][*]表示[、]与*任意一个字符来匹配,如果要处理与通配符相关的字符,需要使用转义字符/,例如:
echo $[abc]
输出结果是a、b或者c变量的值。
echo $/[abc/]
输出结果是[abc]变量的值(举例而已,当然不存在[abc]这样的变量名)。
echo '[abc]'
单引号也能起到与转义字符同样的作用。双引号内部保留所有通配符的原义,而单引号内部将通配符视为普通字符。

 2.DOS通配符相比较

     与DOS相比,UNIX的通配符机制要比DOS好得多。在DOS中,任何在“*”之后,在“.”之后的字符均被忽略,所以下面的指令将不能得到你想象的结果。

  del *bak.*

  在DOS中,用户只能用此命令删除当前目前下的所有文件,除非系统要求你不这样做。而在UNIX系统中,“*”可替代包括0在内的任意数字的字符,但一行中的其余特征也仍需匹配,因此“bak.*”可匹配newbak.save、oldbak.new甚至bak.temp,但不能和newbak匹配,因为后者不含“.”。这非常巧妙,可大大方便用户,而“*bak”则可匹配以上所有的词条,包括newbak。

 

在Linux系统中,通配符(wildcard)是一种用于匹配文件名、路径或命令参数的特殊字符。它们广泛应用于命令行操作中,特别是在文件管理和搜索任务中。以下是一些常见的通配符及其使用示例。 ### 通配符类型及用法 #### 1. `*`(星号) `*` 用于匹配任意数量的字符(包括零个字符)。它是最常用的通配符之一。 - 示例:查找所有以 `.txt` 结尾的文件。 ```bash ls *.txt ``` 此命令将列出当前目录下所有扩展名为 `.txt` 的文件[^1]。 #### 2. `?`(问号) `?` 用于匹配单个任意字符。 - 示例:查找所有以 `file` 开头,后跟一个字符并以 `.log` 结尾的文件。 ```bash ls file?.log ``` 这将匹配 `file1.log`、`fileA.log` 等,但不会匹配 `file10.log` 或 `file.log`。 #### 3. `[ ]`(字符集合) `[ ]` 用于匹配括号内任意一个字符。 - 示例:查找所有以 `data` 开头,后跟 `1`、`2` 或 `3` 的文件。 ```bash ls data[123].csv ``` 这将匹配 `data1.csv`、`data2.csv` 和 `data3.csv`。 #### 4. `[ - ]`(范围匹配) 可以使用 `-` 在 `[ ]` 中指定字符范围。 - 示例:查找所有以 `log` 开头,后跟数字 `0` 到 `9` 的文件。 ```bash ls log[0-9].txt ``` 这将匹配 `log0.txt` 到 `log9.txt`。 #### 5. `[^ ]` 或 `[! ]`(否定匹配) `[^ ]` 或 `[! ]` 用于匹配不在括号内的字符。 - 示例:查找所有以 `abc` 开头,但不以 `d` 或 `e` 结尾的文件。 ```bash ls abc[!de].log ``` ### 通配符在命令中的应用 #### 使用 `whatis` 命令进行通配符搜索 `whatis` 命令可以使用 `-w` 或 `--wildcard` 选项进行通配符搜索,帮助查找命令或函数信息。 - 示例:查找所有以 `ab` 开头的命令或函数。 ```bash whatis -w 'ab*' ``` 输出可能包括: ``` abort (3) - cause abnormal process termination abs (3) - compute the absolute value of an integer ``` #### 使用 `man` 命令查看特定章节的手册 `man` 命令支持通过章节号查找特定的手册页,这也可以与通配符结合使用。 - 示例:查看第 3 章节中与 `abs` 相关的手册页。 ```bash man 3 abs ``` 此命令将显示 `abs` 函数的说明,属于程序库调用章节[^3]。 ### 通配符的注意事项 - 通配符主要用于匹配文件名和路径,但在某些命令中(如 `grep`)也可以用于文本内容匹配。 - 使用通配符时,需注意当前目录下的文件结构,以避免意外匹配到不期望的文件。 - 如果希望禁用通配符扩展,可以使用单引号 `' '` 或双引号 `" "` 将字符串包裹起来。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值