Лучший опыт Linux с оболочкой Fish

Ушли те времена, когда приходилось долго разбираться с криптическими командами и жестким синтаксисом. Зачем тратить больше времени на расшифровку страниц справки, чем на написание скриптов или навигацию по системе? Обратитесь к мощи и простоте оболочки fish, вашему билету к более плавному и интуитивному опыту использования Linux.

Научитесь преобразовывать свой путь в мир Linux с помощью оболочки fish, от ее удобного интерфейса до обширных возможностей настройки.

Попрощайтесь с запутанными рабочими процессами и обретите новую уверенность в своих навыках работы в Linux!

Необходимые условия

Прежде чем начать, удостоверьтесь, что у вас есть следующие основные компоненты, чтобы следовать этому руководству:

  • Оболочка Fish установлена на вашем компьютере – В этом учебнике используется fish-3.7.0, последняя версия на момент написания.
  • A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.

Исследование проверок команд, автозаполнения и предложений

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

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

Чтобы исследовать эту функцию, которая позволяет вам идентифицировать и исправлять ошибки еще до их выполнения, выполните следующие действия:

1. Откройте терминал и выполните команду fish ниже, чтобы получить доступ к оболочке fish.

fish
Accessing the fish shell

2. Затем введите первую букву команды ls, чтобы попытаться перечислить все файлы в текущем каталоге.

Как показано ниже, буква ‘l‘ становится красной, так как оболочка fish не распознает её как допустимую команду. Этот мгновенный визуальный сигнал указывает на то, что что-то не так с командой.

Но не беспокойтесь! Благодаря автопредложению, буква ‘s’ появляется приглушенной, намекая на правильную команду.

Testing command validation

3. Теперь нажмите стрелку вправо или клавиши Ctrl+F, чтобы принять автопредложенную команду ls.

Обратите внимание, что буква ‘l’ изменилась с красного на синий, потому что оболочка fish теперь распознает вашу команду как ls.

Accepting the auto-suggested command

Определение псевдонимов команд в файле конфигурации Fish

Помимо обратной связи в реальном времени и контекстно-ориентированных предложений, fish предлагает мощный и гибкий способ настройки вашей среды командной строки – файл конфигурации fish. В отличие от других оболочек, которые могут использовать несколько файлов конфигурации, fish в основном использует один файл, называемый config.fish, расположенный в каталоге ~/.config/fish/.

Чтобы увидеть, как конфигурации влияют на оболочку fish, начнем с определения псевдонимов команд следующим образом:

1. Откройте файл конфигурации fish с помощью предпочитаемого вами кодового или текстового редактора, такого как nano или vim, но в этом руководстве используется первый.

nano ~/.config/fish/config.fish

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

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

Opening the fish configuration file

2. Внутри блока if добавьте следующую функцию, сохраните изменения и закройте редактор.

На этом этапе вы создаете пользовательские настройки в файле конфигурации fish, и эта функция определяет псевдоним (c) для команды clear.

# Эта функция создает псевдоним для команды "clear"
function c
    clear
end

? Примечание: Каждая определенная функция имеет соответствующий файл .fish в каталоге ~/.config/fish/functions/ (т.е. c.fish).

Creating an alias for the clear command

3. Выполните следующую команду, чтобы использовать файл конфигурации (config.fish).

Эта команда не выводит ничего в терминал, но применяет изменения конфигурации к вашей текущей сессии.

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

source ~/.config/fish/config.fish

4. Затем введите c в приглашении, чтобы проверить ваши изменения.

Обратите внимание, что буква ‘c‘ становится синей, поскольку оболочка fish распознает ее как команду clear. Это поведение указывает на успешное изменение конфигурации fish.

Заметили, как буква ‘c’ становится синей? Это изменение происходит потому, что оболочка fish знает, что буква ‘c’ является командой clear. Это поведение сигнализирует об успешном обновлении вашей конфигурации fish.

Теперь почему бы не настроить еще несколько псевдонимов для тех надежных команд, к которым вы постоянно возвращаетесь, когда настроение подходит?

Verifying the newly created alias for the clear command works

Настройка приглашения оболочки Fish

Помимо настройки псевдонимов для более гладкой работы, оболочка fish предоставляет вам возможность настраивать ваше приглашение, добавляя персональный штрих к вашей оболочке. Вместо длинных путей к каталогам наслаждайтесь более чистым, организованным приглашением.

Чтобы настроить приглашение оболочки fish, выполните следующие действия:

1. Откройте файл конфигурации fish (~/.config/fish/config.fish) и добавьте следующую функцию.

Эта функция настраивает ваше приглашение оболочки fish для отображения (echo) знака доллара ($) за которым следует пробел.

# Настройка приглашения fish
function fish_prompt
    echo '$ '
end
Customizing the fish shell prompt

