龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

Linux Bash Shell预处理通配符有四种

时间:2011-03-20 22:37来源:未知 作者:admin 点击:
分享到:
* 表示0个或多个字符 ? 表示1个任意字符 [ ] 中括号内包括字符集,表示可匹配其中之一。 { } 花括号内包括字符集,表示可匹配其中之一,可用 , 逗号分隔字符集。 在 Shell 中执行命令时

  * 表示0个或多个字符

  ? 表示1个任意字符

  [ ] 中括号内包括字符集,表示可匹配其中之一。

  { } 花括号内包括字符集,表示可匹配其中之一,可用 , 逗号分隔字符集。

  在 Shell 中执行命令时会先进行预处理,将通配符替换成匹配的文件或目录,如果没有找到匹配,则将通配符当成普通字符处理。

  举例说明:

  假设在当前目录下有 a1.txt 和 b1.txt 两个文件。可以写个脚本测试一下处理过程。

  #脚本内容:

  #!/bin/sh

  #显示第一个参数

  echo $1

  #显示第二个参数

  echio $2

  #显示所有参数

  echo $*

  保存名为 scr 文件,并加上可执行权限: chmod +x scr

  使用通配符 [] 显示指定文件,命令输入:

  ./scr [ab]1.txt

  表示匹配 a1.txt 或 b1.txt 执行后显示结果

  a1.txt

  b1.txt

  a1.txt b1.txt

  这说明了 Shell 在预处理时,将 [ab]1.txt 替换成了 a1.txt a2.txt 然后传递给scr脚本。如果目录下没有 a1.txt 和 a2.txt 文件,即找不到匹配的文件,则(不替换)直接将 [ab]1.txt 当成普通字符传递给脚本。

  使用通配符 {} 显示指定文件,命令输入:

  ./scr {a,b}1.txt

  表示匹配 a1.txt 或 b1.txt 执行后显示结果

  a1.txt

  b1.txt

  a1.txt b1.txt

  使用通配符 ? 显示指定文件,命令输入:

  ./scr ?1.txt

  表示匹配第1个字符任意,第2个字符是1并且前缀名是两个字符的.txt文件。即匹配 a1.txt 或 b1.txt 。 执行后显示结果

  a1.txt

  b1.txt

  a1.txt b1.txt

  使用通配符 * 显示指定文件,命令输入:

  ./scr *.txt

  表示匹配所有的.txt文件。即匹配 a1.txt 或 b1.txt 。 执行后显示结果

  a1.txt

  b1.txt

  a1.txt b1.txt

  题外话:在 Windows 下的 CMD 命令行中,Shell 的不会处理通配符,而是直接传递给程序处理。例如,写个批处理测试下:

  ::批处理内容

  @echo off

  echo 第一个参数是:%1

  echo 所有参数是:%*

  保存为 test.cmd

  假设当前目录下有 a1.txt b1.txt 两个文件。运行 test.cmd *.txt ,显示结果:

  第一个参数是:*.txt

  所有参数是:*.txt

  说明了 CMD 的预处理不会对通配符进行匹配替换,而是交给程序处理。相比之下,Linux 的 Shell 预处理要强得多。

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接