解释csh中的转义序列?

时间:2018-05-07 23:49:47

标签: shell csh tcsh

我有一个小脚本来着色当前目录中git仓库的状态:

export PS1="$LG\n[\!] -${LG}bash${LG}- $LG\u$DG@$RD\h $GN\w \$(git_branch)\n$LG └─► $RES"

当我在bash的提示中使用它时效果很好:

set prompt = "${LG}\n\[%!\] -${RD}csh${LG}- ${LG}%n${DG}@${RD}%m ${GN}%~ `git_branch`\n${LG} └─► ${RES}"

但是当我在csh的提示中使用它时:

^[[0;37m[^[[0;34mmaster^[[0;31m✘ ^[[0;37m]

它打印echo `git_branch` 而不是彩色分支名称和状态。虽然

{{1}}

按预期工作。如何让csh / tcsh正确解释转义序列?

1 个答案:

答案 0 :(得分:1)

根据https://www.cs.umd.edu/~srhuang/teaching/code_snippets/prompt_color.tcsh.html,您应该将转义序列放在EDITOR的{​​{1}}内。

%{ }

如果您希望更新GIT分支,则需要将提示设置放在csh别名中,该别名在每个命令之前进行评估:

set     red="%{\033[1;31m%}"
set   green="%{\033[0;32m%}"
set  yellow="%{\033[1;33m%}"
set    blue="%{\033[1;34m%}"
set magenta="%{\033[1;35m%}"
set    cyan="%{\033[1;36m%}"
set   white="%{\033[0;37m%}"
set     end="%{\033[0m%}" # This is needed at the end... :(

set prompt = "${white}\n\[%!\] -${red}csh${white}- ${white}%n${DG}@${red}%m ${green}%~ `git_branch`\n${white} └─► ${RES}${end}"