解释: echo -e "\e]52;;HelloWorld"

解释: echo -e "\e]52;;HelloWorld"

我认为这是一个 OSC 52 语句,如果您使用 OSC 52 支持的终端(如 Windows 终端),它将发送HelloWorld到主机剪贴板。

我还知道这-e将能够解释反斜杠转义。

并且\e是一个 ESC 字符。

但这是什么]52意思,或者只是一串“]52”?

是什么;;意思?在 shell 中,我认为;这意味着命令/语句的结束。如果这里是同一件事,那么我不明白哪里有两个。你也可以将语句echo -e "\e]52;c;HelloWorld"与 a 一起使用c,似乎做同样的事情,但是 a 会c做什么呢?

试图在其中找到答案回声巴什手动但没有成功

答案1

这两个字符;界定了命令(OSC 52,即\e]52)、第一个参数和第二个参数。在XTerm 控制序列文档,第一个参数被调用Pc,而第二个参数被调用Pd

第一个 ,可以包含, , , , , , , , , , ,和Pc集合中的零个或多个字符。它用于按给定的顺序分别构建剪贴板、主要、辅助、选择或剪切缓冲区的选择参数 列表。如果参数为空,xterm 使用, 来指定可配置的主/剪贴板选择和 cut-buffer 。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 标准称为“字符串终止符”。

相关内容