我想通过bash脚本中的sed脚本编辑文件.我希望以后容易维护; 易于理解和修改.替换字符串如下所示:
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\]'
Run Code Online (Sandbox Code Playgroud)
在一个完美的世界里,它会喜欢这样:
sed -i "s/^PS1.*$/PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\]'/g" /etc/skel/.bashrc
Run Code Online (Sandbox Code Playgroud)
问题是bash和sed正在剥离\文件中给出以下结果:
PS1='[e[1;32m][@h W]$[e[0m]'
Run Code Online (Sandbox Code Playgroud)
显然单引号不能使用.一个强力解决方案是使用转义,但为了这个工作我得到一个非常难看的线:
sed -i "s/^PS1.*$/PS1='\\\\[\\\\e[1;32m\\\\][\\\\u@\\\\h \\\\W]\\\\$\\\\[\\\\e[0m\\\\]'/g" /etc/skel/.bashrc
Run Code Online (Sandbox Code Playgroud)
我希望脚本是可读的和自包含的(不使用外部文件).以上任何替代方案?