我正在写一个application生锈(为了好玩),它允许我使用DSL将git存储库统计信息打印到我的bash shell提示符中。
但是,我正在使用issue library来设置终端中的文本格式。它在输出中使用了我以前见过的逃避^[
。它似乎影响换行,使得文本在终端结束之前换行到同一行。
您可以在此处看到gnome shell和hyper中的演示。
使用以下内容创建文件shell.txt
:
^[[1;32m\u^[[0m^[[32m@\h^[[0m:^[[1;34m\w^[[0m
将提示命令设置为以下内容:
__set_prompt() {
PS1="$(cat shell.txt)"
}
PROMPT_COMMAND=__set_prompt
什么是^[
逃脱?
是否有一个简单的解决方法让我的shell能够正确识别线宽?
bash --version 4.4.12(1)-release
答案 0 :(得分:1)
它是文字转义字符(ASCII 0x1b)的表示。编写shell.txt
的简单方法是
\e[1;32m\u\e[0m\e[32m@\h\e[0m:\e[1;34m\w\e[0m
要确保shell可以准确计算提示的大小,您需要将非打印字符包装在\[...\]
中。
\[\e[1;32m\]\u\[\e[0m\e[32m\]@\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]