当我使用 is with 时,Grep 可以工作ls |
,但是当我单独尝试该命令时,它只会给我一个闪烁的光标,该光标在下一行永远不会消失(就像它正在运行命令一样)。
例如,我尝试过:
ls | grep zip
在bin
目录中并获得了文件列表,但grep zip
在同一目录中的纯文件却出现了上述问题。
答案1
从man grep
(重点是我的):
grep searches the named input FILEs (or standard input if no files are
named, or if a single hyphen-minus (-) is given as file name) for lines
containing a match to the given PATTERN. By default, grep prints the
matching lines.
如果您运行时grep
没有使用文件名或管道(|
in ls | grep
):
grep foo
标准输入是终端 - 也就是你。你必须提供将grep
要搜索的输入。
$ grep foo
this is me typing stuff
now I'm typing foo, which will get printed again because grep matched foo
now I'm typing foo, which will get printed again because grep matched foo
答案2
grep
以一个文件或(多个文件)作为输入,当没有给出文件名时,grep
从标准输入(文件描述符 0)读取。
当您执行此操作时ls | grep 'something'
,您正在通过管道将ls
命令的标准输出重定向到标准输入(这就是所做的)。grep
|
而在后一种情况下,当您只是执行时grep 'something'
,没有给出文件名,因此grep
将读取其 STDIN 进行输入,这里不涉及管道,所以您需要在 STDIN 上输入一些内容(给出输入)才能查看输出。
例子:
% grep 46
245
480
460
460
如您所见,它与我输入的内容grep
匹配46
,并显示在 STDOUT 上。顺便说一句,要关闭交互式输入会话,请按Ctrl+ D,表示 EOF(文件结束)(在本例中读作“输入结束”)。
答案3
grep 不用于在 linux 中查找文件。您可以使用 find 命令来搜索文件。grep 命令可用于在文件内搜索文本。
如果要在 /bin 目录中查找名为 zip 的文件,请使用以下 find 命令 find /bin -name "压缩“
我在前面和结尾处使用了 *,因为那里的文件可以是 gunzip、bzip、gzip。因此,为了搜索与 zip 词匹配的所有内容,我使用了 *。
请阅读下面两篇关于如何分别使用 grep 命令和 find 命令的文章。这会更有用。 https://screwlinux.com/how-to-use-grep-command-in-linux/ https://screwlinux.com/find-command-in-linux-with-examples/ 谢谢。