Раковина рыбы

Знакомство с оболочкой Fish

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

Кажется, люди придерживаютсяБашкоторый является значением по умолчанию во многих системах (обновление: теперь в macOS по умолчанию используется Zsh) или используйте Zsh с таким отличным инструментом, какО мой зшчтобы сделать его еще более удивительным.

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

Я не хочу «ломать голову» над этими замечательными проектами, которыми я пользовался много времени, а иногда и до сих пор использую. Это описание - моя попытка подчеркнуть преимущества рыбы.

Fish Shell спешит на помощь! Эта оболочка обеспечивает отличную среду и полнофункциональную конфигурацию прямо из коробки.

Мои любимые особенности Fish:

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

Когда дело доходит до сценариев, он сильно отличается от сценариев Bash (в лучшем случае, IMHO), но вы можете запустить любой сценарий Bash при условии, что он имеет префикс#!/bin/bash.

Сразу после установки вы получаете следующие приятные вещи:

  • подсветка синтаксиса
  • хорошая подсказка
  • автозаполнение
  • предложение параметра с подсказками на странице руководства
  • веб-конфигурация

и на мой взгляд это самая удобная для новичков оболочка.

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

Для тех, кому повезло с графическим компьютером, вы можете устанавливать цвета и просматривать функции, переменные и историю прямо на веб-странице.

Потом я понял, что это юмор программиста, и рассмеялся. Техника всегда должна приносить удовольствие, правда?

Перво-наперво: что такое оболочка?

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

Установка

Установите Fish, запустивbrew install fishна macOS.

Посмотри мойруководство по терминалу macOS

fishустановлен в/usr/local/bin/fish.

Поскольку это, скорее всего, уже есть на вашем пути, запуститеfishчтобы запустить Fish shell (введитеexitчтобы вернуться в оболочку по умолчанию)

Конфигурация

Когда-то приятная вещь в Fish - это веб-конфигурация. Пробегfish_configдля запуска веб-клиента.

configuration

Отсюда вы можете

  • выберите цветовую схему из списка предустановленных
  • выберите подсказку из списка предопределенных
  • проверить настроенные функции и переменные Fish
  • посмотреть историю команд

Конфигурация хранится в~/.config/fishпапка, и здесь вы можете редактировать ее, не используя (необязательную) веб-конфигурацию.

Возможности Fish: выделение синтаксиса, автозаполнение и предложение параметров с подсказками на странице руководства.

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

  • lsперечислить файлы
  • cdсменить папку
  • rmудалить файл или папку
  • mvпереместить файл в другую папку или изменить имя файла
  • cpскопировать файл

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

Fish также добавляет автозаполнение. Если ты бежишьcd ~/.config/fish/раньше, а теперь вы набираетеcd, Fish предложит команды, которые вы, возможно, захотите ввести, и вы просто нажмите стрелку вправо, чтобы принять предложение (или вы можете продолжить ввод, чтобы изменить команду). Это предложение основано на истории команд и путях к файлам.

Предложения, основанные на автозаполнении, также работают для команд. Здесь я набралcи нажал вкладку:

autocomplete commands

Fish также предлагает параметры и способы их использования. Типls -и нажмитеtab. Список параметров, которые вы можете использовать, и их значения показаны справа ниже:

autocomplete

Эта встроенная справка создается изстраницы руководства, полезная справка по оболочке (попробуйте запуститьman lsза полную помощь).

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

Если вам понравится Fish, когда вы попробуете его, и вы хотите сделать его своей оболочкой по умолчанию, откройте файл/etc/shells. я используюpicoделать небольшие правки файлов с помощьюpico /etc/shells, но вы можете использовать любой редактор, который вам нравится, даже VS Code сcode /etc/shells.

Он должен содержать что-то похожее на:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

Добавьте эту строку в конце, чтобы добавить раковину Fish:

/usr/local/bin/fish

next, run

chsh -s /usr/local/bin/fish

enter your password, and the shell will change for your user.

change shell

Plugins

You can install Fish plugins.

Fisher is a popular Fish package manager.

Install it using

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

and it’s available with the fisher command.

Now a package can be installed using fisher add <github-repository-path> and removed using fisher rm <github-repository-path>.

List all plugins installed using fisher ls.

Run fisher to update all the packages you installed.

Popular plugins are

Here is a list of packages you can install.

POSIX compliance

Various shells comply with the POSIX shell command standard.

POSIX means

  • Portable
  • Operating
  • System
  • Interface
  • X (for Unix)

and it’s a standard meant to unify the various Unix environment that were built over time. There is a shell command standard subset, which is meant as a way to unify how Unix shells work.

Unix is a specification/standard for a family of operating systems. Linux and macOS are based on Unix (Windows is not).

bash, ksh and others are POSIX compliant. Being POSIX compliant makes scripts written with POSIX compatibility work across POSIX compliant shells.

Fish (like sh or csh for example) is not compliant, so it’s not a POSIX shell, and this means that writing commands and scripts for Fish is different. Scripts written for Fish won’t work outside of Fish. Just like csh scripts only work on csh (and derivatives)

Why is it different? Various reasons, but I imagine having to support POSIX means the shell must adhere to a common language that might interfere with the shell philosophy and way of working. Not everyone want to have that baggage of tech to support forever.

This will very rarely be a problem with executing commands, but you need to keep it in mind when it comes to scripting and programming.

Download my free Linux Commands Handbook


More cli tutorials: