tmux sendを使用してキーワードをエスケープします。

tmux sendを使用してキーワードをエスケープします。

あるターミナルから別のターミナルにコマンドを送ってtmux気づきました。

$ tmux send -t mySession "text" ENTER

正しく送信されtextましたが、

$ tmux send -t mySession "up" ENTER

再送信しましたtext。それはおそらくupテキストとして解釈されず、キーワードキーの上向き矢印として解釈されたからです。

同様に、

$ tmux send -t mySession "3" ENTER

正しく送信され3ましたが、

$ tmux send -t mySession "-3" ENTER
tmux: unknown option -- 3
usage: send-keys [-lRM] [-t target-pane] key

このエラーメッセージで失敗し、この素朴なエスケープ試行は失敗します。

$ tmux send -t mySession "\-3" ENTER

3予期しないことが再送信されました-3

とにかく、私はtmuxが引数を解釈して理解する方法について何かが欠けていると確信しています。私がここで何を見逃しているのでしょうか?

mytmuxcommand "<text>" ENTER常に次のように解釈されるようにするにはどうすればよいですか?「実際の値を送信して<text>ENTERキーを送信してください」

答え1

文字列を文字通り送信するには-lto オプションを使用できますがsend-keys、後ろにもオプションがある可能性があるため、最初にオプションを見つけたくない場合は(empty string)などを-l使用する必要があります。''-

Enterのようなキー名とリテラルを混在させて一致させることはできないので、最終的には次の2つのコマンドを提供します。

tmux send-keys -t session -l '' -3 \; send-keys -t session Enter

関連情報