unix系统管理员工具包: 充分利用 zsh
2007-05-11 08:12:58 来源:WEB开发网您还可以使用类似于正则表达式的组来匹配文件。例如,使用清单 5 来列出所有名为 fred 和 barney 的文件。
清单 5. 列出所有 fred 和 barney 文件zsh$ ls (fred|barney)*
barney.c fred.c fred.o
barney.o fred.h
通过使用 **/,还可以搜索子目录;该过程是递归的,例如 find 命令,以便您能产生 find 命令的等效结果,例如 $ find . -name "*.c"。
在 zsh(带扩展的 globbing)中,这可以扩展为: zsh$ ls **/*.c。
您也可以组合进一步的示例,例如使用清单 6 中的命令来查找子目录中的所有 C 源文件和编译后的目标文件。
清单 6. 查找所有 C 源文件和编译后的目标文件zsh$ ls **/*.(c|o)
glob/barney.c glob/betty.c glob/fred.o
glob/barney.o glob/fred.c glob/wilma.c
最后,zsh 支持许多后缀修饰符。若要获取可执行文件列表,可以在 globbing 表达式结尾使用后缀修饰符 (*)(请参见清单 7)。
清单 7. 获取可执行文件列表zsh$ ls *(*)
barney fred
您还可以在 globbing 表达式结尾使用 (x) 来获取可执行文件列表(请参见清单 8)。
清单 8. 使用 (x) 来获取可执行文件列表zsh$ ls *(x)
barney fred
上述列表文件可由文件的所有者执行。大写的 X 将选择可由其他人执行的文件。同样的原理也适用于文件的 R/r(可读取)和 W/w(可写入)模式。
命令或进程替换
在大多数 Shell 环境中,您都可以使用基本的进程替换来将一个命令的输出嵌入到另一个命令的输入或参数中。这可以使用反引号运算符来实现(请参见清单 9)。
更多精彩
赞助商链接