grep не работает в Ubuntu 16.04, как обычно

Я понял, что grep не работает как обычно в Ubuntu 16.04.

Доказательства:

/lib/systemd/system# grep root * grep: invalid option -- '.' Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. /lib/systemd/system# grep root . grep: .: Is a directory

Он работает только таким образом.

/lib/systemd/system# grep root ./* [...]

Что-то изменилось в Ubuntu 16.04?

3
задан 16 June 2017 в 12:23

2 ответа

/lib/systemd/system# grep root * grep: invalid option -- '.' Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information

Похоже, у вас есть файл с именем -.. Вы можете обойти это, разделив имена файлов с помощью опций с помощью --, например:

grep root -- * /lib/systemd/system# grep root . grep: .: Is a directory

grep по умолчанию не рекурсивно, используйте -R:

grep -R root .

Использование только -R без каталога в порядке (grep предполагает текущий каталог):

grep -R root
13
ответ дан 18 July 2018 в 11:34
/lib/systemd/system# grep root * grep: invalid option -- '.' Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information

Похоже, у вас есть файл с именем -.. Вы можете обойти это, разделив имена файлов с помощью опций с помощью --, например:

grep root -- * /lib/systemd/system# grep root . grep: .: Is a directory

grep по умолчанию не рекурсивно, используйте -R:

grep -R root .

Использование только -R без каталога в порядке (grep предполагает текущий каталог):

grep -R root
13
ответ дан 24 July 2018 в 19:49
  • 1
    Стоит отметить, что этот трюк -- работает в большинстве программ командной строки, где любой аргумент, следующий за --, рассматривается как позиционный, даже если он иначе интерпретируется как необязательный аргумент. Другой вариант - поместить файл в кавычки, например. grep root '-.', но это не будет работать с подстановочными знаками, конечно – Thomas 16 June 2017 в 14:02
  • 2
    @Thomas, помещая -. в кавычки, не поможет, поскольку котировки влияют на обработку оболочки, и это проблема с обработкой аргументов grep. Вы можете сделать что-то вроде ./-. – muru 16 June 2017 в 14:40
  • 3
    правда, мое плохое. благодаря – Thomas 16 June 2017 в 14:44
  • 4
    Ты был прав! есть файл, называемый "-. slice" Как вы это поняли? – Francisco 16 June 2017 в 19:36
  • 5
    @Francisco, зная, что * glob вызывает проблемы, когда у вас есть имена файлов, которые выглядят как параметры, и сообщение об ошибке, запрашивающее опцию с именем & quot ;. & quot; (т. е. "-."). – cjm 16 June 2017 в 19:58

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

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