쉘로 바꿨 fish
는데 아주 만족스럽습니다. 부울 값을 처리하는 방법을 이해하지 못합니다. config.fish
실행되는 tmux
코드를 작성했습니다 ssh
(참조:SSH를 통해 원격 서버에 연결할 때 Fish Shell에서 tmux를 자동으로 시작하는 방법) 연결이 가능하지만 코드의 가독성이 만족스럽지 않고 쉘에 대해 더 알고 싶습니다 fish
(튜토리얼을 읽고 참조를 찾아봤습니다). 나는 코드가 다음과 같기를 원합니다. (구문이 올바르지 않다는 것을 알고 있습니다. 단지 아이디어를 보여주고 싶습니다.)
set PPID (ps --pid %self -o ppid --no-headers)
if ps --pid $PPID | grep ssh
set attached (tmux has-session -t remote; and tmux attach-session -t remote)
if not attached
set created (tmux new-session -s remote; and kill %self)
end
if !\(test attached -o created\)
echo "tmux failed to start; using plain fish shell"
end
end
나는 $status
es를 저장하고 test
정수와 비교할 수 있다는 것을 알고 있지만 보기 흉하고 읽기가 더 어렵다고 생각합니다. 따라서 문제는 es를 재사용하고 $status
and에서 사용하는 것입니다.if
test
어떻게 하면 그러한 목표를 달성할 수 있습니까?
답변1
if/else 체인으로 구성할 수 있습니다. (불편하긴 하지만) 다음과 같은 조건처럼 복합문으로 시작/끝을 사용하는 것이 가능합니다:
if begin ; tmux has-session -t remote; and tmux attach-session -t remote; end
# We're attached!
else if begin; tmux new-session -s remote; and kill %self; end
# We created a new session
else
echo "tmux failed to start; using plain fish shell"
end
더 나은 스타일은 부울 수정자입니다. 대괄호 대신 시작/끝:
begin
tmux has-session -t remote
and tmux attach-session -t remote
end
or begin
tmux new-session -s remote
and kill %self
end
or echo "tmux failed to start; using plain fish shell"
(첫 번째 시작/끝은 꼭 필요한 것은 아니지만 제 생각에는 명확성이 향상됩니다.)
함수 분해는 세 번째 가능성입니다.
function tmux_attach
tmux has-session -t remote
and tmux attach-session -t remote
end
function tmux_new_session
tmux new-session -s remote
and kill %self
end
tmux_attach
or tmux_new_session
or echo "tmux failed to start; using plain fish shell"