如何在xargs中使用别名命令?
我的.aliases中具有以下别名:
alias gi grep -i
并且我想在名称foo
中包含字符串的所有文件中查找不区分大小写的内容bar
:
find -name \*bar\* | xargs gi foo
这是我得到的:
xargs: gi: No such file or directory
有什么方法可以在xargs中使用别名,还是必须使用完整版本:
find -name \*bar\* | xargs grep -i foo
这是一个简单的示例。此外,gi
我还有一些非常复杂的别名,无法轻易手动扩展。
我用过tcsh
,所以请指定答案是否特定于外壳。
回答:
别名是外壳特定的-
在这种情况下,很可能是bash特定的。要执行别名,您需要执行bash,但是别名仅针对交互式shell加载(更准确地说,.bashrc
仅针对交互式shell读取)。
运行一个交互式外壳程序(以及源.bashrc)。 运行 cmd 。
将它们放在一起: 在交互式shell中运行 cmd ,其中 cmd
可以是您的中定义的bash函数/别名.bashrc
。
find -name \*bar\* | xargs bash -ic gi foo
应该做你想做的。
编辑:我看到您已经将问题标记为“
tcsh”,因此bash特定的解决方案不适用。使用tcsh时,您不需要-i
,因为除非您给出,否则它将显示为.tcshrc -f
。
尝试这个:
find -name \*bar\* | xargs tcsh -c gi foo
它适用于我的基本测试。
以上是 如何在xargs中使用别名命令? 的全部内容, 来源链接: utcz.com/qa/412269.html