shell中如何设置自定义终端标题栏的内容?
shell中终端标题设置的背景知识
在Linux或Unix的Shell中,可以使用PS1环境变量来设置终端的提示符,包括终端标题栏。具体来说,可以在PS1?字符串中使用\[\e]0;Title\]?转义序列来设置终端标题。其中,Title?是终端窗口的新标题,可以是任何文本字符串。
以下是一个示例,演示如何在Bash Shell中设置终端标题:
PS1='\[\e]0;My Terminal\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
在运行此命令后,终端窗口的标题将更改为"My Terminal"。在这个示例中,我们将\[\e]0;My Terminal\]?添加到了PS1?变量的开头,这样就可以在终端标题栏中设置一个新的标题。
请注意,这种方法可以与大多数Shell和终端仿真器一起使用,但是可能会有一些特殊的终端类型不支持此ANSI转义序列。同时,如果在PS1?字符串中使用了其他转义序列,可能需要特殊的转义符号来避免终端混淆。
更进一步:兼容性考虑
如果你使用支持xterm兼容的转义序列的终端,并且只想设置一次标题,你可以使用像这样的函数:
settitle() { printf '\e]2;%s\a' "$*"; }
如果你想每次输入命令时将标题栏设置为当前运行的命令行,那么以下解决方案可以实现类似的效果:
trap 'printf "\e]2;%s\a" "$(HISTTIMEFORMAT= history 1)" >/dev/tty' DEBUG
然而,它会保留命令历史编号,并且不会在显式的子shell(例如(cd foo && make))中触发。
或者仅使用当前简单命令的名称和参数:
trap 'printf "\e]2;%s\a" "$BASH_COMMAND" >/dev/tty' DEBUG
对于遵循Posix标准但不识别'\e'作为Escape字符序列的Shell,可以用'\033'替代。
如果您觉得文章内容对你有一点帮助可以关注我,我在头条平台会持续分享更多实用的shell技巧和最佳实践,如果想系统的快速学习shell的各种高阶用法和生产环境避坑指南可以看看《shell脚本编程最佳实践》专栏,专栏里有更多的实用小技巧和脚本代码分享。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-446.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 11月15日|20.1M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 11月21日|20.9M/S,SSR/Shadowrocket/Clash/V2ray免费节点订阅链接每天更新
- 11月29日|18.1M/S,SSR/Clash/Shadowrocket/V2ray免费节点订阅链接每天更新
- 11月28日|19.7M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 11月27日|19.2M/S,SSR/Shadowrocket/Clash/V2ray免费节点订阅链接每天更新
- 11月24日|22.5M/S,V2ray/Shadowrocket/Clash/SSR免费节点订阅链接每天更新
- 11月23日|22.6M/S,Shadowrocket/V2ray/Clash/SSR免费节点订阅链接每天更新
- 11月22日|21.3M/S,V2ray/Shadowrocket/SSR/Clash免费节点订阅链接每天更新
- 12月3日|21.7M/S,Shadowrocket/Clash/V2ray/SSR免费节点订阅链接每天更新
- 11月30日|18M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
最新文章
- 12月13日|22.8M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新
- 12月12日|19.2M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 12月11日|18.9M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 12月10日|21.8M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
- 12月9日|20.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 12月8日|21.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 12月7日|18.5M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
- 12月6日|19.9M/S,SSR/Shadowrocket/V2ray/Clash免费节点订阅链接每天更新
- 12月5日|18.5M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新
- 12月4日|21.8M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新