我尝试了类似的东西:
alias fdi 'find . -type d -iname "*\!^*"'
但这只会查找作为参数传递的确切名称.
fdi abc将仅输出:
./d/abc
不是这个:
./d/greabcyup
我不仅在寻找确切的名字.它还应该显示./d/greabcyup
更新:我做到了
echo $0
tcsh
解决方法:
这是C壳还是tcsh?
我用orielly lunix in a nutshell 进行了dbl-checked,!^的意思是当前命令行中的第一个单词,因此我不认为它在做什么.
您可以通过cmd-line的echo abc def!^来自己检查该理论. (我没有csh可用).
但是很明显,当您创建别名时,它并没有获得别名中嵌入的别名的第一个单词(别名)或第一个单词(查找).这可能与csh的评估顺序有关.
通常,大多数shell中的任何别名(不仅仅是csh)都不能接受参数.它将附加最后包含在调用中的所有内容.因此,您的别名将扩展,其中abc参数为
find . -type d -iname abc
得到的结果将支持这一点. (通过打开csh调试,将您的哈希顶行更改为#!/ bin / csh -vx,您可能会看到一些有用的信息)
这就是为什么其他shell具有功能的原因,
function fdi() {
find . -type d -iname "$@"
}
如果由于政策而不能使用其他外壳程序(bash,ksh,zsh都是强大的编程语言),并且打算定期使用csh,请确保获取《 Unix C Shell领域指南》的副本.盖尔&保罗·安德森.一本非常出色的书.
IHTH.