如何使用 C shell 创建自定义标志替换规则?

如何使用 C shell 创建自定义标志替换规则?

我希望 grep 具有以下行为:

grep --java <rest of the command>

其中 --java 要么动态转换为 --include=*.java 要么在内部等效于它。有没有办法在我的 .cshrc 文件中执行此操作?我尝试使用完整的命令,但似乎无法对当前单词进行替换。

答案1

如果您愿意使用不同的语法(在这种情况下也更短且更容易键入),只需为其创建一个别名。将其添加到您的~/.cshrc

alias jgrep grep --include="*.java"

然后,您可以运行如下命令:

jgrep foo *

它会运行

grep --include="*java" foo *

答案2

这不是你可以在 中做的事情tcsh

您的选择是:

  • 使用别名,正如 terdon 已经提到的:

    alias jgrep grep --include="*.java"
    
  • 设置完成模式。例如:

    complete grep 'c/--/(complete)/' 'n/--complete/(*.java *.rb *.py)/' 
    

    这将允许您输入grep --<Tab><Tab>j<Tab>

  • 使用变量:

    set java = '--include=*.java'  
    grep -r "$java" foo
    

    就我个人而言,我不一定认为这更容易。

最后,我发现the_silver_searcher对于“grepping”代码树来说更有用且更快。您可能想查看一下。

相关内容