tmux run-shell이 쉘을 실행할 수 있다는 것을 알고 있습니다.
$ tmux run-shell "echo start; echo \${var}end"
start
end
하지만 쉘이 대화형으로 작동하거나 일부 사용자 입력을 읽도록 하려면 어떻게 해야 할까요?
$ tmux run-shell "echo start; read -p \"prompt:\" var; echo \${var}end"
start
end
- 위 코드의 read 문이 작동하지 않는 이유는 무엇입니까?
- 상호 운용성을 달성하기 위해 tmux를 사용하는 방법을 알려줄 수 있는 tmux 전문가가 있습니까?
배경:
kit.sh
저는 다양한 공동작업을 하나의 기능으로 모아왔습니다.- 이 스크립트에는 상호작용 문제가 많이 있습니다.
- 이제 .tmux.conf
kit.sh
와 같은 tmux 단축키를 통해 재사용 하고 싶습니다.bind-key i "run-shell \"kit.sh\""
- 자동 입력 기능을 추가 할 계획입니다
tmux send-keys
.kit.sh
20231016 업데이트:
내 문제는 다음과 같이 해결되었습니다.
bind-key i "new-window \"/path/to/my/kit.sh\""
kit.sh에서는 사용자 입력을 대화형으로 읽을 수 있습니다.
답변1
tmux run-shell
하위 명령은 tty가 필요한 프로그램에는 적용되지 않습니다. 이는 read
대화형 모드[1]에서 실행할 때 실패하는 이유와 그 이유를 설명합니다.
tmux run-shell "echo start; read -p \"prompt:\" var; echo \${var}end"
실패하다.
짐작하셨겠지만, 한 가지 방법은 tmux send-keys
[2]를 사용하는 것입니다. split-window
[3]을 사용할 수도 있습니다 .
tmux split-window "read -p prompt: VAR; echo \$VAR; read -p \"press any key\""
tmux
버전 이상을 사용하는 경우 하위 명령 [2]을 3.2
사용할 수도 있습니다.display-popup
tmux display-popup "read -p prompt: VAR; echo \$VAR"
[0]https://github.com/tmux/tmux/issues/3187#issuecomment-1127079855
[1]https://www.gnu.org/software/bash/manual/bash.html#index-read
[2]https://github.com/tmux/tmux/issues/3187
[삼]https://github.com/tmux/tmux/issues/3617#issuecomment-1627569000