Я бы предложил указать PID соответствующего процесса с помощью $!
синтаксисом.
Этап 1: запустить процесс, но на этот раз с переменной, которая содержит произвольное значение PID:
sudo ssh blah@blah 80:localhost:80 & arbpid=$!
Этап 2: Если переменная arbpid
сохраняется только при создании туннеля, вы можете использовать ее для целевого убийства процесса в конце вашего скрипта:
kill $arbpid
Другими словами, то, что мы сделали здесь, это пометили ssh-туннель произвольной меткой (которая является переменной и ее значением) и использовали ее для целевого убийства.
Обратите внимание, что между командой и переменной стоит один амперсанд. Как и в случае с одиночными амперсандами после команд Unix, это сделано для того, чтобы команда перед амперсандом выполнялась в другом подпроцессе (фоновом), в то время как вторая команда (создание переменной в данном случае) будет выполняться в текущем процессе (на переднем плане).
Я нашел решение, во многом полагающееся на tmux. Поскольку tmux работает независимо от оболочки и превалирует даже после закрытия окон, можно подготовить сеанс tmux, а затем подключиться к нему. Вещь не выйдет мгновенно, так как команда прикрепления не вернется, если вы не выйдете из нее.
Это, а также тот факт, что вы можете назвать и искать сеанс, дает следующий Nautilus-Script:
#!/bin/bash
# nautilus script to start files in nvim under a tmux session
# place this script into ~/.local/share/nautilus/scripts/nvimOpen.sh
# presented without warranty by mike aka curvi
# nvim running in another session? -
# TODO tmux rename-session -t $whaever nvim
# Tmux session 'nvim' is running neovim always!
if tmux has-session -t nvim ; then
# test if it is open and split it
for selected_file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; do
tmux send-keys -t nvim Escape # change to normal mode
tmux send-keys -t nvim ";vsp $selected_file" Enter # open file in vsplit
done
else
# or start it up freshly!
tmux new-session -d -s nvim ;
tmux send-keys -t nvim "nvim -O $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" Enter
tmux send-keys -t nvim Escape # change to normal mode
fi
# after the tmux session is prepared - attach to it in gnome-terminal!
gnome-terminal -e "tmux attach-session -d -t nvim"
Бонус: поскольку я отправляю ключи, вместо того, чтобы вводить команды напрямую, они появляются в истории терминала, как и ожидалось!
Внимание: мой nvim / init.vim содержит переназначение ;
на :
, что означает, что для запуска нужно проверить отправленные ключи на «обычные» настройки vim / neovim!