HelloWorld
これはOSC 52宣言文であると考えており、OSC 52サポート端末(Windows端末など)を使用している場合はホストクリップボードに送信されます。
-e
また、これがバックスラッシュエスケープを説明できることも知っています。
\e
ESC文字です。
しかし、これはどういう]52
意味ですか、それとも「] 52」文字列ですか?
どういう;;
意味ですか?シェルでは;
これがコマンド/ステートメントの終わりを意味すると思います。ここで同じであれば、2つがどこにあるのかわかりません。echo -e "\e]52;c;HelloWorld"
aでステートメントを使用することもできますがc
、これは同じことをするようですが、c
aは何をしますか?
答え1
これら2つの文字は、;
コマンド(OSC 52、つまり\e]52
)、最初の引数、および2番目の引数を区別します。存在するXTerm制御シーケンス文書、最初のパラメータはPc
、2番目のパラメータはと呼ばれますPd
。
最初の文字には、、、、、、、、、、、、、および
Pc
0個以上の文字を含めることができます。これは、クリップボード、プライマリ、セカンダリ、セレクト、またはカットバッファの選択パラメータのリストを指定された順序でそれぞれ作成するために使用されます。引数が空の場合、xtermはを使用して設定可能なデフォルト/クリップボードの選択とカットバッファを指定します。c
p
q
s
0
1
2
3
4
5
6
7
0
7
s 0
0
この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規格これを「文字列終端者」といいます。