2. Сохраните изменения в файле конфигурации fish и закройте редактор.

3. Теперь source файл конфигурации, чтобы применить ваши изменения.

source ~/.config/fish/config.fish

После источника вы увидите изменения приглашения, как на следующем снимке экрана.

Sourcing the fish configuration file to apply the shell prompt changes

Сохранение изменений между сеансами

Вы видели, как создавать настройки в оболочке fish. Но одно важное замечание: эти настройки доступны только в текущем сеансе.

Что происходит, когда вы закрываете текущий сеанс и открываете новый? Исчезновение! Все ваши тщательно разработанные конфигурации пропадают — обидно, верно? Но не бойтесь, есть надежда. Позвольте команде funcsave спасти ваши конфигурации от забвения!

Чтобы сохранить ваши конфигурации между сеансами, выполните следующее:

1. Откройте файл конфигурации fish и добавьте команду funcsave для каждой function вместе с именем функции, как показано ниже:

Appending the funcsave command to persist functions across sessions

2. Сохраните изменения и закройте редактор и терминал.

3. Откройте новый сеанс терминала и выполните команду fish ниже, чтобы получить доступ к оболочке fish.

fish

Если команды funcsave, которые вы добавили, работают в сохранении ваших конфигураций, вы увидите сообщения, подобные приведенным ниже.

Accessing the fish shell to verify the configurations persist across sessions

Установка и сохранение переменных среды

Хотя сохранение функций замечательно, управление глобально доступными значениями повышает уровень оболочки командной строки, устанавливая переменные среды. В отличие от традиционных оболочек, полагающихся на экспорт, fish использует set с опциями для управления областью видимости переменной и поведением экспорта.

Но есть подводный камень, понимаете? Ага, вы угадали! Переменная, установленная с помощью команды set в терминале, доступна только в текущем сеансе.

Чтобы установить и сохранить переменные среды, флаг -gx пригодится следующим образом:

1. Добавьте следующую команду для set переменной MY_VARIABLE в файл конфигурации fish в качестве глобальной. Ниже приведен способ работы флага -gx:

  • -g – Делает переменную глобальной, доступной из любой области видимости в рамках той же среды пользователя.
  • -x – Экспортирует переменную, делая ее доступной для внешних команд или программ, запущенных из fish.
# Установите MY_VARIABLE глобально и экспортируйте ее
set -gx MY_VARIABLE HelloWorld
Setting an environment variable in the fish configuration file

2. Сохраните изменения конфигурации, затем закройте редактор и терминал.

3. Откройте новый сеанс терминала, перейдите в оболочку fish и выполните следующую команду, чтобы подтвердить изменения.

echo $MY_VARIABLE

Результат ниже подтверждает, что изменения вступили в силу на протяжении нескольких сессий.

Verifying variable persistence

4. После подтверждения добавьте следующую команду set в файл конфигурации fish, сохраните изменения и закройте редактор.

Эта команда делает переменную MY_UNIVERSAL_VARIABLE глобальной для всех сессий, даже после перезагрузок.

# Установить MY_UNIVERSAL_VARIABLE как универсальную и экспортировать
set -Ux MY_UNIVERSAL_VARIABLE universal

Посмотрите, как работает флаг -Ux ниже:

  • -U – Делает переменную MY_UNIVERSAL_VARIABLE универсальной, обеспечивая ее совместное использование во всех текущих и будущих сеансах терминала, включая сеансы других пользователей.
  • -x – Переменная экспортируется в дочерние процессы, что делает ее доступной для любых команд или скриптов, вызванных из текущего сеанса.
Setting a universal environment variable in the fish configuration file

5. Откройте новый сеанс терминала, перейдите в оболочку fish и выполните нижеследующую команду echo, чтобы проверить изменения.

echo $MY_UNIVERSAL_VARIABLE

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

Verifying universal variable persistence

? Помимо файла конфигурации fish, используйте fish_config в терминале для быстрой и автоматической настройки. Эта команда запускает веб-интерфейс в вашем браузере, позволяя выполнять быстрые настройки, настройки параметров и управление функциями и переменными в удобной для пользователя среде.

Управление плагинами Fish с помощью менеджера пакетов Fisher

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

Один хороший пример – Fisher, менеджер пакетов, разработанный для оболочки fish. Этот плагин создан с учетом производительности и простоты, и он легковесен.

? Fisher легковесен в управлении плагинами оболочки fish и не является непосредственно сравнимым с менеджерами пакетов на уровне системы. Это различие явно проявляется в отношении размера и сложности управляемых им пакетов.

Чтобы управлять плагинами fish, сначала необходимо установить Fisher, следуя приведенным ниже шагам:

