我在使用 grep 时遇到问题,我在 Win 10 上安装了 ubuntu 18.04。它会冻结最简单的命令,我可以取消它,如果我愿意,它会创建一个新文件,但它不会写入任何内容它。
$ mkdir test
$ cd test
$ ls
$ sudo grep "Werk!" > new
^C
$ ls
new
$ cat new
我错过了一些明显的东西吗?
答案1
是的。您正在 grep'ing STDIN,因此它永远挂起,等待永远不会到来的输入。
您可能想包括“。”作为 grep 和 -r (递归)的参数来 grep 当前目录。
grep -r hello .
其他人也发现默认行为grep
不太理想,因此您会发现一些grep
替代方案不存在此问题。例如银色搜索者按名称进行ag
搜索,默认情况下会递归搜索当前目录,因此您对正确语法的猜测是正确的ag
:
ag hello
ag
也默认为不区分大小写的搜索,除非您包含大写字母,这也可以说是您想要的。它还默认使用颜色并使用更强大的 PCRE 正则表达式引擎(如 Perl),而不是grep
默认使用的较弱、较旧的 glob 样式匹配。
像这样的可用性问题grep
就是为什么您应该在可以时使用更新的替代方案,并且仅grep
在必须时使用。grep
了解您可能共享的 shell 脚本的标准工具以及您将登录的任何 Linux 机器上的标准实用程序仍然很有用。
“ripgrep”和“ack”是 grep 的另一个不错的替代品。
答案2
您错过了命令的第二个参数grep
,该参数指定您正在其中搜索模式的文件。
请关注人1 grep获得有关 的帮助grep
。
答案3
也许您想在文件“new”中记录文本,这可以通过使用“echo texts > new”来完成。