bash - 无法从.bash_logout使用printf颜色

标签 bash ssh

我试图在从ssh's进入的Ubuntu箱注销时使用this lovely script。如果我手动调用它,颜色是正确的。但是,无论何时从.bash_logout运行,每行都是白色的,并以颜色代码作为前缀:

\x1B[38;5;160;01m  .d8888b.  8888888888 8888888888      Y88b   d88P  .d88888b.  888     888  
\x1B[38;5;196;01m d88P  Y88b 888        888              Y88b d88P  d88P" "Y88b 888     888  
\x1B[38;5;202;01m  "Y888b.   8888888    8888888            Y888P    888     888 888     888  
\x1B[38;5;208;01m     "Y88b. 888        888                 888     888     888 888     888  
\x1B[38;5;214;01m       "888 888        888                 888     888     888 888     888  
\x1B[38;5;220;01m Y88b  d88P 888        888                 888     Y88b. .d88P Y88b. .d88P  
\x1B[38;5;226;01m  "Y8888P"  8888888888 8888888888          888      "Y88888P"   "Y88888P"  

在VM和我的主机(OS X 10.11)中,TERM均设置为xterm-256color。我尝试使用echo -e,但是所做的只是在颜色字符串前面添加了-e。将脚本的内容直接添加到.bash_logout是可行的,尽管这看起来很麻烦。有什么想法吗?

最佳答案

在POSIX shell中,不能在\xXX命令中使用printf转义;您只能使用八进制符号。使用.source可以通过当前bash进程而不是POSIX Shell来执行脚本。 bash seeyou也可以。

脚本的POSIX兼容版本会将第一行更改为:

ESC_SEQ="\033[38;5;"

当然,由于文件本身特定于.bash_logout,因此没有特别的理由仅使代码从bash POSIX兼容执行。

关于bash - 无法从.bash_logout使用printf颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460509/

相关文章:

bash - ls 的内容出现在输出中间

json - 如何通过 jq 合并(平均/求和).json 中的重复对象?

bash - 通过拆分特定字段将行拆分为多个

linux - "argument list too long"限制是否适用于 shell 内置函数?

git - Jenkins 卡在 git fetch

.net - 使用域凭据连接的 SSH.NET

ssh - 在 Windows 中通过 cmd 为 ssh 命令或 putty 提供代理

git - '' 路径'' 似乎不是 git 存储库

LINUX - saltstack cmd.run 在变量中

azure - 为什么尝试从 Ubuntu 22.04 通过 SSH 连接到 Azure Linux 虚拟机时总是超时?