![tmux.conf의 쉘 명령에 tmux 변수 전달](https://linux55.com/image/62382/tmux.conf%EC%9D%98%20%EC%89%98%20%EB%AA%85%EB%A0%B9%EC%97%90%20tmux%20%EB%B3%80%EC%88%98%20%EC%A0%84%EB%8B%AC.png)
tmux의 왼쪽 하단 상태 섹션을 편집하려고 합니다. 보여주고 싶다
세션: #{session_name}
이 설정을 사용하여 이 문자열의 현재 최대 길이를 20으로 설정합니다.
상태 왼쪽 길이 20
이것은 잘 작동하지만 20개가 넘는 세션 이름("Session:" 포함)을 입력하자마자 tmux가 텍스트를 자릅니다. 20자를 초과하는 문자열이 다음과 같이 표시되도록 전체 문자열을 처리하고 싶습니다.
세션: mysessio...
즉. 문자열은 20자로 잘리고 마지막 3자는 점으로 대체됩니다. 내가 원하는 것을 수행하는 bash 스크립트가 실행 중입니다.
string="verylongstringfortesting"
lengthLimit=10
if [ ${#string} -gt $lengthLimit ]
then
echo ${string:0:$(($lengthLimit-3))}"..."
fi
이것을 tmux.conf에 어떻게 포함합니까? #(shell-command)를 알고 있고 #(echo #{session_name})을 시도했지만 세션 이름을 반환하지 않는 것 같습니다.
답변1
해결책을 찾는 데 도움이 되는 몇 가지 정보를 수집하세요.
#(echo #{session_name})
아무것도 출력하지 않고#(echo \"#{session_name}\")
세션 이름을 표시합니다. 유망해 보이지만...인용할 때 작동하는 이유는 echo 명령이 텍스트를 문자 그대로 받아들이고
#{session_name}
, 따옴표 없이는 쉘이 이를 주석으로 처리하고, 따옴표를 사용하면 그대로 tmux에 에코하기 때문입니다. 명령 종료 후 tmux 확장 시퀀스이는 쉘에서 확장된 문자열을 조작할 수 없음을 의미합니다.
대체 방법
세션 이름을 7자로 제한하는 등의 제한을 설정하려고 하면
#7S
제한은 항상 적용되지만 테스트할 수 없으므로#7...
필요하지 않더라도 줄임표가 항상 표시되므로 이 기능은 작동하지 않습니다. 일하다tmux 명령을 통해 직접 액세스를 시도하면 합리적인 결과가 나오지 않는 것 같습니다. 예를 들어
tmux list-sessions -F "#{client_session}"
아무 것도 표시되지 않고tmux list-clients -F "#{client_session}"
각 클라이언트에 대한 세션이 표시되지만 클라이언트가 여러 개인 경우 어떤 클라이언트가 명령을 실행하고 있는지 알 수 있는 확실한 방법이 없습니다.
아직 소스 코드를 파헤치지는 않았지만 tmux가 어떤 세션에 대한 것인지 알기 전에 명령을 실행한 것 같습니다.
이 기능을 얻는 가장 좋은 방법은 아마도 소스 코드를 수정하는 것입니다.
버전 1.8은 status.c의 79행 주위의 길이를 계산하고 status_redraw_get_left(
322행 주위의 길이를 기록합니다.status_redraw(
답변2
이 문제는 tmux Git HEAD에서 수정되었습니다.https://github.com/tmux/tmux/issues/11