Предотвратите подстановочное расширение на находке

Пакет называют cifs-utils, это обеспечивает mount.cifs вместо mount.smbfs.

1
23.05.2017, 15:39
3 ответа

Как @njsg уже сказал, проблема вызывается find, не оболочка: двойные кавычки, которые Вы используете, уже защищают Ваше выражение от оболочки; это передается find неизмененный.

Проблема - это find рассматривает аргумент -name и -iname как шаблон. Единственный способ подавить, который должен был бы использовать a find опция, которая не рассматривает ее аргумент как шаблон. Но find не имеет такой вещи, согласно моей странице руководства, поэтому что Вы хотите, не может быть сделан. Лучшее, которое можно сделать, улучшают сценарий, чтобы выйти из скобок автоматически, прежде, чем передать их find. Следующий забавно выглядящий sed замена сделает это для Вас:

echo "foo [bar]" | sed 's/[][]/\\&/g'

Распечатает: foo \[bar\]

2
27.01.2020, 23:17
  • 1
    Спасибо, alexis. Я приму Ваш ответ для того, чтобы быть самым завершенным и продвинуть меня к хорошему пути делать весь выход, который я должен сделать. –  lsborg 09.12.2013, 17:07
  • 2
    Хороший ответ. Конечно, GNU находит, не имеет такой опции (и я не вспоминаю никого, когда-либо прося его). –  James Youngman 10.12.2013, 00:55

Проблема не с оболочкой, а с находкой. Аргумент -name и -iname сам шаблон. [bar] будет означать b, a или r кому: find. Попытка, просто выходящая из квадратных скобок, который является:

find . -iname "foo \[bar\]"

(Редактирование: С этим Вы не выходите из них на уровне оболочки, но передаете обратные косые черты find.)

4
27.01.2020, 23:17
  • 1
    Спасибо, njsg. Я ищу решение, которое не делает зависит от выхода из подстановочных знаков. –  lsborg 08.12.2013, 23:29
  • 2
    , право, я пропустил это, извините. Как @alexis сказал, это в основном зависит от ли find поддержки это. И, от того, какому сказанному @alexis, это не кажется. Я действительно предложил бы sed идею alexi. –  njsg 09.12.2013, 01:41

Можно использовать одинарные кавычки для предотвращения расширения.

find . -iname 'foo [bar]'
-1
27.01.2020, 23:17
  • 1
    Спасибо за быстрый ответ, Zelda. Это работает с ls, но не с находкой. Вы могли перепроверить это только, чтобы быть уверенными? Я просто работал, находят. –  lsborg 08.12.2013, 20:50
  • 2
    Извините, это действительно, кажется, не работает, поскольку я был уверен, что это шло в, извините. –  Zelda 08.12.2013, 21:31

Теги

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