Откройте ваш терминал, получите доступ к оболочке fish и выполните следующую команду, чтобы загрузить и установить Fisher. Эта команда получает скрипт установки Fisher и передает его на вход команде source, которая выполняет скрипт в текущей сессии оболочки fish через curl.

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

После установки вы увидите следующий вывод.

Installing the Fisher package manager

Теперь выполните команду fisher ниже, чтобы подтвердить установку, просмотрев текущую установленную версию Fisher на вашей системе через --version.

fisher --version
Confirming the installed Fisher version

Установка плагина GitNow

Теперь, когда у вас запущен Fisher, что дальше? А как насчет укрепления вашей оболочки Fish с помощью некоторых крутых плагинов? GitNow, например, является набором инструментов, который усиливает ваш рабочий процесс с Git в оболочке fish – заманчиво.

GitNow предлагает оптимизированные команды для рутинных задач Git, увеличивая продуктивность и упрощая вашу рабочую командную строку Git.

Чтобы установить GitNow, используя менеджер пакетов Fisher, выполните следующие шаги:

1. В вашей оболочке fish выполните следующую команду fisher для установки плагина GitNow (joseluisq/gitnow).

Эта команда сообщает Fisher’у извлечь и интегрировать GitNow в вашу конфигурацию fish, сделав его набор сокращений Git немедленно доступным.

fisher install joseluisq/gitnow
Installing the GitNow plugin

2. После установки запустите нижеприведенную команду gitnow, чтобы подтвердить правильную установку GitNow.

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

gitnow --version
Verifying the GitNow installation

3. Наконец, выполните эту команду fisher для списка всех плагинов, управляемых Fisher’ом, включая GitNow.

fisher list

Ниже вы можете увидеть плагин GitNow и сам плагин Fisher.

Viewing all plugins managed by Fisher

Удаление плагинов оболочки Fish

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

Чтобы удалить плагин, управляемый Fisher, в вашем оболочке fish, выполните следующие шаги:

1. Выполните следующую команду, чтобы список всех текущих установленных плагинов.

fisher list

Выберите из списка тот, который вы хотите удалить.

Viewing all installed plugins

2. Затем запустите команду fisher remove ниже, за которой следует имя плагина (joseluisq/gitnow) для удаления.

fisher remove joseluisq/gitnow

Эта команда сообщает Fisher удалить плагин GitNow из вашей среды оболочки fish.

Removing the GitNow plugin

3. Теперь выполните ту же команду fisher list, чтобы подтвердить, что плагин GitNow успешно удален.

fisher list

Плагин GitNow больше не должен появляться в списке установленных плагинов.

Verifying the GitNow plugin removal

Удаление менеджера пакетов Fisher

Как вы видели, менеджер пакетов Fisher действительно удобен. Но удаление его может быть вашим лучшим выбором, если вы обнаружите, что несчастны или испытываете проблемы с Fisher.

Чтобы полностью удалить Fisher из вашей оболочки fish, выполните следующее:

Выполните нижеприведенную команду, чтобы список и удалить fisher и все установленные плагины через Fisher.

fisher list | fisher remove
Listing and removing all plugins

В альтернативе выполните следующую команду, чтобы удалить только fisher самого себя.

fisher remove jorgebucaran/fisher
Removing Fisher only

Исследование менеджера пакетов Oh My Fish

Когда вы уже крутите с Fisher, зачем рассматривать Oh My Fish? Вы уже испытали мощь плагинов для оболочки fish с помощью Fisher. Но вот подвох: этот фреймворк открывает новую область настроек для оболочки fish, предлагая обширную коллекцию тем и плагинов.

Чтобы узнать, что Oh My Fish готовит для вас, сначала установите этот менеджер пакетов следующим образом:

