Сценарий оболочки не находит файл, работающий в Mac OS X Catalina

Содержимое /etc/mysqlсоздается с помощью mysql-server-5.7postinst(, заменяя «5.7» на любую версию, которая у вас есть ). Вы должны попробовать запустить

sudo dpkg-reconfigure mysql-server-5.7

и исправление возникающих ошибок.

Как полностью переустановить mysql? объясняет, как полностью переустановить MySQL. Однако обратите внимание, что удаление /var/lib/mysqlудалит любую базу данных, которую вы создали.

0
21.03.2020, 09:55
2 ответа

Возможно, здесь происходит следующее: по умолчанию lsвыводит файлы в стандартный вывод по столбцам, что может привести к тому, что несколько имен файлов будут находиться в одной строке. lsтакже не печатает целые имена файлов (, то есть включая префикс каталога ), поэтому сначала используйте cd, чтобы попасть в каталог, чтобы ваши последующие команды правильно нацеливались на выбранные файлы. Я также не стал бы использовать глобус в lsдля фильтрации таких файлов. Используйте grep, который использует регулярные выражения.

Попробуйте:

cd /Username/Downloads | dir -w 1 -t /UserName/Downloads/ | grep "^Barcodes.*\.zpl$" | head -1 | lpr -P BarecodePrinter -o raw

Также проверьте правильность написания имени принтера «BarecodePrinter».

Янерекомендую использовать lsили dirдля списка ваших файлов для анализа, findбыло бы лучше, но я не знаю, как правильно настроить его для сортировки по времени как lsбез awkмагии.

С помощью find,sortиawk:

find /UserName/Downloads -maxdepth 1 -printf "\n%AD %AT %p\n" | grep ".*Barcodes.*\.zpl$" | sort -r | awk '{ print $3 }' | head -1 | lpr -P BarecodePrinter -o raw

Даже это может сломаться из-за неправильно экранированных имен файлов, которыми findпо-видимому, славится. Определенно можно сделать это еще безопаснее, но мне это не по силам. Я оставлю это другим пользователям.

0
28.04.2021, 23:19

Использование оболочки zshв macOS при условии, что сама команда lprверна:

lpr -P BarcodePrinter -o raw < ~/Downloads/Barcodes*.zpl(.Nom[1])

Квалификатор (.Nom[1])glob изменяет поведение предыдущего шаблона подстановки, так что он соответствует только обычным файлам (, что делает .), и так, что он вообще не расширяется, если нет соответствует (N, соответствует nullglobв оболочке bash).

om[1]упорядочивает результаты сопоставления в порядке метки времени модификации и выбирает только первую запись из списка, т. е. последний измененный из совпадающих файлов.

Если шаблон ничему не соответствует, чего не произойдет, если вы укажете неправильный каталог или опечатаетесь в имени файла, оболочка выдаст сообщение об ошибке

zsh: no such file or directory: ~/Downloads/Barcodes*.zpl(.Nom[1])

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


Из дополнительной информации, размещенной в комментариях ниже, становится ясно, что фактическое имя файлов соответствует ~/Downloads/zebraBarcodes*.zplили ~/Downloads/*Barcodes*.zpl, а не ~/Downloads/Barcodes*.zpl. Будет работать тот же подход, что и выше, с обновленным шаблоном.

1
28.04.2021, 23:19

Теги

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