我试过类似的东西:

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

但这只会查找作为参数传递的确切名称。
fdi abc 只会输出:
./d/abc

不是这个:
./d/greabcyup

我不只是在寻找确切的名字。它还应该显示 ./d/greabcyup
更新:我做到了
echo $0

tcsh

最佳答案

这是c-shell还是tcsh?

我用 orielly lunix in a nutshell 进行了 dbl 检查,!^ 是当前命令行中的第一个单词,所以我认为它没有做你想要的。
您可以使用 cmd-line 中的 echo abc def !^ 自行检查该理论。 (我手边没有csh)。

但很明显,当您创建别名时,它不会获取别名中嵌入的第一个单词 (alias) 或别名 (find) 的第一个单词。这可能与 csh 的评估顺序有关。

通常,大多数 shell(不仅仅是 csh)中的任何别名都不能带参数。它将在末尾附加调用中包含的任何内容。所以你的别名扩展了, abc 参数为

find . -type d -iname abc

你得到的结果,支持这一点。 (通过打开 csh 调试,将顶部 hash-bang 行更改为 #!/bin/csh -vx ,您可能会看到一些有用的东西)

这就是为什么其他shell有功能的原因,
 function fdi() {
     find . -type d -iname "$@"
 }

如果由于政策原因不能使用其他 shell(bash、ksh、zsh 都是功能强大的编程语言),并且您将定期使用 csh,请务必获取一份“The Unix C shell Field Guide” ,盖尔和保罗安德森。一本写得特别好的书。

IHTH。

关于linux - 在 Unix 中别名查找目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13187987/

10-14 01:20