Запуск tmux при входе в систему по ssh

numbers='901.32.02'
firstdigit="${numbers:0:1}"

printf 'The first digit is "%s"\n' "$firstdigit"

Результатом вышеизложенного является

The first digit is "9"

Расширение параметра ${numbers:0:1}в bashдает вам подстроку длины 1 от начала строки (смещение ноль ). Этоbash-специфическая замена параметра (также в некоторых других оболочках, но не в стандарте POSIX ).

В оболочке POSIX вы также можете

firstdigit=$( printf "%s\n" "$numbers" | cut -c 1 )

Это будет использовать cutдля возврата только первого символа.

Или, используя раскрытие стандартных параметров,

firstdigit="${numbers%${numbers#?}}"

Сначала используется ${numbers#?}для создания строки с первой цифрой , удаленной , затем эта строка удаляется с конца $numbers, используя ${numbers%suffix}(, где suffix— результат первое расширение ).


Вышеприведенное предполагает, что первый символ $numbersна самом деле является цифрой. Если это не так, вам придется сначала удалить цифры, отличные от -, из начала значения :

.
numbers=$( printf '%s\n' "$numbers" | sed 's/^[^0-9]*//' )

или,

numbers="${numbers#${numbers%%[0-9]*}}"

${numbers[0]}работало бы, если бы каждый символ был отдельным элементом в массиве numbers(и если бы первый символ был цифрой ). Поскольку numbersне является массивом, он эквивалентен просто $numbers.

1
17.11.2019, 11:05
1 ответ

Для автоматического запуска tmuxв~/.bash_profile(для интерактивных оболочек )или~/.bashrc(для интерактивных оболочек )используйте что-то вроде

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    session=mysession

    if tmux has-session -t "$session" 2>/dev/null; then
        exec tmux attach-session -t "$session"
    else
        exec tmux new-session -s "$session"
    fi
fi

Это заменит оболочку сеансом tmux, если оболочка запущена с помощью ssh, если только текущая оболочка уже не запущена внутри tmux.

В более новых версиях tmuxвы должны вместо этого использовать

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    exec tmux new-session -A -s mysession
fi

Вам следует сделать это после установки таких переменных, как TERMи LC_*(, если вы устанавливаете эти ), которые влияют на возможности терминала и локаль.

Помните, что sshдля работы tmuxтребуется псевдо-tty, поэтому вы должны соединиться сssh -t(или использовать RequestTTY forceв ~/.ssh/configдля соединения ).

5
27.01.2020, 23:29

Теги

Похожие вопросы