我目前正在构建我的点文件,我想列出TODO: ...
项目目录中的所有注释,我创建了一个 bash 别名来执行此操作:
alias mytodo='grep --recursive "TODO: "'
它工作得很好,但是,它还返回别名定义。这是示例输出。
devs@dotfiles$ mytodo
bash/profile.d/aliases/: alias mytodo='grep --recursive "TODO: "'
bin/git_branch_status/: # TODO: Add checking of remote branch status.
tools/setup/: # TODO: Add search for existing symlinks.
如何使用别名定义明确排除该行?
答案1
防止正则表达式匹配自身的一种方法是将单个字符包含在字符类中:
alias mytodo='grep --recursive "TOD[O]: "'
或者(向斯蒂芬·查泽拉斯),您可以在模式中使用额外的引号保存别名:
alias mytodo='grep --recursive "TO''DO: "'
那么该行仍然找不到,但别名包含原始模式。当您想使用例如时,这很有帮助。固定字符串匹配 ( grep -F
)。
答案2
您可以简单地通过管道将其输入grep -v 'alias'
以获取所有不包含alias
.