@PaulDraper Удобочитаем и меньше подвержен ошибкам> Короче одним нажатием клавиши
дверная ручка
Одиночные кавычки - это путь. Я даже не думал, что ты сможешь использовать обратную косую черту таким образом ...
Флорис,
4
Прежде чем ваша оболочка findвыполнит команду, она выполнит различные расширения . При этом он также обрабатывает специальные символы (или символы со специальным значением), где *используется подстановочный знак - символ-заглушка. Это так называемое расширение имени файла.
Скажем, у вас есть два файла в вашем каталоге:
foo.pyc
bar.pyc
Тогда *.pycрасширился бы на оба имени. Так что если вы напишите:
find .-name *.pyc -delete
тогда оболочка на самом деле вызовет:
find .-name foo.pyc bar.pyc -delete
что не имеет большого смысла, потому что вы можете иметь только один аргумент для -name. Вот почему вам нужно экранировать специальный символ, чтобы предотвратить его интерпретацию оболочкой. Вы делаете это, убирая обратную косую черту или, наоборот, цитируя его.
find
справочника должна иметь раздел, называемыйNON-BUGS
чем-то похожим в качестве примера, и объяснение, почему это необходимо.Ответы:
Глобус без кавычек будет расширен оболочкой перед
find
выполнением. (См. Расширение имени файла в руководстве.)Сказав так:
будет на самом деле выполнить:
при условии, что в текущем каталоге было 3 файла .pyc, что привело к ошибке.
Обратная косая черта заставляет оболочку передавать глобус
find
, т.е. она действует так, как если бы она*.pyc
была заключена в кавычки.В идеале вы должны цитировать глобус:
источник
Прежде чем ваша оболочка
find
выполнит команду, она выполнит различные расширения . При этом он также обрабатывает специальные символы (или символы со специальным значением), где*
используется подстановочный знак - символ-заглушка. Это так называемое расширение имени файла.Скажем, у вас есть два файла в вашем каталоге:
foo.pyc
bar.pyc
Тогда
*.pyc
расширился бы на оба имени. Так что если вы напишите:тогда оболочка на самом деле вызовет:
что не имеет большого смысла, потому что вы можете иметь только один аргумент для
-name
. Вот почему вам нужно экранировать специальный символ, чтобы предотвратить его интерпретацию оболочкой. Вы делаете это, убирая обратную косую черту или, наоборот, цитируя его.источник