Я пытаюсь выполнить следующее:
открыть gnome-терминал из сочетания клавиш, скажем Ctrl + Shift + E. Запустите команду в терминале. Для concrenetess команда gio open $(fzf). Команда интерактивна и запускает внешнюю программу (например, evince). После запуска внешней программы закройте терминал, не закрывая внешнюю программу.Команда, которую меня интересует для шага 2 выше, это gio open $(fzf): я выбираю файл с помощью нечеткого finder fzf, а затем команда gio open открывает этот файл с помощью программы по умолчанию gnome .
Я могу сделать три шага выше по одному:
открыть гном-терминал из сочетания клавиш, скажем Ctrl + Shift + E. Тогда Я набираю новый терминал opend для своей команды gio open $(fzf): если я выберу PDF-файл из fzf, он откроется evince с выбранным файлом. Запустите команду в терминале. Для concrenetess команда gio open $(fzf). Команда является интерактивной и запускает внешнюю программу (например, evince).и выполнение этих трех шагов вручную работает.
Моя цель - автоматизировать вышеизложенное. Он должен работать следующим образом. Когда я набираю сочетание клавиш Ctrl + Shit + E (или любой другой), должен открываться gnome-терминал, и должна выполняться команда gio open $(fzf). Как только выполняется интерактивная команда (которая открывает внешнюю программу, такую как evince), терминал должен закрываться автоматически, не закрывая evince.
Моя цель - автоматизировать выше. .
Добавление сочетания клавиш с помощью команды gnome-terminal -- bash -c "gio open $(fzf)" не работает. Нажатие комбинации клавиш ничего не делает. Если я добавлю команду gio open $(fzf)$ в конец моего .bashrc, комбинация клавиш с командой gnome-terminal открывает терминал и команда запускается. Как только я выберу файл pdf, evince откроется с выбранным файлом (да !!!). Но тогда, если я нажму Ctrl + D, терминал закроется и, следовательно, появится (возможно, потому что evince - это подпроцесс?). Если я добавлю команду gio open $(fzf)$ && exit в конец моего .bashrc, комбинация клавиш с командой gnome-terminal откроет терминал, и команда будет запущена, но как только я выберу файл, терминал закроется без открытия evince ( evince, возможно, началось и сразу же закрылось, я не могу сказать).Обратите внимание, что игра с .bashrc была в основном для целей тестирования, я бы хотел избежать загрязнения моего .bashrc.
Да, конечно, это подпроцесс, и вы должны запустить этот процесс как " отдельностоящий». После этого вы можете завершить основной процесс (в вашем случае - терминал).
Вот подробный ответ о том, как запускать отдельные процессы.
https://superuser.com/questions/178587 / how-do-i-detach-a-process-from-terminal-whole
В качестве другого способа вы можете использовать следующий ярлык:
bash -c "some_command" > /dev/null &2>&1
В этом случае окно терминала не будет повышаться вообще, и вам не нужно ничего добавлять в ваш .bashrc-файл.
Да, конечно, это подпроцесс, и вы должны запустить этот процесс как " отдельностоящий». После этого вы можете завершить основной процесс (в вашем случае - терминал).
Вот подробный ответ о том, как запускать отдельные процессы.
https://superuser.com/questions/178587 / how-do-i-detach-a-process-from-terminal-whole
В качестве другого способа вы можете использовать следующий ярлык:
bash -c "some_command" > /dev/null &2>&1
В этом случае окно терминала не будет повышаться вообще, и вам не нужно ничего добавлять в ваш .bashrc-файл.