Я нашел решение, во многом полагающееся на 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!
Просто потому, что это возможно, вот подход find
+ bash
.
$ ls
a.ID a.value
$ find -type f -iname "*.ID" -exec bash -c 'base=$(basename -s ".ID" "$@");cat "$@" "$base".value > "$base".merged' sh "{}" \;
$ ls
a.ID a.merged a.value
$ cat a.merged
chr1_237301_237601 176 1
chr1_237601_237901 176 1
chr1_237901_238201 176 1
chr1_1_301 0 0
chr1_301_601 0 0
chr1_601_901 0 0
Вам не нужны две петли. Вам нужен одиночный цикл, через a
, b
, c
и т. Д. Примерно так:
for i in *.ID; do
b=${i%%.ID}
cat "$i" "$b".value >"$b".txt
done