Эта команда работает нормально:
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
в самой первой приведенной выше команде, а не во второй.