как добавить длинную строку (наподобие кода )с символами [ )"$&...ect" в существующий файл?

btrfs sub show /path/to/subvolume|grep readonly

возвращает 0, если он доступен только для чтения, вы можете проверить его с помощью

btrfs sub show /path/to/subvolume|grep readonly && echo yep
0
27.09.2020, 14:54
2 ответа

Поскольку ваша строка очень сложная и содержит много экранирующих символов, я бы предложить использовать printf "%q", который поддерживают некоторые оболочки, такие как Bash. Ты можно использовать следующий короткий скрипт:

#!/usr/bin/env bash

read -r
printf "%q\n" "$REPLY"

Запустите его и вставьте свою строку:

$./printf-q.sh
[{\n"code":"final.net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
\[\{\\n\"code\":\"final\.net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\'

Последняя строка показана в форме, которую можно использовать в оболочке без добавление дополнительных escape-символов, подобных этому:

$ echo \[\{\\n\"code\":\"final\.net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\' >> FILE
$ cat FILE
[{\n"code":"final.net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
0
18.03.2021, 23:02

Используйте цитируемый здесь -документ:

cat >>file <<'END'
[{\n"code":"final.net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
END

Это добавляет содержимое документа здесь -в конец файла с именем file. Поскольку документ здесь -заключен в кавычки, как видно из одинарных кавычек вокруг начального END, оболочка не будет выполнять никаких расширений, подстановок имен файлов или другой интерпретации данных.

0
18.03.2021, 23:02

Теги

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