【问题标题】:Alias not used in piped command - Git Bash管道命令中未使用的别名 - Git Bash
【发布时间】:2021-04-22 12:19:14
【问题描述】:

我在 Windows 上使用 Git Bash,尤其是命令 'find' 和 'grep' 来定位包含一些文本的文件。

我设置了别名grep='grep --color=auto',它在单独使用时显示颜色很好,但是如果我输入:

find . -iname "*.java" | xargs grep my_word

my_word 的出现不以彩色显示。颜色只有在我输入时才会出现:

find . -iname "*.java" | xargs grep --color=auto my_word

换句话说,别名似乎没有用在管道的右侧。

这是管道中别名的正常行为吗?我无法在文档中找到答案。

谢谢。

【问题讨论】:

    标签: bash colors grep pipe alias


    【解决方案1】:

    这是正常的,但不是因为管道。

    alias 定义命令的别名。它不是所有文本的替换(例如,在参数和选项中。

    在您的情况下,命令是:findxargs。命令xargs 将直接调用grep 命令,而不从原始shell 传递。

    这种行为非常有用。您正在运行的各种命令可能是 shell 脚本,如果您更改命令的含义,可能会出现意外的行为。

    【讨论】:

    • 谢谢,我想我会定义一个别名 custom_find arg1 arg2 来做类似 find 的事情。 -iname "$arg1" | xargs grep "$arg2" --color=auto。我没想到别名会干扰其他命令或脚本。
    • 或者环境变量 GREP_OPTIONS 可能会有所帮助
    猜你喜欢
    • 2018-03-13
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2013-02-13
    • 2022-12-23
    • 2021-05-06
    • 2022-01-12
    相关资源
    最近更新 更多