1

Раньше я успешно использовал grep на cygwin на Windows XP. Внезапно, теперь, когда я запускаю grep, это никогда не заканчивается.

miname@mycomputer /cygdrive/c/emacs
$ grep "lkjlkjlkjlkjlkjlkjlkjlkjlkjlkjlkj"

Я искал в Google, но ничего не нашел по этому поводу. Я перезагрузил компьютер. Я также проверил журналы, но, кажется, есть только журнал установки (в var/log). Кажется, я помню, что у меня были трудности с установкой Cygwin (у меня довольно заблокированный рабочий компьютер), поэтому я бы предпочел не переустанавливать (если это действительно поможет).

Что я могу сделать, чтобы исправить или исследовать мою проблему?

РЕДАКТИРОВАТЬ: Прочитав ответ, я понял, что я думаю, был успешным действительно grep "asdfasdf" . - обратите внимание на точку! Я не делал то же самое.

1 ответ1

3

Там нет реальной проблемы. Здесь происходит то, что, поскольку вы не указали никаких файлов для поиска grep , он прослушивает STDIN для поиска текста. Вот как конвейеры, такие как tail -f /var/log/messages | grep "error" работа: команда tail отправляет свой вывод на стандартный ввод grep «s, и grep печатает только те строки , которые соответствуют заданной строке поиска (в данном примере,„ошибка“).

Если вы вызываете grep без файлов и без передачи чего-либо к нему, он унаследует стандартный поток ввода от вашего терминала и прослушивает вашу клавиатуру. (Попытайся! Напечатайте что-нибудь и нажмите Return, и вы увидите, что оно отображается, если оно соответствует строке поиска, которую вы дали grep.) Чтобы завершить процесс grep, нажмите Control-C. Чтобы получить полезный вывод из него, передайте ему один или несколько файлов в качестве аргументов командной строки после строки поиска, например, grep "something" file.c file.h , или передайте в него что-нибудь, как в приведенном выше примере tail .

Вот как работает Unix grep и как он всегда работал. Если вы раньше вызывали grep таким образом, и он вел себя по-другому, то вы вызывали не grep Cygwin, а какую-то другую утилиту, которая, как оказалось, имела такое же имя и находилась в каталоге, который был перед / Cygwin /bin в вашем $PATH .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .