현재 운영 체제를 기반으로 Tmux 명령을 실행하는 방법은 무엇입니까?

현재 운영 체제를 기반으로 Tmux 명령을 실행하는 방법은 무엇입니까?

현재 운영 체제를 기반으로 Tmux 명령을 실행하는 방법은 무엇입니까?

Linux와 macOS에서 동일한 Tmux 구성 파일을 사용하고 싶지만 일부 구성(예: 시스템 클립보드와 Tmux 통합)은 플랫폼 간에 이식 가능하지 않습니다.

명령 에 대해 읽었 if-shell지만 일부 리소스에서는 이것이 비동기 작업(백그라운드에서 수행됨)이라고 말하므로 세션이 올바르게 구성되지 않을 수 있습니다(? ).

~/.tmux.conf:

# vim copy to system clipboard
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
#bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

답변1

현재 운영 체제(Linux 또는 macOS)에 따라 Tmux에서 조건부 명령을 실행합니다.

# vim copy to system clipboard
if-shell '[[ $(uname -s) = Linux ]]' { 
   bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard" 
} { 
   bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy" 
}

if-shell기본적으로 -b백그라운드에서 실행되는 지원 옵션( )은 즉시 실행됩니다.shell-command

if-shell [-bF] [-t target-pane] shell-command command [command]
              (alias: if)
        Execute the first command if shell-command returns success or the second command otherwise.  Before being executed, shell-command is expanded using the rules specified in the FORMATS section,
        including those relevant to target-pane.  With -b, shell-command is run in the background.

반품( man tmux):

Commands like if-shell, run-shell and display-panes stop execution of subsequent commands on the queue until something happens - if-shell and run-shell until a shell command finishes and display-panes until a key is pressed.  For example, the following commands:

           new-session; new-window
           if-shell "true" "split-window"
           kill-session

Will execute new-session, new-window, if-shell, the shell command true(1), split-window and kill-session in that order.

관련 정보