Fish — современная командная оболочка

Fish - современная командная оболочка

Friendly interactive shell или сокращено — fish, новая дружелюбная командная оболочка для Windows, Linux и MacOS, которая обладает встроенным автодополнением и подсветкой синтаксиса с поддержкой автоматического выявления ошибок ввода.

Первая версия датируется 2005 годом, казалось бы, прошло 15 лет, почему я назвал ее новой?

А все просто, основные популярные командные оболочки были выпущены еще в прошлом веке и на их фоне fish — свежий огурчик.

Название командой оболочкиПервый релиз
Bourne shell (sh)1977
C shell (csh)1978
Bourne again shell (bash)1989
Z shell (zsh)1990
Даты первых релизов популярных командных оболочек Unix/Linux

Особенности

  • История. Подсказывает команды из вашей истории выполнения так, как делает это веб-браузер.
  • Подсветка. Поддерживает подсветку синтаксиса, а так же автоматическое выявление ошибок ввода.
  • Автодополнение. Для автоматизации ввода опций и команд используют справочные man-руководства.
  • Скриптовый язык. Присутствует свой упрощённый язык написания сценариев.
  • Легко найти. Есть удобные средства поиска в истории выполненных команд.
  • Все активировано по умолчанию. После установки вам ничего не придется настраивать, все особенности оболочки работают из коробки.

Установка

В большинстве случаев установка fish отнимает минимум времени. Открываем официальный сайт fishshell.com и переходим в раздел Go Fish

Windows

Для MS Windows существует 3 варианта установки

Windows Subsystem for Linux

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

Cygwin

Во время установки необходимо поставить галочку в категории приложений Shell

MSYS2

Один из многих форков Cygwin, его основной плюс в интеграции пакетного менеджера ArchLinux. Для установки fish достаточно ввести команду pacman -S fish

Linux

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

Fedora

dnf install fish

ArchLinux

 pacman -S fish 

Gentoo

emerge fish

NixOS

 nix-env -i fish 

Ubuntu, Debian, CentOS и openSUSE

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

MacOS

Отсутствием разнообразия установки для MacOS обвинить fish не получится, 4 разных способа на любой цвет и вкус 🙂

HomeBrew

 brew install fish 

MacPorts

sudo port install fish

Установочный пакет

Необходимо перейти на сайт fishshell.com/#get_fish_mac и скачать установочный файл. Обязательно следуйте всем инструкциям во время установки.

Отдельное приложение

Необходимо перейти на сайт fishshell.com/#get_fish_mac и скачать отдельное приложение. Не забываем, что для его установки необходимо скопировать файл в папку «Приложения».

Запуск

Чтобы запустить оболочку введите команду fish в вашей консоли.

krnlnx:~/ $ fish                                                                                                       
krnlnx@macbook /Users/krnlnx  
> 

Настройки

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

which fish | sudo tee -a /etc/shells

Сделаем fish оболочкой по умолчанию для текущего пользователя.

chsh -s /usr/local/bin/fish

Запуск веб-конфигуратора

Воспользуемся веб приложением для настройки fish

fish_config

Перед нами откроется веб браузер с 7 вкладками, расскажу о каждой из них.

  • colors — эта вкладка позволит выбрать вам цветовую схему fish
  • prompt — кастомизация строки приветствия
  • functions — раздел с функциями
  • variables — переменные окружения
  • history — история ввода команд
  • bindings — горячие клавиши
  • abbreviations — сокращения для команд

Как мы заметили оболочка быстро и легко настраивается под ваши предпочтения.

Дополнения

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

Менеджеры дополнений

Для установки, удаления и обновления дополнений в Fish существуют так называемые фреймворки. Рассмотрим самые популярные.

Fisher

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

Установка Fisher
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
Управление плагинами

В фреймворке реализованна поддержка управления дополнениями с помощью команд

Установить

fisher add jethrokuan/z rafaelrinaldi/pure

Удалить

fisher rm rafaelrinaldi/pure

Обновить

fisher self-update

Отобразить список установленных плагинов

fisher self-update

Более подробную информацию о работе фреймворка смотрите на странице разработчика.

Официальный сайт: https://github.com/jorgebucaran/fisher

Fundle

Минималистичный пакетный менеджер для Fish

Установка и обновление пакетов происходит и использованием git. Пакетный менеджер имеет полную совместимость с oh-my-fish плагинами.

Установка Fundle
curl -sfL https://git.io/fundle-install | fish
Установка плагинов

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

fundle plugin 'edc/bass'
fundle plugin 'oh-my-fish/plugin-php'
fundle plugin 'danhper/fish-fastdir'
fundle plugin 'danhper/fish-theme-afowler'

fundle init

Функции управления дополнениями легко запомнить

Полный список доступных команд

  • fundle init: Инициализация пакетного менеджера и загрузка всех доступных плагинов
  • fundle install: Установка всех плагинов
  • fundle update: Обновление всех плагинов
  • fundle plugin PLUGIN [--url PLUGIN_URL] [--path PATH]: Добавить плагин.
    • --url Указать URL для клонирования плагина.
    • --path Указать директорию установка
  • fundle list [-s]: Отобразить список всех установленных плагинов.
  • fundle clean: Удалить неиспользуемые плагины.
  • fundle self-update: Обновить пакетный менеджер.
  • fundle version: Отобразить текущую версию пакетного менеджера.
  • fundle help: Показать все доступные команды

Более подробную информацию о работе фреймворка смотрите на странице разработчика.

Официальный сайт: https://github.com/danhper/fundle

Фреймворк для Fish. Создан для легкой организации и публикации коллекций из функций, утилит и тем.

Tacklebox

Установка Tacklebox
curl -O https://raw.githubusercontent.com/justinmayer/tacklebox/master/tools/install.fish
cat install.fish | fish; rm install.fish
Обновление

Фреймворк создает в домашнем каталоге клон своего github репозитория

cd ~/.tacklebox; git pull
cd ~/.tackle; git pull

Более подробную информацию о работе с фреймворком смотрите на странице разработчика.

Официальный сайт: https://github.com/justinmayer/tacklebox

Oh My Fish

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

Установка Oh My Fish

Для установки достаточно запустить команду в терминале

curl -L https://get.oh-my.fish | fish
Доступные команды

Oh My Fish включает в себя небольшую программу omf

  • omf update — Полное обновление Oh My Fish, всех данных с репозиториев и всех установленных пакетов.
  • omf install — Установка одного или нескольких пакетов
  • omf repositories [list|add|remove] — Управление установленными репозиториями.
  • omf list — Список установленных пакетов.
  • omf theme — Применить тему.
  • omf remove — Удалить пакет.
  • omf reload — Перезагрузить Oh My Fish.
  • omf search -t|—theme / -p|—package — Поиск плагина или темы.
  • omf channel — Получить изменения из канала обновлений.
  • omf doctor — Исправление ошибок в работе Oh My Fish.
  • omf destroy — Удаление Oh My Fish

Более подробную информацию о работе с фреймворком смотрите на странице разработчика.

Официальный сайт: https://github.com/oh-my-fish/oh-my-fish

Темы

Fish имеет огромное количество разнообразных тем, с которыми можно ознакомится по ссылке github.com/oh-my-fish/oh-my-fish/blob/master/docs/Themes.md

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий