1
$ find . -name ‘*.blade.php’ -not -path ‘*/vendor/*’ | wc -l

Я управлял этой командой несколько дней назад, и с миром все было в порядке.

Запустив его сегодня я получаю:

-bash: find .: command not found

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

Что с этим? :)

1 ответ1

2

Я не совсем уверен, что случилось, но я думаю, что у вас есть что-то вроде неразрывного пробела между "найти" и «.». Неразрывные пробелы - это символы Юникода, которые выглядят так же, как обычные пробелы, но не предназначены для указания допустимых мест для переноса строки текста. Но хотя они выглядят как обычные пробелы, оболочка не знает, что с ними делать, и просто обращается с ними как с обычными символами. Одним из следствий этого является то, что он не распознает их как разделители между командой и ее аргументом. Вот пример:

$ find . -name ‘*.blade.php’ -not -path ‘*/vendor/*’ | wc -l    # With normal space
       0
$ find . -name ‘*.blade.php’ -not -path ‘*/vendor/*’ | wc -l    # With nonbreaking space
-bash: find .: command not found
       0
$ find . -name ‘*.blade.php’ -not -path ‘*/vendor/*’ | wc -l    # With ALL nonbreaking spaces
-bash:  wc -l: command not found
-bash: find . -name ‘*.blade.php’ -not -path ‘*/vendor/*’ : No such file or directory

(Обратите внимание, что у меня нет файлов, соответствующих шаблону, поэтому счетчик равен 0.) Во второй команде происходит то, что у меня есть неразрывный пробел (напечатанный как Option-Space на моем Mac) между "find" и «.», Поэтому оболочка обрабатывает «find <nonbreakingspace>». как команда ... которая не распознается. В третьей команде я заменил ВСЕ пробелы неразрывными; он признал "|" в качестве разделителя между командами, но буквально все остальное в строке является частью имени команды.

Это сообщение об ошибке, что команда «найти». не найдена раздача о том, что происходит; это относится к космическим вещам и "." как часть команды, поэтому они отображаются в сообщении об ошибке таким образом.

Однако кое-что меня смущает: я не уверен, откуда у вас там неразрывное пространство. Копирование и вставка в и из Notes не должно выполнять конвертацию. Может быть, вы наткнулись на вариант по ошибке? Я не знаю.

Кстати, во время редактирования я заметил еще одну вещь: у вас есть одиночные кавычки, причудливые (фигурные) юникодные, которые выглядят как совершенно хорошие кавычки, но, как и неразрывные пробелы, не распознаются оболочкой таким образом. Этот источник мне известен: во многих случаях macOS автоматически "исправляет" простые кавычки в необычном типе (функция, называемая "умные кавычки"). Это имеет тенденцию наносить ущерб сценариям. Я добавлю рекомендацию для BBEdit как хорошего редактора, который не мешает тому, что вы вводите, что делает его подходящим для сценариев. Это не бесплатно, но даже если вы не платите, он работает в ограниченном режиме, который все же намного лучше для сценариев, чем встроенные редакторы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .