@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)

Что не так с кавычками в bash?

Всем привет!
Сегодня полдня искал плагины в Ubuntu, и всё время находил только один.
Искал так:
find -name libasound*.so

Потом таки зашёл в папку с плагинами FAR-ом и увидел, что их больше.
Опытным путём обнаружил, что искать надо было так:
find -name "libasound*.so"

То есть, шаблон имени надо было закавычить.
И вот тут я сломался. Гугл говорит, что кавычки в bash нужны для того, чтобы bash воспринимал строку как есть, не пытаясь как-то хитро интерпретировать всякие спец-символы. У меня же получается наоборот: поиск начинает работать нормально, только если подстроку закавычить вместе со звёздочкой.

Есть идеи, почему так?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 2
@JustMoose Автор вопроса
Программист. Радиолюбитель. Прокрастинатор ;)
The filename matching is performed with the use of the fnmatch(3) library function. Don't forget to enclose the pattern in quotes in order to protect it from expansion by the shell.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Перед тем как выполнить любую команду происходит parameter expansion
Поэтому если выполнить команду
find . -name a*
и в каталоге есть файлы a1, a2 и a3, то баш проведет expansion и на самом деле попытается выполниться команда
find . -name a1 a2 a3
что будет синтаксической ошибкой, так как непонятно что такое a2 и a3

А если написать так:
find . -name "a*"
то параметр "a*" уже отправится именно в find и он его распарсит согласно всем правилам wildcard в линукс

P.S. это касается выполнения любой команды. Просто в find . -name люди чаще всего попадаются.
А так можно поэксперементировать на
echo a*
echo "a*"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
-name - НЕ ПОДДЕРЖИВАЕТ нормальный ситнаксис
find /home/bitrix/ -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Потому что glob!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы