Я хочу несколько предлагает расшифровать несколько жестких дисков, содержащих корневую файловую систему

Ну, вы знаете, что шаблон поиска содержит "-", и вы знаете, что, когда шаблон поиска содержит "-", вам нужно использовать флаг -e . Поскольку вы не используете флаг -e , оболочка вместо этого интерпретирует ваш «шаблон» как аргумент (и параметр). Вы можете увидеть это с помощью:

$ grep "-foo" file1
grep: oo: No such file or directory

По расширению ваш код grep "-example" file1 сообщает оболочке, что вы хотите запустить grep с -e аргумент и параметр «xample».

Это та же проблема, с которой мы сталкиваемся, когда пробуем что-то вроде rm -my-silly-file-name - это не сработает, и нам нужно использовать что-то вроде rm. / -мое-глупое-имя-файла вместо этого. Другой способ обхода - rm - -my-silly-file-name . Мы можем использовать эту идиому здесь:

$ grep -- "-example" < file1
-example

Знак «-» сообщает оболочке, что все, что идет после него, не является аргументом.

В качестве альтернативы, вы можете просто экранировать "-" знаком "\", как вы видели:

grep "\-example" file1

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

1
14.09.2017, 07:52
0 ответов

Теги

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