btrfs sub show /path/to/subvolume|grep readonly
возвращает 0, если он доступен только для чтения, вы можете проверить его с помощью
btrfs sub show /path/to/subvolume|grep readonly && echo yep
Поскольку ваша строка очень сложная и содержит много экранирующих символов, я бы предложить использовать 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"}]'
Используйте цитируемый здесь -документ:
cat >>file <<'END'
[{\n"code":"final.net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
END
Это добавляет содержимое документа здесь -в конец файла с именем file
. Поскольку документ здесь -заключен в кавычки, как видно из одинарных кавычек вокруг начального END
, оболочка не будет выполнять никаких расширений, подстановок имен файлов или другой интерпретации данных.