我试过类似的东西:
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/