Я хочу отредактировать файл через sed сценарий в сценарии bash. Я хочу, чтобы это было легко поддерживать позже; легко понять и изменить. Строка замены выглядит так:
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\]'
В идеальном мире это было бы так:
sed -i "s/^PS1.*$/PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\]'/g" /etc/skel/.bashrc
Проблема в том, что bash и sed удаляют \
, что дает следующий результат в файле:
PS1='[e[1;32m][@h W]$[e[0m]'
] Очевидно, что одинарные кавычки использовать нельзя. Решением грубой силы является использование экранирования, но для того, чтобы это сработало, я получаю действительно некрасивую строку:
sed -i "s/^PS1.*$/PS1='\\\\[\\\\e[1;32m\\\\][\\\\u@\\\\h \\\\W]\\\\$\\\\[\\\\e[0m\\\\]'/g" /etc/skel/.bashrc
Я хочу, чтобы сценарий был читабельным и самодостаточным (без использования внешних файлов). Есть ли альтернативы вышеуказанному?