我想将字符串PROMPT_COMMAND='echo -ne \"\033]0;${USER}@${HOSTNAME}: ${PWD}\007\"'
附加到4300台服务器上的.bashrc文件的末尾。
我在转义时遇到了一些困难,显然我希望变量在附加到文件时不会展开,以便文本保持原始状态。
我怎么能这样做?我尝试在变量的开头添加斜杠,但这似乎不是我想要的。
答案 0 :(得分:4)
最好使用heredoc
cat >> .bashrc <<'+'
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
+
答案 1 :(得分:3)
以下是在命令行中需要逐字值而不知道如何引用它的一般解决方案:
将您的值完全按照您希望的方式放入文件中:
$ cat file
PROMPT_COMMAND='echo -ne \"\033]0;${USER}@${HOSTNAME}: ${PWD}\007\"'
使用printf自动转义它:
$ printf "echo %q\n" "$(< file)"
echo PROMPT_COMMAND=\'echo\ -ne\ \\\"\\033\]0\;\$\{USER\}@\$\{HOSTNAME\}:\ \$\{PWD\}\\007\\\"\'
结果命令产生与文件相同的结果,所有特殊字符和非尾随换行符保持不变:
$ echo PROMPT_COMMAND=\'echo\ -ne\ \\\"\\033\]0\;\$\{USER\}@\$\{HOSTNAME\}:\ \$\{PWD\}\\007\\\"\'
PROMPT_COMMAND='echo -ne \"\033]0;${USER}@${HOSTNAME}: ${PWD}\007\"'
需要注意的重要事项:
您将以交互方式执行此操作,以生成要使用的echo命令。建议的答案不是在每台4300机器上创建临时文件。
这是特定的bash,它产生的命令也是如此。
如果您使用ssh,则需要单独的转义层。
答案 2 :(得分:2)
尝试bash $ quoting
echo $'PROMPT_COMMAND=\'echo -ne \\\"\\033]0;${USER}@${HOSTNAME}: ${PWD}\\007\\\"\''
PROMPT_COMMAND='echo -ne \"\033]0;${USER}@${HOSTNAME}: ${PWD}\007\"'