OSC 7 — 当前工作目录提示
把当前 shell 所在目录告知终端 —— 用于标签名、「在此目录新开标签」、远程感知的分屏工作流。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b]7;file://HOST/PATH\x07\\033[
\033]7;file://HOST/PATH\007\\e[
\e]7;file://HOST/PATH\aESC [
ESC ] 7 ; URL BELhex
1b 5d 37 3b ... 07说明
把 shell 当前工作目录以 `file://HOST/PATH` URL 形式告知终端。iTerm2、Windows Terminal、kitty、wezterm、ghostty、Konsole 与 VTE 系(gnome-terminal、foot)均已采纳。终端用途:(a) 标签/窗格名显示目录的 basename,(b) `Cmd-T`/「在此处新开标签」在同一 cwd 启动新 shell,(c) `tmux` resurrect、wezterm `mux` 恢复会话时把分屏窗格还原到正确目录。shell 在每次提示符前发送 —— bash 通过 `PROMPT_COMMAND`、zsh 通过 `precmd` 或 `chpwd`、fish 内置 `__fish_cwd_osc`。SSH 场景下 hostname 字段决定终端是否能在远程主机重开标签(因为重新 ssh)。
规范出处: iTerm2 Proprietary Escape Codes (OSC 7) / VTE / kitty
示例
# Emit on every prompt — bash 5+\nPROMPT_COMMAND='printf "\033]7;file://%s%s\007" "$HOSTNAME" "$PWD"'import os, socket, sys; sys.stdout.write(f'\x1b]7;file://{socket.gethostname()}{os.getcwd()}\x07')host, _ := os.Hostname(); wd, _ := os.Getwd(); fmt.Printf("\x1b]7;file://%s%s\x07", host, wd)import os from 'node:os'; process.stdout.write(`\x1b]7;file://${os.hostname()}${process.cwd()}\x07`)char host[256]; gethostname(host, sizeof host); printf("\x1b]7;file://%s%s\x07", host, getcwd(NULL, 0));终端支持
- xterm
- 不支持
- Linux console (fbcon)
- 不支持
- macOS Terminal.app
- 部分
- iTerm2
- 支持
- Windows Terminal
- 支持
- cmd.exe / ConPTY
- 不支持
- kitty
- 支持
- alacritty
- 部分
- WezTerm
- 支持
- Ghostty
- 支持
- GNOME Terminal
- 支持
- Konsole
- 支持
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 不支持 | 不支持 | 部分 | 支持 | 支持 | 不支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
相关序列
在家族食谱中
OSC 食谱 · 5. Shell 提示符标记 —— `OSC 133`(FinalTerm A / B / C / D)