2015-07-27 3 views
-2

Я использую grep в течение некоторого времени, но есть некоторые вопросы, когда я использую grep. , когда я использую 'Grep' для поиска некоторую строку на Nginx журнал ошибок, я стараюсь два пути: один:linux: how grep work

grep 404.* error.log 

для этого, нет ничего не найти

два:

grep '404.*' error.log 

для этого можно найти строки, которые содержат 404 в error.log

в моем примере, '404. *' - это шаблон, основанный на результате, я думаю, когда шаблон с si ngle или double quote, подстановочный шаблон в шаблоне может работать, если нет котировки, подстановочный знак рассматривается как буквальная строка. Правильно?

+0

Да, вы правы в этом отношении. Шаблоны всегда должны использоваться в кавычках. –

+0

Почему бы не прочитать [руководство] (http://www.gnu.org/software/grep/manual/grep.html)? –

+0

@HoboSapiens, извините, я был слишком неосторожен –

ответ

1

Нет, без кавычек, оболочка будет рассматривать его как glob pattern и расширить его сам, если есть какие-либо имена файлов, начинающиеся с 404. в текущем каталоге:

~ $ mkdir newdir 
~ $ cd newdir 
~/newdir $ touch 404.foo 404.bar somethingelse 
~/newdir $ ls 
404.bar 404.foo somethingelse 
~/newdir $ echo 404.* 
404.bar 404.foo 

Это не то, что вы хотите, когда вы 'using grep, поэтому вы всегда должны указывать шаблон поиска.

~/newdir $ echo '404.*' 
404.*