Вопрос или проблема
Когда мы хотим открыть приложение или файл из терминала, мы набираем, например,
okular file.dvi
Это открывает приложение, но также показывает его статус. Мы не можем закрыть терминал, потому что это завершает процесс. К сожалению, если вы пытаетесь, например, создать файл LaTeX, вам понадобится одна вкладка для текстового редактора, одна для dvi-файла и так далее. И если вы пытаетесь открыть все окна из терминала, можете забыть об этом. Я стараюсь использовать терминал как можно больше, и хотя у меня есть Yakuake, всё равно неудобно иметь так много вкладок и разбираться, в каких из них запущено приложение, которое я закрыл, и так далее.
Итак, есть ли способ открыть приложение/файл из терминала так, чтобы статус не отображался, и сразу же вернулся бы приглашение, чтобы можно было открыть больше приложений?
open file.dvi
Начиная с Ubuntu 22.04, open
является ссылкой на xdg-open
.
xdg-open
открывает любой файл с его приложением по умолчанию. В качестве бонуса, вы можете закрыть терминал, не убивая приложение.
Для старых версий Ubuntu используйте xdg-open
напрямую:
xdg-open file.dvi
Или добавьте алиас в .bashrc
:
alias open='xdg-open'
okular file.dvi &
просто добавьте &
, чтобы ваша команда выполнялась как отдельный процесс.
okular file.dvi &> /dev/null &
было бы немного лучше. Таким образом, программа не будет писать в терминал.
Если использовать просто okular file.dvi &
, программа все равно будет выводить сообщения в терминал, что часто происходит в середине вашей работы.
С evince file.pdf &
, закрытие терминала все равно завершит процесс, поскольку он все еще является дочерним процессом терминала и не имеет независимости от него; nohup evince file.pdf &
позволит вам закрыть терминал, не закрывая программу, так как nohup означает, что любые сигналы завершения процесса (hangup) будут игнорированы. Вы также можете отключить процесс аналогичным образом, подробнее можно прочитать здесь.
Ответ или решение
Открытие файлов через терминал в Linux системах может вызывать ряд неудобств, особенно если вы хотите освободить терминал для других команд или не хотите видеть вывод приложения в консоли. Вот несколько рекомендаций и способов для более эффективного управления GUI-приложениями из терминала.
Основные Способы
- Использование
xdg-open
для открытия файлов:
Начиная с Ubuntu 22.04, команда open
является ссылкой на xdg-open
, что позволяет открывать любой файл с помощью приложения по умолчанию. Это оптимальное решение, поскольку, закрыв терминал, вы не завершите работу приложения.
xdg-open file.dvi
Если вы используете старые версии Ubuntu, добавьте в ваш .bashrc
следующий алиас:
alias open='xdg-open'
После этого перезапустите терминал, и вы сможете использовать команду open
для тех же целей.
- Запуск приложения в фоновом режиме:
При использовании команды с добавлением символа &
, приложение запускается в фоновом режиме, что позволяет вам сразу же начать вводить другие команды в терминале.
okular file.dvi &
- Отключение вывода приложения:
Чтобы избежать нежелательного вывода в консоль, перенаправьте его в null
:
okular file.dvi &> /dev/null &
Управление процессами и предотвращение их завершения
- Использование
nohup
:
Команда nohup
предотвращает завершение приложения при закрытии терминала. Это особенно полезно, если вы хотите сохранить запущенные процессы независимо от сессии терминала.
nohup evince file.pdf &
- Команда
disown
:
Вы также можете использовать команду disown
для уже запущенных процессов, чтобы они не завершались при закрытии терминала.
Заключение
Используя эти методы, вы сможете эффективно управлять вашим рабочим процессом, сведя к минимуму количество открытых вкладок в терминале и избегая случайного завершения программ. Важно помнить, что каждому способу присущи свои особенности, и в зависимости от сценария использования нужно выбрать наиболее подходящий.
SEO-оптимизация
Эти методы и подходы помогут не только увеличить продуктивность, но и повысить вашу эффективность при работе с Linux, что делает их важной частью профессионального использования командной строки. Используйте их, чтобы упростить свою работу и сосредоточиться на более значимых задачах, не отвлекаясь на управление процессами через терминал.