Выполните следующую команду curl, чтобы загрузить и запустить скрипт установки Oh My Fish (https://get.oh-my.fish) в оболочке fish.

curl -L https://get.oh-my.fish | fish

Если успешно, вы получите вывод, аналогичный следующему.

Installing the Oh My Fish package manager

После установки выполните следующую команду omf, чтобы проверить установленную версию Oh My Fish.

omf --version

A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Verifying the Oh My Fish installation

Настройка окружения с помощью тем Oh My Fish

Вы устали от однообразного вида оболочки fish? Почему бы не добавить немного индивидуальности? Придайте своему окружению оболочки fish новый облик с помощью свежих персонализированных тем от Oh My Fish.

Чтобы настроить свое окружение оболочки fish, вам необходимо установить темы с помощью следующих шагов:

1. Откройте файл конфигурации оболочки fish и удалите функцию fish_prompt, которая определяет отображение вашего приглашения. Это обеспечит совместимость вашего настроенного приглашения с предоставляемыми темами от Oh My Fish или предотвратит их перезапись.

? Темы поставляются с уникальными подсказками, которые критически важны для их внешнего вида и функционирования. Отключение вашей настраиваемой подсказки (fish_prompt) обеспечивает полную интеграцию выбранной вами темы Oh My Fish в ее дизайн и функции в вашем оболочке fish.

2. Затем удалите (rm) файл ~/.config/fish/functions/fish_prompt.fish. Эта команда не выводит никакой информации, но удаление этого файла гарантирует, что оболочка fish вернется к своей стандартной подсказке.

rm ~/.config/fish/functions/fish_prompt.fish

3. Выполните эту команду source, чтобы изменения в файле конфигурации fish вступили в силу.

source ~/.config/fish/config.fish
Sourcing the fish configuration file

4. Теперь выполните следующую команду omf, чтобы найти идеальную тему для вашей оболочки fish.

omf theme

Выберите одну тему, которую вы хотите интегрировать в оболочку fish (например, cbjohnson).

? Посетите официальный репозиторий GitHub для тем Oh My Shell, чтобы увидеть, как выглядит каждая тема, прежде чем вы их установите.

Listing available Oh My Fish themes

? Улучшите вашу оболочку fish с помощью плагинов, запустив следующую команду для установки плагинов. Посетите репозиторий GitHub OMF для списка плагинов для установки. omf install <plugin_name>

5. Затем выполните следующую команду, чтобы установить выбранную вами тему на шаге четыре (cbjohnson).

omf install cbjohnson

После установки ваша подсказка сразу же изменится, как показано ниже.

Installing an Oh My Fish theme (cbjohnson)

? Совет: Быстро переключайтесь между темами, если у вас их две или более, запустив следующую команду. omf theme <theme_name>

Удаление Oh My Fish

Oh My Fish – это гем для улучшения вашего оболочечного настроения. Но если вам когда-нибудь захочется изменить обстановку или попробовать что-то новое, удаление Oh My Fish даст вашей оболочке fish свежий старт.

Чтобы удалить Oh My Fish, выполните следующее:

1. Выполните следующие команды rm, чтобы удалить все файлы, связанные с Oh My Fish.

rm -rf ~/.local/share/omf
rm -rf ~/.config/omf

После удаления вы увидите, что ваша изначально установленная тема исчезнет.

Deleting Oh My Fish-related files

2. Затем выполните каждую из следующих команд, чтобы удалить больше файлов, связанных с Oh My Fish.

Эти команды не выводят никакой информации, но удаление этих файлов гарантирует полное удаление всех остатков Oh My Fish с вашей системы.

rm -rf ~/.local/share/omf/pkg/omf/functions/omf.fish
rm ~/.config/fish/conf.d/omf.*

3. Теперь выполните следующую команду omf, чтобы проверить удаление.

omf --version

Вы увидите ошибку, подобную следующей, указывающую, что команда omf не найдена, и что Oh My Fish был полностью удален.

Verifying the Oh My Fish deletion

Установка Fish в качестве оболочки по умолчанию

Если вам понравилось пользоваться оболочкой fish и улучшать свой опыт работы с Linux, почему бы не установить ее в качестве оболочки по умолчанию? Таким образом, вы избавите себя от необходимости переключаться при каждом запуске нового терминала.

Чтобы установить fish в качестве вашей оболочки по умолчанию, выполните следующие шаги:

1. Выполните следующую команду, чтобы найти путь, по которому расположена оболочка fish.

which fish

Скопируйте путь в буфер обмена, так как вам понадобится это на следующих этапах.

Finding the path to the fish shell

2. Затем выполните следующую команду, чтобы добавить fish в список допустимых оболочек в /etc/shells.

echo "/usr/bin/fish" | sudo tee -a /etc/shells
Adding fish to the list of acceptable shells

3. Наконец, выполните команду chsh ниже, чтобы изменить свою оболочку по умолчанию на fish (/usr/bin/fish).

chsh -s /usr/bin/fish

При перезагрузке вашей машины у вас будет fish в качестве оболочки по умолчанию.

Changing the default shell to fish

? Совет: Вернитесь обратно с fish на другую оболочку, например, Bash, в качестве оболочки по умолчанию, повторив все шаги в этом разделе. Убедитесь, что вы указываете путь к Bash на втором и третьем шагах, а затем перезапустите вашу машину, чтобы изменения вступили в силу.

Заключение

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

Вы получили представление о том, как преобразить ваш опыт работы с Linux с помощью менеджера пакетов Oh My Fish. Более того, вы узнали, как легко находить и устанавливать новые плагины и темы, расширяя функциональность и эстетику вашей среды оболочки fish.

Теперь, когда вы изучили основы оболочки fish, погрузитесь глубже и разблокируйте ее полный потенциал. Почему бы не попробовать экспериментировать с пользовательскими приглашениями, такими как Powerline или Starship, чтобы придать вашей оболочке персонализированный вид?

Source:
https://adamtheautomator.com/fish-shell/