Я новичок с Bash.
Я использую i3 и хотел создать простую программу поиска, которая поможет мне найти файл, открывая его с помощью fzf при закрытии окна терминала.
Я нашел скрипт в fzf do c, который позволяет мне открыть файл:
#!/bin/bash
IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0))
[[ -n "$files" ]] && xdg-open "${files[@]}"
С этого момента все в порядке, и если я запускаю этот скрипт с именем fo из мой терминал, он открывает любой файл, который я хочу.
Теперь, первая проблема, я хочу закрыть терминал windows после того, как он открывает файл. После некоторых исследований я обнаружил, что мне нужно использовать дизаун. Поэтому я попытался в своем терминале запустить команду, просто чтобы проверить, работает ли она в .png, выполнив
xdg-open myimage.png & disown && exit
И она работает.
Поэтому я предполагаю, что если я сделаю то же самое с моим скриптом он должен работать.
#!/bin/bash
IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0))
[[ -n "$files" ]] && xdg-open "${files[@]}" & disown && exit
Но когда я запускаю, программа открывает файл, но не закрывает терминал.
Я пытался exec foo.sh
чтобы запустить его, потому что я где-то видел, что когда я использую функцию выхода в скрипте, он выходит из скрипта, а не из терминала, и что каким-то образом exe c обходит это, но затем он выходит из терминала, но без открытия изображение!