dmesg
вывод является сообщениями диагностики ядра Linux, т.е. некоторой информацией об инициализации аппаратных средств и драйвера.
boot.log
кажется, определенная функция Вашего распределения (у меня нет его), который показывает Вам журнал успешных/неудавшихся запусков Ваших демонов и других initscripts, которые расположены в /etc/rc.d/
или /etc/init.d/
. Эти initscripts запускаются после того, как ядро Linux загружается.
Предположим, что сами обратные слеши в ваших строках также исчезли (как \x5c
, предположительно), что udev
, вам следует использовать Bash's printf
builtin:
printf -v translated '"%b"' "$ID_FS_LABEL_ENC"
Если мы попробуем это на вашем примере строки:
$ ID_FS_LABEL_ENC='New\x20Folder'
$ printf -v translated '"%b"' "$ID_FS_LABEL_ENC"
$ echo "Translated to: '$translated'"
Translated to: '"New Folder"'
, то получим нужное преобразование.
printf -v
присваивает результат стандартного printf
-стиля трансляции в переменную, а формат %b
является расширением Bash, выполняющим экранирующие последовательности обратного слеша. Это не подвержено никаким забавным операциям с именами, содержащими нечетные, но легитимные символы, и не требует перезаписи строки.
Попробуйте это:
string=$'New\x20Folder'
или
string="New\x20Folder"
string="$(echo -e "$string")"