4 эффективных способа запуска приложений из терминала

4 эффективных способа запуска приложений из терминала


Вы, вероятно, когда-то запускали приложение из терминала, но заметили ли вы, что он остается занятым до тех пор, пока вы не закроете приложение? Это может быть довольно раздражающим. Тем не менее, иногда полезно запускать приложения таким образом — я объясняю, как я делаю это эффективно.

Некоторые люди используют меню, другие используют загрузчики — я, например, запускаю все приложения, такие как Firefox, из терминала. Эта привычка восходит к моим самым первым дням использования Linux (около 15 лет назад), когда я не знал, как создавать ярлыки. Со временем я привык запускать приложения таким образом, и поскольку я всегда держу открытым окно терминала, это просто имеет смысл. Плюс, я слишком ленив, чтобы настраивать и поддерживать конфигурацию загрузчика. С терминалом я могу искать свои приложения нечетким образом, как с загрузчиком, но с дополнительным преимуществом редактирования команд перед их запуском.

Сначала поймите Nohup и фоновый оператор

Когда вы открываете приложение из терминала, а затем закрываете терминал, приложение часто тоже закрывается — что, вероятно, вам не нужно. В Linux, когда одно приложение запускает другое, оно создает дочерний процесс, так что оригинальное приложение становится родительским.

Когда вы убиваете родительский процесс, все его дочерние процессы также обычно завершаются. Вы можете попробовать сами: введите следующую команду в терминале, дождитесь ее запуска, а затем закройте окно терминала.

firefox     

Чтобы поддерживать дочерние процессы активными после закрытия терминала, мы используем проверенный инструмент под названием nohup.

nohup

Команда nohup заставляет процесс игнорировать сигнал об отключении (SIGHUP), позволяя ему продолжать работу даже после того, как пользователь выходит из системы или сессия терминала завершается.

Теперь, когда у нас есть способ поддерживать наш процесс запущенным после закрытия терминала, стоит отметить, что nohup автоматически записывает вывод в файл nohup.out в текущем каталоге. Если вы не хотите, чтобы эти файлы были разбросаны по вашей файловой системе, вам нужно обратить внимание на это поведение. Вы можете либо отбросить весь вывод, либо перенаправить его в конкретный файл для ведения журнала.

Чтобы игнорировать все выводы, просто перенаправьте все на /dev/null, который действует как черная дыра для ненужных данных:

nohup firefox &>/dev/null     

Теперь, если вы закроете терминал, Firefox будет продолжать работать. Однако эта настройка отправляет все логи в пустоту. В качестве альтернативы вы можете перенаправить вывод в файл журнала:

nohup firefox &>/tmp/firefox.log     

Теперь, если есть проблема с Firefox, вы можете прочитать файл журнала.

Фоновый оператор

Когда вы запускаете nohup с Firefox, он захватывает ваш командный интерфейс, что означает, что вы не можете выполнять другие команды. Это не идеально, если вы хотите использовать тот же терминал для других задач. Вот тут-то и пригодится оператор фона.

Оператор фона — это просто амперсанд, помещенный в конце команды, который позволяет вам продолжать использовать терминал, пока приложение работает. Попробуйте:

firefox &     

Если вы закроете свой терминал сейчас, вы заметите, что это также закроет приложение. Это происходит потому, что, хотя фоновый оператор помещает ваше приложение в фоновый режим, оно все равно подчиняется сигналу SIGHUP — поэтому закрытие терминала останавливает процесс. Вот почему мы также используем nohup.

Одной из полезных функций фонового оператора является возможность вернуть процесс в режим активного окна. После того, как вы отправите Firefox в фон, введите fg, чтобы вернуть его в режим активного окна.

Использование nohup с оператором фона

Используя nohup с оператором фоновой работы, ваше приложение полностью работает в фоновом режиме, позволяя вам продолжать работать в терминале или даже закрыть его — ваш процесс будет продолжаться без перерыва.

nohup firefox &>/tmp/firefox.log &

Используйте мнемонические псевдонимы

Псевдоним оболочки работает как прозвище для команды. Например, вы можете установить букву f для запуска Firefox, так что вам нужно просто ввести f в терминале, чтобы открыть его. Если это ново для вас, вам стоит прочитать нашу статью о том, как создавать псевдонимы оболочки.

