Unix Power Tools 中的奇怪别名“find . -name '*\!{*}*' -ls”

Unix Power Tools 中的奇怪别名“find . -name '*\!{*}*' -ls”

来自 Unix Power Tools 第三版第 175 页:

第 9.27 节展示了一种匹配路径中间目录的方法。这是一个更简单的“查找文件”别名,可以非常方便:

alias ff "find . -name '*\!{*}*' -ls"

给它一个文件或目录名;别名将给出包含该参数的任何文件或目录名的长列表。

(这也是在线提供.)

-name我根本不明白操作员的论点。这是拼写错误吗?它仅适用于特定版本吗find?反斜杠、大括号和大括号的作用是什么?

答案1

这是一个csh别名;给定的参数-name由 shell 解释,而不是由 解释find。如果我理解正确的话,\!{*}被替换为给定的参数ff(尽管通常只是\!*)。确实很奇怪,这本书没有指定 shell...

基本上定义了别名,输入

ff test

运行

find . -name '*test*' -ls

(并且它不能优雅地处理多个参数)。

在本书的第二版中,文本以与问题中给出的方式相同的方式定义别名,并指向随附 CD 上的csh_init和。 sh_init(这是第 17.04 节。)有趣的是,csh_initCD 上没有定义别名,但sh_init定义了一个等效ff函数:

ff() { find . -name "*$1*" -ls; }

相关内容