我正在尝试应用位置参数,以便在项目文件中查找内容时更轻松地复制/粘贴字符串。
这个命令工作正常:
grep myString -R .
但这个命令不会:
grep "$1" -R . myString
我尝试了几种组合,包括单引号、使用括号等。
感谢任何关于如何在项目中递归搜索字符串的建议。
编辑:我尝试直接从终端使用此命令(而不是在 shell 脚本上)
答案1
你的问题很不清楚,我不确定我是否正确理解它。如果我的理解有误,我深表歉意。
但是,如果我理解正确的话,您希望能够以将搜索模式放在命令末尾的方式使用 grep,因为复制并粘贴到命令末尾比复制更方便并粘贴到命令的开头,特别是当您使用不同的搜索模式多次运行该命令时?
不幸的是,grep 的语法要求搜索模式出现在指定搜索位置之前。
在我看来,有两种解决方案。首先是定义一个函数:
您可以将其放入您的 中.bashrc
,或者只为会话定义一次:
recgrep() {
grep "$1" -R .
}
然后您可以像这样调用该函数:
recgrep myString
它会在当前文件夹中递归搜索 mystring。
另一种是使用ripgrep,默认情况下递归搜索,而不是 GNU grep。根据我的经验,它也比 GNU grep 更快。
rg myString