PowerShell Core中自定义带--color参数的grep函数无输出卡住如何解决?
问题原因
你编写的原始函数没有接收并转发管道输入的内容,Git 自带的 grep 会持续等待标准输入流传入数据,因此会出现无输出、shell 冻结的现象。
解决方案
直接修改你的配置为如下写法即可,同时兼容管道输入、直接传参两种使用方式,默认携带--color=auto参数:
Set-alias _grep "C:\Program Files\Git\usr\bin\grep.exe" function grep { $input | _grep --color=auto $args }
其中$input是PowerShell函数的内置变量,会自动收集所有传递给该函数的管道输入内容,我们直接将其转发给底层的grep程序即可解决管道兼容问题。
验证方法
配置写入Microsoft.PowerShell_profile.ps1后执行. $PROFILE重载配置,测试以下两种场景均正常工作:
- 管道调用:
echo "abc" | grep a,输出的a字符带颜色高亮 - 直接传文件调用:
grep "匹配内容" test.txt,可直接对指定文件执行匹配
内容的提问来源于stack exchange,提问作者tpwo
相关产品推荐
相关产品推荐

