别名在Unix中查找目录

我尝试了这样的:

alias fdi 'find . -type d -iname "*\!^*"' 

但这只能查找作为parameter passing的确切名称。

fdi abc只会输出:

 ./d/abc 

不是这个:

 ./d/greabcyup 

我不只是寻找确切的名字。 它也应该显示./d/greabcyup

更新:我做到了

 echo $0 

tcsh的

这是c-shell或tcsh?

我简单地用orielly lunix来检查dbl !^是本命令行中的第一个单词,所以我不认为它正在做你想要的。 你可以用dbl从cmd-line中检查这个理论,用echo abc def !^ 。 (我没有一个方便的csh)。

但很明显,当你创建别名时,它不会得到第一个单词(别名)或别名中嵌入的别名(find)的第一个单词。 这可能是关于csh评估的顺序。

一般来说,大多数shell(不仅仅是csh)中的别名都不能带参数。 它将在最后附加任何包含在调用中的内容。 所以你的别名扩展,与ABC的论点

 find . -type d -iname abc 

结果你得到,支持。 (你可能会看到一些有用的打开csh调试,通过改变你的顶部哈希爆炸线到#!/bin/csh -vx

这就是为什么其他shell有功能,

  function fdi() { find . -type d -iname "$@" } 

如果因为策略而无法使用其他shell,(bash,ksh和zsh都是强大的编程语言),并且您将定期使用csh,那么一定要找到一份“The Unix C shell Field Guide ,盖尔和保罗·安德森。 一本非常好写的书。

IHTH。