Я хочу отредактировать файл через скрипт 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
Я хочу, чтобы скрипт был читаемым и самодостаточным (без использования внешних файлов). Есть ли альтернативы вышеперечисленному?