printf игнорирует Escape-последовательность - PullRequest
2 голосов
/ 02 мая 2020

Эта команда работает нормально:

printf "\e[1;34m%.3d\e[0m\n" 42

Вывод выделен жирным шрифтом, как и ожидалось.

Однако, если я использую этот тип escape-последовательности в этой команде (используя \e):

$ sudo cat /etc/wireguard/nl1.conf | grep PrivateKey | awk '{ print $3 }' | xargs printf "\e[1;34m%s\e[0m\n"
e[1;34mPqyfQ3CtdcoCwgQjW8iGbypofi4TUyJSS5PmVa67sPCTS=e[0m

Я не ожидал этого вывода, но если вместо этого я введу следующее (используя escape-последовательность \33):

$ sudo cat /etc/wireguard/nl1.conf | grep PrivateKey | awk '{ print $3 }' | xargs printf "\33[1;34m%s\33[0m\n"
PqyfQ3CtdcoCwgQjW8iGbypofi4TUyJSS5PmVa67sPCTS=

, который выделен жирным шрифтом, таким образом, ожидается.

Мой вопрос заключается в том, почему printf принял бы \e в самой первой приведенной выше команде, а не во второй.

...