что случилось с моей командой grep?

Работы Grep, когда я использую, с ls | но когда я пробую команду отдельно, она просто дает мне мерцающий курсор, который никогда не уходит на следующей строке (как будто она выполняет команду).

Например, я попробовал:

ls | grep zip

в то время как в bin каталог и получил список файлов, но плоскость grep zip в том же каталоге дает мне вышеизложенную проблему.

3
задан 27 January 2016 в 04:30

3 ответа

От 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 без имени файла или канала ( | в 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
4
ответ дан 3 December 2019 в 06:40

grep принимает файл или (файлы) в качестве входных данных, если имя файла не указано given grep читает из стандартного ввода (файловый дескриптор 0).

Когда вы выполняете ls | grep 'something' , вы перенаправляете стандартный вывод команды ls на стандартный ввод grep через канал (это то, что делает | ).

В то время как в последнем случае, когда вы просто выполняете grep 'something' , имя файла не указывается, и, следовательно, grep будет читать его STDIN для ввода, здесь канал не используется, поэтому вам нужно ввести что-то в STDIN (ввести ввод), чтобы увидеть результат.

Пример:

% grep 46
245
480
460
460

Как видите, grep сопоставил 46 из моего набранного содержимого и показал это на STDOUT. Кстати, чтобы закрыть сеанс интерактивного ввода, нажмите Ctrl + D , который указывает EOF (конец файла) (в данном случае прочтите его как «Конец ввода»).

2
ответ дан 3 December 2019 в 06:40

grep не используется для поиска файлов в Linux. Вы можете использовать команду find для поиска файлов. Команда grep может использоваться для поиска текста внутри файлов.

Если вы хотите найти файлы с именем zip внутри каталога / bin, используйте команду поиска ниже find / bin -name " zip "

Я использовал * перед и в конце, так как файлы могут быть как gunzip, bzip, gzip. Итак, для поиска всего, что соответствует zip-слову, я использовал *.

Прочтите две статьи ниже о том, как использовать команду grep и команду поиска по отдельности. Было бы полезнее. https://screwlinux.com/how-to-use-grep-command-in-linux/ https://screwlinux.com/find-command-in-linux-with-examples/ Спасибо.

0
ответ дан 3 December 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: