跳到主要内容
ansicode

OSC 7 — 当前工作目录提示

把当前 shell 所在目录告知终端 —— 用于标签名、「在此目录新开标签」、远程感知的分屏工作流。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b]7;file://HOST/PATH\x07
\\033[\033]7;file://HOST/PATH\007
\\e[\e]7;file://HOST/PATH\a
ESC [ESC ] 7 ; URL BEL
hex1b 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

示例

bash
# Emit on every prompt — bash 5+\nPROMPT_COMMAND='printf "\033]7;file://%s%s\007" "$HOSTNAME" "$PWD"'
python
import os, socket, sys; sys.stdout.write(f'\x1b]7;file://{socket.gethostname()}{os.getcwd()}\x07')
go
host, _ := os.Hostname(); wd, _ := os.Getwd(); fmt.Printf("\x1b]7;file://%s%s\x07", host, wd)
javascript
import os from 'node:os'; process.stdout.write(`\x1b]7;file://${os.hostname()}${process.cwd()}\x07`)
c
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
不支持

相关序列

在家族食谱中

OSC 食谱 · 5. Shell 提示符标记 —— `OSC 133`(FinalTerm A / B / C / D)