В чем разница между выполнением команды с помощью sudo и выполнением ее от имени пользователя root?

Это не совсем правильно, последовательность цветового кода и %pдолжны быть в одном аргументе для -printfи , а не в отдельных.

Флаг -printfв findотличается от обычного встроенного -в bash. Версия findпринимает аргументы формы -printf format, в то время как встроенная версия -принимает printf <FORMAT> <ARGUMENTS...>, что означает, что первая не принимает спецификаторы формата -, за которыми следуют аргументы, а только одну строку с определенными параметрами. Опция -printfдля findпредоставляет различные последовательности для описания атрибутов файла. Значение %sвнутри find -printfотличается от определения спецификации формата встроенным -.

Также я предполагаю, что printfизfind(команды GNU findutils )поддерживает только цветовые коды ANSI и не принимает управляющие последовательности \e(, в отличие от встроенной -в printfкоманды оболочка GNU,на автономной утилите GNU printf), но ее восьмеричный эквивалент только (здесь 033, предполагая систему на основе ASCII -):

find. -type l -not -xtype l -printf '\033[1;34m%p\033[m -> %l\n'

Вы можете добавить цветовой код ANSI по вашему выбору к вышеуказанному.

Или вы можете использовать оператор цитирования $'...', который можно найти в нескольких оболочках, включая оболочку GNU, которая распознает\e:

find. -type l -not -xtype l -printf $'\e[1;34m%p\e[m -> %l\n'

Выше \eи \nрасширяются до символов ESC и NL перед передачей в find.

0
27.04.2021, 14:47
0 ответов

Теги

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