シェルに取得させたいものから始めます。
iwgetid | cut -d '"' -f 2
#()
の展開でシェルコマンドとして扱われるようにラップしstatus-left
ます。
#(iwgetid | cut -d '"' -f 2)
これをtmuxが解析できる文字列として埋め込みます。一重引用符で囲もうとしました:
'#(iwgetid | cut -d '"' -f 2)'
問題は、tmuxが最初の「内側」の一重引用符と最初の「外側」の一重引用符を単一の文字列セグメントとして解釈し、次の二重引用符をトップレベルに残して、そこで終了していない文字列セグメントを形成することです。 ; この状況では、エラー メッセージはあまり明確ではありません。
この問題を解決するには、選択したtmux引用文字の書式文字列 (シェル コマンドを埋め込む) を適切に引用する必要があります。次のようにします。
set -g status-left '#(iwgetid | cut -d '"'\"'"' -f 2)'
しかし、これは少し読みにくいので、シェル コマンドをより簡単なtmux -quotableに切り替えることを検討してください。
iwgetid | cut -d \" -f 2
status-left
次のようにtmuxの一重引用符で埋め込むことができます。
set -g status-left '#(iwgetid | cut -d \" -f 2)'
または、次のようにtmux二重引用符を使用します。
set -g status-left "#(iwgetid | cut -d \\\" -f 2)"
tmuxの引用は Bourne 形式のシェルの引用に似ていますが、同一ではないことに注意してください(たとえば、トップレベルのバックスラッシュのエスケープは同じようには機能しません)。この引用符システムは、構成ファイルcommand-prompt
(例: Prefix :
)、confirm-before
およびif-shell
コマンド パラメータ、およびコマンドのコマンド テンプレートで使用されchoose-
ます。