bash - PS1:如何从子外壳中执行的函数中回显颜色代码?
问题描述
我以前从未真正接触过 bash,所以我的问题的解决方案可能很明显,但我无法理解它。我想将我的 PS1 设置为具有某些颜色的某些值。它工作正常,直到我从子外壳中回显一个颜色代码,然后它就搞砸了。
例如:
some_color='\033[01;38;5;196m'
PS1="\[$some_color\] $USER "
工作得很好。假设我有一个名为 get_color 的函数,它使用转义序列来回显颜色代码,我的提示符在用户名前面打印序列 \[\] 并且当我按几次向上箭头时,bash 历史记录被搞砸了。
some_color='\033[01;38;5;196m'
function get_color() {
echo -n "\[$some_color\]"
}
PS1="\$(get_color) $USER "
当我省略序列时,它会打印正确的输出,但 bash 历史仍然一团糟。当我使用 printf 和序列 \001 和 \002 而不是 \[ 和 \] 它工作得很好。为什么它不适用于回声?
some_color='\033[01;38;5;196m'
function get_color() {
printf \001$some_color\002"
}
PS1="\$(get_color) $USER "
解决方案
推荐阅读
- session - Sailjs 对管理员路由和客户路由有不同的会话
- android - 错误:错误状态:flutter 中的平台不允许不安全的 HTTP
- sql - 如何仅选择 SQL 中的最大时间戳行?
- javascript - 使用 for 循环在字符串中查找子字符串
- javascript - 无法从请求对象模拟用户访问令牌并测试方法
- node.js - populate() 会触发中间件挂钩吗?
- angular - 使用 Angular 在 .NET Core 中保存 FormData
- apache-spark - Spark with Yarn - 卡在 WARN cluster.YarnScheduler:初始作业未接受任何资源
- java - 如何一次迭代 Stream 的两个项目?
- java - 我想使用 Jsoup 从整个在线词典中获取定义,我必须做些什么来防止我的 IP 被阻止?