我已经向我的 .ackrc 添加了一个自定义类型,它正好满足我的要求。
--type-set=test:match:/_test\b/
它匹配单元测试文件。由于我不想经常看到测试用法,因此我还设置了
--notest
但是,当我想搜索测试时,我尝试--test
在命令行中添加,但没有得到任何结果。我希望这--test
会覆盖--notest
,但它们结合起来什么也没有。手册页确认它们是 OR 在一起的。
对于我想做的事情有什么建议吗?
答案1
由于 ack 的行为是将所有类型表达式进行“或”运算,因此无法在.ackrc
不改变 ack 的情况下直接执行此操作。
但是,我可以编写一个 bash 函数来包装 ack,以添加--notest
除非--test
传递。
function ack {
test_flag='--notest'
for arg in "$*"; do
case "$arg" in
--test)
test_flag=''
;;
esac
done
command ack "$*" $testflag
}