Ich versuche, die eingehende IP-Adresse meines SSH-Clients in der tmux-Statusleiste festzulegen, aber für mein ganzes Leben kann ich das nicht herausfinden. Dies ist meine aktuelle Einstellung in meiner .tmux.conf
set -g status-right '#[fg=white]#(echo $SSH_CONNECTION | awk '{print $1}')'
Was gibt?
command-line
unix
tmux
Josh D
quelle
quelle
echo $SSH_CLIENT|cut -d " " -f 1
? Oder um bei Ihrem Beispiel zu bleiben:echo $SSH_CONNECTION | awk "{print \$1}"
...status-right
ist, dass Sie versuchen, einfache Anführungszeichen in andere einfache Anführungszeichen zu setzen. Der Kommentar von STATUS_ACCESS_DENIED und meine Antwort sprechen dieses Problem an.Antworten:
Versuche dies. Mit der Bash-Parameter-Erweiterung können Sie mithilfe des% -Operators ein Suffix aus der Erweiterung einer Variablen entfernen. Ein einzelnes% -Zeichen entspricht dem kürzesten Suffix, %% dem längsten. Da
SSH_CONNECTION
es drei durch Leerzeichen getrennte Felder gibt, müssen Sie %% verwenden, um alle Felder außer dem ersten (der IP-Adresse) zu entfernen.Da der Wert von zuerst
status-right
verarbeitet wirdstrftime(3)
, müssen Sie die Prozentzeichen verdoppeln, dastrftime
%% durch ein Literal% ersetzt wird.quelle
#()
erben die "globale" Umgebung. Dies bedeutet, dass der angezeigte Wert von dem Zeitpunkt an stammt, an dem der Server gestartet wurde. Wenn das OP möchte, dass der vom letzten Client bereitgestellte Wert an die Sitzung angehängt wird, muss die Ausgabe von analysiert werdentmux show-env
. So etwas wieset -g status-right 'foo…#(tmux show-env|grep ^SSH_CONNECTION=|cut -d= -f2|cut -d" " -f1)…bar'
(leichter zu verstehen?) Oderset -g status-right 'foo…#(tmux show-env|sed -n "/^SSH_CONNECTION=/{s/[^=]*=//;s/ .*//;p;}")…bar'
(weniger Prozesse).