【发布时间】:2022-12-30 01:15:45
【问题描述】:
有没有办法像 zsh 一样在 bash 中保留部分行?我的 bash 提示在没有换行符和打印其他不可打印的转义字符时出现混乱。
提前致谢!
我试过PS1="\[\e[0m\]\n$PS1"。但我认为这不是一个完美的解决方案。如果在之前的输出中没有检测到 EOL,我只想设置我的 bash 提示符来添加换行符。
【问题讨论】:
-
关于交互式shell配置的问题更适合Unix & Linux
-
不过,一般来说,您要做的是使用
tput询问终端光标所在的位置。 (shell 不会读取它运行的程序的输出——输出直接写入 TTY——因此如果不执行该查询,它就无法判断程序是否以换行符结束)。 -
(...意识到我遗漏了一段:
PROMPT_COMMAND是如何指定在打印提示之前运行的函数;该函数可以使用上面链接的答案中的技术来分配适当的 PS1) -
@CharlesDuffy 是的,
PROMPT_COMMAND的“发现”对我来说是真实发生的。针对我所在的每种目录类型的特殊提示。git、clearcase、.../dev、/etc- 自定义可以继续下去。在我们从clearcase迁移到git的某个时候,我得到了一个提示,结合了我需要的信息,以免出错 :.)
标签: bash prompt ansi-escape eol