Как преобразовать строку с кодами символов в заключенную в кавычки форму

dmesg вывод является сообщениями диагностики ядра Linux, т.е. некоторой информацией об инициализации аппаратных средств и драйвера.

boot.log кажется, определенная функция Вашего распределения (у меня нет его), который показывает Вам журнал успешных/неудавшихся запусков Ваших демонов и других initscripts, которые расположены в /etc/rc.d/ или /etc/init.d/. Эти initscripts запускаются после того, как ядро Linux загружается.

2
19.03.2015, 08:15
2 ответа

Предположим, что сами обратные слеши в ваших строках также исчезли (как \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, выполняющим экранирующие последовательности обратного слеша. Это не подвержено никаким забавным операциям с именами, содержащими нечетные, но легитимные символы, и не требует перезаписи строки.

2
27.01.2020, 22:05

Попробуйте это:

string=$'New\x20Folder'

или

string="New\x20Folder"
string="$(echo -e "$string")"
1
27.01.2020, 22:05

Теги

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