我目前正在构建我的 dotfiles,我想列出TODO: ...
我项目目录中的所有注释,我创建了一个 bash 别名来执行此操作:
alias mytodo='grep --recursive "TODO: "'
Run Code Online (Sandbox Code Playgroud)
它运行良好,但是,它也返回别名定义。这是示例输出。
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.
Run Code Online (Sandbox Code Playgroud)
如何用别名定义专门排除该行?
Jig*_*aga 11
防止正则表达式匹配自身的一种方法是将单个字符包含在字符类中:
alias mytodo='grep --recursive "TOD[O]: "'
Run Code Online (Sandbox Code Playgroud)
或者(对Stéphane Chazelas的提示),您可以在模式中使用额外的引号保存别名:
alias mytodo='grep --recursive "TO''DO: "'
Run Code Online (Sandbox Code Playgroud)
然后仍然找不到该行,但别名包含原始模式。这在您想使用时很有用,例如。固定字符串匹配 ( grep -F
)。