Intereting Posts
Как мне получить git, чтобы дать мне приемлемый pkgver для Atom, который я могу использовать, чтобы проверить это? ssh игнорирует ssh-agent Установите обратный вызов, когда возникает определенный процесс Как архивировать почтовый ящик POP3? Почему в / bin есть сочетание символических ссылок и hardlinks? очистка вывода скрипта, так что он спускается, дает имена пакетов и чисто Проблема с резольвером? Почему «до» блок спроектирован, так как это всего лишь отрицательная версия `while`? Как я могу использовать `find` и сортировать результаты по mtime? Почему crontab не хранится в домашних каталогах пользователей? tune2fs – сколько места зарезервировано на большой файловой системе ext4 Переименовать файл, динамически содержащий пробелы Параметры прошивки маршрутизатора с открытым исходным кодом? передача переменной tmux в shell-команду в tmux.conf Сравнение аппаратных средств Windows и Linux

Разница, которую делают кавычки в команде find

Когда у меня есть вложенный каталог find . -name "*.py" -print find . -name "*.py" -print дает мне все скрипты python под текущим каталогом. Однако find . -name *.py -print find . -name *.py -print возвращает только скрипты python в текущем каталоге.

Это ожидаемое поведение? В чем разница? Я использую Mac OS X 10.7.

Это, вероятно, не та же команда. Вы можете поставить echo перед проверкой.

 $ echo find . -name "*.py" -print find . -name *.py -print $ echo find . -name *.py -print find . -name foobar.py barfoo.py -print 

Без кавычек оболочка расширила *.py , поэтому find получает разные аргументы, что дает разные результаты.

Вы всегда должны указывать * когда хотите, чтобы команда увидела * буквально. В противном случае поведение будет неустойчивым (команда работает до тех пор, пока не будет файлов *.py чтобы оболочка расширилась).

Поскольку оболочка расширяет шаблон, если вы не защищаете шаблон.

Вам всегда нужно использовать некоторые кавычки.