Я обнаружил, что если я ищу с использованием grep без указания пути, то grep -r 'mytext'
это занимает бесконечно много времени. Между тем, если я ищу по указанному пути, grep -r 'mytext' .
он сразу находит то, что мне нужно. Итак, мне любопытно, в первом виде, в каком каталоге выполняет поиск grep?
UDATE: версия grep: grep (GNU grep) 2.10
foomytextbar
(после Enter) после запускаgrep -r 'mytext'
.grep
. В GNUgrep
я использую Linuxgrep -r 'mytext'
и делаюgrep -r 'mytext' .
то же самое: рекурсивный поиск, начиная с текущего каталога. При использовании-r
переключателя GNUgrep
не ищет STDIN.grep
2.12: pastebin.com/L4my26QS Тем временем я нашел это в файле NEWS относительно версии 2.11 (2012-03-02): «Если не указан файловый операнд и задана опция командной строки -r или эквивалентная ей» , grep теперь ищет в рабочем каталоге. Ранее grep игнорировал -r и искал стандартный ввод нерекурсивно. -r, найденный в GREP_OPTIONS, не имеет этого нового эффекта. "Ответы:
На самом деле он нигде не ищет. Он ожидает ввода от стандартного ввода.
Попробуй это:
когда вы набираете строку, содержащую «foo», и нажимаете ввод, эта строка будет повторяться, в противном случае курсор будет перемещен на новую строку, но grep ничего не печатает.
источник
grep -r PATTERN
с более новой версией GNU, grep не будет читать стандартный ввод, а будет искать шаблон в текущем каталоге (см. Фиксацию ). Это изменение имеет смысл, так как вы, вероятно, не хотите искать стандартный ввод, когда вы указываете-r
флаг.Точно так же, как предыдущий ответ Maciek говорит:
Однако вы можете записать в stdin уже запущенной программы, если у вас есть / proc, передавая данные в его 0-й первый дескриптор:
В одном терминале запустить
и увидим, что он ждет бесконечно ... В другом терминале введите:
увидеть первый терминал печати привет и ваше имя пользователя.
источник