如何在xargs中使用别名命令?

内森·费尔曼(Nathan Fellman):

我的.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读取)。

bash -i运行一个交互式外壳程序(以及源.bashrc)。bash -c cmd运行cmd

将它们放在一起:bash -ic 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

它适用于我的基本测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章