Недавно вышла очередная версия оболочки Fish. Название расшифровывается как Friendly Interactive Shell, что полностью соответствует истине. Если сравнивать её со значительно более известными Bash и Zsh, то настройку Fish проще производить без прямого редактирования конфигурационных файлов, поскольку всё необходимое для конфигурирования есть в самой оболочке и использовать эти средства удобней, чем остальные.
Разработчики Fish прекрасно усвоили правило «встречают по одёжке». В этой оболочке реализован не только эффективный, но и эффектный режим подсветки синтаксиса, который работает при вводе любой команды. Если цвет символов красный, то нет никакого смысла нажимать на «Ввод», поскольку система такой команды не знает. А вот когда цвет сменится на синий (или иной, в зависимости от выбранной цветовой схемы), то всё в порядке.
Относится это не только к самой команде, но и к её опциям. Подсветка позволяет контролировать правильность написания по ходу ввода, что чрезвычайно практично.
Например, если пользователь вводит название каталога и он существует, то название будет подчёркиваться. Причём, уже в процессе ввода.
Это позволяет минимизировать количество ошибок при вводе и таким образом сократить время на выполнение пользовательских операций. Причём функция не требует никаких дополнительных настроек. Разве что, можно выбрать наиболее приятное глазу цветовое решение.
Функция автоматического дополнения широко применяется пользователями других оболочек, поскольку позволяет не только сократить время ввода команды, но и избежать ошибок. В Fish эта функция автодополнения активна по умолчанию и не требует использования дополнительных клавиш. Стоит пользователю начать ввод команды, оболочка предлагает ему наиболее вероятные варианты продолжения.
Если Fish «угадал», чего именно хочет пользователь, то достаточно нажать на кнопку «Влево». Если же предложенный вариант не устраивает, то при помощи клавиши «Вверх» можно пролистать все команды, в которые входит уже набранная комбинация символов.
Клавиша Tab в Fish предназначена для показа возможных вариантов продолжения. Причём, нужный можно выбрать при помощи клавиш со стрелками, как в обычном менеджере файлов.
Несмотря на то, что настраивать Fish в большинстве случаев не нужно, оболочка имеет весьма удобный инструмент для конфигурирования. Команда fish_config позволяет это сделать при помощи обычного браузера — налицо и наглядность, и отсутствие лишних сущностей.
Через веб-интерфейс можно настроить практически всё — от внешнего вида до функций. Никакой необходимости редактировать файл конфигурации нет.
Кстати, документация в оболочке также реализована в виде веб-страницы, которая открывается в браузере командой help. Если бы она ещё была переведена на русский язык, то получился бы практически идеал дружелюбия.
Зачастую нет необходимости и в команде fish_config. Достаточно один раз объяснить оболочке, что от неё требуется.
Допустим, пользователю приходится часто применять некую длинную команду. Для экономии времени имеет смысл создать аббревиатуру командой abbr -a «имя» ’команда’. Fish запомнит это навсегда. А чтобы самому не запутаться в собственных сокращениях следует периодически просматривать их полный перечень командой abbr -s.
Для перенаправления стандартных ввода и вывода в других оболочках применяются операторы < и >. Разработчики Fish решили пойти дальше и реализовали аналогичную функциональность для ошибок при помощи оператора ^. Получилось весьма изящно. Если пользователю нужно получить информацию об ошибках при выполнении какой-либо команды, то это решается очень просто: «команда» ^"файл" и cat «файл».
При создании оболочки особое внимание уделялось простоте и понятности. Например, для подстановки в Fish применяются не кавычки, ассоциирующиеся у обычного пользователя с комментарием, а скобки, расположенный в которых текст воспринимается оболочкой как список команд и заменяется их результатом после выполнения.
В Fish допускается создание функций. Причём, в интерактивном режиме — достаточно ввести function «имя функции» и её код.
И, конечно же, для Fish уже существуют плагины, расширяющие функциональность оболочки. Например, модуль fishmarks позволяет назначать закладки на наиболее востребованные каталоги, чтобы быстро перейти в них при необходимости.