来自 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_init
CD 上没有定义别名,但sh_init
定义了一个等效ff
函数:
ff() { find . -name "*$1*" -ls; }