В мире настройки оболочки обычно используют мнемонические алиасы — короткие, запоминающиеся комбинации букв, которые представляют собой более длинные команды. Например, вы можете создать ярлыки для Firefox, которые запускают браузер с определёнными аргументами:

alias ffaa="firefox about:about" alias ffac="firefox about:config" alias ffnt="firefox --new-tab" alias ffp="firefox --profile" alias ffsm="firefox --safe-mode"     

Упорядочив псевдонимы по алфавиту, легче увидеть, какие псевдонимы уже были использованы.

Вы можете использовать nohup и оператор фонового выполнения для запуска Firefox.

Используйте нечеткую историю оболочки

Самая полезная утилита оболочки, которую вы когда-либо установите, — это инструмент нечеткого поиска истории. Atuin — это приложение, которое делает именно это, и оно работает везде. Я лично использую zsh-fzf-history-search, который является плагином для Zsh, но оба они почти идентичны.

Если вы тратите время на трудный набор длинной команды, имеет смысл иметь быстрый способ выполнить ее снова. Я часто трачу минуту или две, чтобы составить сложную команду, а затем использую нечеткую историю оболочки, чтобы запустить ее сотни раз в течение месяцев или даже лет.

Если вы возьмете только одну вещь: воспользуйтесь плагином или приложением для нечеткой истории оболочки. Я рекомендую Atuin. Если вам интересно, у нас есть введение в Atuin.

Плоский файл команд

Идея за историей оболочки Fuzzy проста — она собирает вашу историю оболочки, удаляет несколько ненужных деталей и отправляет результат программе под названием FZF. Мы сделаем что-то подобное, за исключением того, что будем использовать FZF для выбора команд из обычного текстового файла, чтобы мы могли их выполнять.

FZF разработан для быстрого выбора элементов из длинных списков. Это незаменимый инструмент, который является частью любого продвинутого набора инструментов для командной строки, и если вы хотите улучшить свои навыки работы в терминале, я настоятельно рекомендую научиться им пользоваться. FZF легко освоить и он включает множество продвинутых функций для более опытных пользователей.

Следующий пример является самым простым, который демонстрирует, как FZF можно использовать для поиска среди нескольких строк текста:

echo "foonbar" | fzf     

Когда вы начинаете вводить текст, FZF динамически сужает список, обновляя варианты в реальном времени. Как только вы делаете выбор, FZF выводит вашу выбранную запись. Большинство пользователей передают этот выбор другой команде для дальнейшей обработки. Например, с помощью echo "foo\nbar" | fzf | tr '[:lower:]' '[:upper:]', ваше выбранное слово преобразуется в верхний регистр.

Теперь мы хотим создать и искать по своему собственному списку команд. Сначала создайте файл с командами в нем:

echo "ls -alndir" > ~/.commands     

Затем добавьте следующую функцию в ваш файл .bashrc. Если вы не знаете, что это такое, у нас есть статья, которая объясняет, что такое файл .bashrc:

fe() {   eval "$(fzf <"${HOME}/.commands" || return)" }     

Перезагрузите вашу оболочку с помощью source ~/.bashrc и затем выполните fe (неявное выполнение). Когда вы выбираете команду, она выполняется автоматически. Вы можете добавлять любые команды в текстовый файл "~/.commands".

Если вы используете Zsh, у вас есть возможность редактировать команды перед их выполнением. В вашем файле .zshrc добавьте:

fe() {   print -z "$(fzf <"${HOME}/.commands" || return)" }     

Теперь, когда вы это запустите, это сначала запомнит вашу командную строку, и вы можете редактировать её или просто нажать клавишу Enter, чтобы выполнить.


Теперь, когда вы знаете, как полностью отправлять команды в фоновый режим, вы можете безопасно запускать приложения из терминала, не загромождая свое рабочее пространство несколькими окнами терминала. Вы можете добавить эти команды — вместе с nohup и оператором фона — в свой файл команд или историю оболочки, чтобы быстро запускать приложения. Для команд со сложными параметрами алиасы полезны.

Я использую все эти принципы, чтобы быстро запускать приложения из терминала. Хотя специализированные загрузчики являются гораздо лучшим решением, иногда вы просто хотите запустить что-то напрямую в терминале для удобства. Теперь это проще, чем когда-либо.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *