MrCalvin Asked: 2022-12-23 10:56:56 +0800 CST2022-12-23 10:56:56 +0800 CST 2022-12-23 10:56:56 +0800 CST 解释:echo -e "\e]52;;HelloWorld" 772 我认为这是一个 OSC 52 声明,如果您使用支持 OSC 52 的终端(如 Windows 终端),它将发送HelloWorld到主机剪贴板。 我也知道这-e将使反斜杠转义的解释成为可能。 并且\e是一个 ESC 字符。 但是什么]52意思,还是简单的一串“]52”? 什么;;意思?在 shell 中,我认为;这意味着类似于命令/语句的结尾。如果这里是同一件事,那么我不明白哪里有两个。您也可以使用echo -e "\e]52;c;HelloWorld"带有 a的语句c,似乎做同样的事情,但是会c做什么呢? 试图在echo和bash手册中找到答案但没有成功 terminal 1 个回答 Voted Best Answer Kusalananda 2022-12-23T11:33:34+08:002022-12-23T11:33:34+08:00 两者;分隔命令(OSC 52,即\e]52),第一个,第二个参数。在XTerm Control Sequences 文档中,第一个参数被调用Pc,而第二个参数被调用Pd。 第一个 ,可能包含来自集合, , , , , , , , , , , 和Pc的零个或多个字符。它用于按照给定的顺序分别为剪贴板、主要、次要、选择或剪切缓冲区构建选择参数 列表。如果参数为空,xterm 使用, 来指定可配置的主/剪贴板选择和剪切缓冲区。cpqs0123456707s 00 Pd参数是选择数据(base64 编码)。 所以c意思是“剪贴板”。 在 macOS 上,在 iTerm 终端中, echo -e '\e]52;c;SGVsbG9Xb3JsZA==\a' 要么 echo -e '\e]52;c;SGVsbG9Xb3JsZA==\e\\' 将剪贴板缓冲区设置为字符串HelloWorld(没有终止换行符)。尾随\e\\( ESC \) 或\a(BEL字符) 是数据应该如何终止的\e\\方式, ECMA-48 标准称之为“字符串终止符”。
两者
;
分隔命令(OSC 52,即\e]52
),第一个,第二个参数。在XTerm Control Sequences 文档中,第一个参数被调用Pc
,而第二个参数被调用Pd
。Pd
参数是选择数据(base64 编码)。所以
c
意思是“剪贴板”。在 macOS 上,在 iTerm 终端中,
要么
将剪贴板缓冲区设置为字符串
HelloWorld
(没有终止换行符)。尾随\e\\
(ESC \
) 或\a
(BEL
字符) 是数据应该如何终止的\e\\
方式, ECMA-48 标准称之为“字符串终止符”。