得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

自定义终端标题

起因

在定制 Win10 terminal 中的 git bash 的时候,想要在 title 中显示当前操作的目录来区分各个终端,然后是开始各种搜索,网上大多给出的解决方法都是如下方案

1
$ echo -ne "\033]0;title\007"  # -e 使转义字符生效;-n 内容输出后不换行

这时候,终端的 title 就会变成 title 了

OSC 转义序列

原来这条命令是输出特殊的 OSC (Operating System Commands) 转义序列,用来更改终端的标题,更多详细的历史信息可以看 XTerm Control Sequences

其中一个表格有相关内容:

1
2
3
4
5
6
7
OSC 0 ST    -    yes    yes    set window and icon title
OSC 1 ST - yes yes set icon label
OSC 2 ST - yes yes set window title
OSC 3 ST - n/a yes set X server property
OSC I ST yes yes yes set icon to file
OSC l ST yes yes yes set window title
OSC L ST yes yes yes set icon label

终端是怎么知道这句话是 OSC 转义序列的?而这正是 \033] 起了作用,它标志着 OSC 转义序列的开头,而末尾的 \007 则结束了 OSC

无用的知识又增加了

大部分终端都是支持这种转义序列的,发行版们也一般会把这样的转移序列默认配置到 PS1 变量或 PROMPT_COMMAND 变量中,用来在终端标题显示一些信息。两者的区别在于 PS1 变量一条命令结束接受下一条命令的输入之前由 shell 直接显示出来的,而 PROMPT_COMMAND 中存储的是可以执行的命令,由 shell 在显示 PS1 之前执行

be slow to promise and quick to perform.