![주어진 경로에 열린 창이 없는 경우에만 tmux에서 새 창을 열고, 그렇지 않으면 추가합니다.](https://linux55.com/image/229929/%EC%A3%BC%EC%96%B4%EC%A7%84%20%EA%B2%BD%EB%A1%9C%EC%97%90%20%EC%97%B4%EB%A6%B0%20%EC%B0%BD%EC%9D%B4%20%EC%97%86%EB%8A%94%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20tmux%EC%97%90%EC%84%9C%20%EC%83%88%20%EC%B0%BD%EC%9D%84%20%EC%97%B4%EA%B3%A0%2C%20%EA%B7%B8%EB%A0%87%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B4%20%EC%B6%94%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
현재 내 터미널( alacritty
)은 시작 시 실행되어 tmux new -A -s 0
새 세션을 시작 0
하거나 이미 존재하는 경우 세션에 연결됩니다. 한 가지 문제는 파일 관리자(Dolphin)를 사용하여 디렉토리를 열 때가 있다는 것입니다. 이 경우에는 원하는 디렉터리가 아닌 이전 세션에 다시 연결합니다.
내가 달성하고 싶은 것은 0
해당 세션에 그러한 창이 없으면 원하는 경로를 작업 디렉터리로 사용하여 세션에서 새 창을 여는 것입니다. 아니면 기존 창으로 전환하고 싶습니다.
이것이 가능하지 않다면 매번 새 창을 만들어 드리겠습니다. 현재 활성 창에서 실행 중인 프로세스가 있는지 감지하고 그렇지 않은 경우 cd
스위치 디렉토리를 사용합니까?
누구든지 이를 달성하는 방법에 대한 아이디어가 있다면 감사하겠습니다.
답변1
@KamilMaciorowski가 지적했듯이 그들은 매우 유사한 문제를 해결했습니다.여기. 내 필요에 맞게 스크립트를 일부 수정했습니다. 즉, "사용 중" 창을 무시하고 싶습니다. 즉, #{pane_current_command}
알려진 쉘인지 확인하는 일부 프로그램을 실행하고 싶습니다. 또한 인수를 전달하지 않고 현재 디렉토리를 열려고 시도합니다. 왜냐하면 그것이 내가 얻는 것이기 때문입니다 alacritty
.
그렇지 않으면 스크립트를 다시 작성한 것입니다. 내가 사용한 것은 다음과 같습니다.
#!/usr/bin/env bash
target_path="$(pwd -P)"
tmux list-panes -s -F '#{window_id} #{pane_id} #{pane_current_path} #{pane_current_command}' \
| while IFS=' ' read -r window pane path cmd; do
[[ "$path" = "$target_path" && " fish bash zsh " =~ " $cmd " ]] \
&& tmux select-pane -t "$pane" && tmux select-window -t "$window" && exit 0
done || tmux new-window -c "$target_path"
tmux attach -d