11 особенностей Fish Shell, которые делают его еще круче, чем Bash
Bash – самая распространенная оболочка. Zsh – самая популярная среди разработчиков. Но Fish – самая недооцененная.
Я не преувеличиваю. Fish действительно является недооцененной оболочкой, которая может отлично подойти как новичкам, так и опытным FOSSерам.
Fish предоставляет целый ряд возможностей, которые делают его привлекательным выбором. От подсветки синтаксиса до аббревиатуры (моя любимая) – здесь есть множество новинок.
Позвольте мне поделиться с вами некоторыми из моих любимых функций оболочки Fish.
1. Подсветка синтаксиса
Лучше заметить ошибки до того, как они будут выполнены. Это сэкономит массу времени, сил и разочарований.
Большинство современных редакторов кода имеют встроенную подсветку синтаксиса. В Fish эта функция встроена в саму оболочку, и она работает с командами Linux.
Неправильная команда? Вы видите, что она выделена красным цветом. То же самое касается аргументов и опций, которые не соответствуют контексту.
2. Самоубеждения
Оболочка Fish предлагает команды по мере ввода, которые впоследствии можно выполнить с помощью клавиши табуляции.
Предложения будут закрашиваться серым цветом по мере ввода, чтобы сделать его более доступным. Если вся строка предложения вам подходит, вы можете нажать клавишу со стрелкой вправо, чтобы завершить ее полностью.
3. Интерактивная страница man для опций команды
Это замечательная функция, с помощью которой вы сможете заполнить параметры команды, используя интерактивную помощь из страницы man.
Сначала вам нужно разобрать man-страницу, что можно сделать, выполнив команду:
fish_update_completions
Это позволит разобрать страницы man.
Теперь, если вы введете команду, поставьте дефис для опций, а затем нажмите кнопку tab, чтобы увидеть предложения на странице man для возможных опций с их краткими описаниями:
Вы можете прокручивать варианты и выбирать, прочитав о его работе, на появившемся пейджере.
Это немного проще, чем набирать command -h.
4. Сокращения вместо псевдонимов
Сокращения в Fish – это как расширители текста. Здесь вы обозначаете часто используемый код легкодоступной аббревиатурой.
Например, я использовал sch как сокращение для команды pacman -Ss для поиска пакетов.
abbr -a sch pacman -Ss
Теперь каждый раз, когда я набираю sch и нажимаю кнопку пробела, она будет заменена на pacman -Ss.
Вы можете сделать его постоянным, записав в файл конфигурации.
💡
Разница между псевдонимом и аббревиатурой заключается в том, что псевдоним работает под капотом. Вы не видите фактических команд, к которым он привязан. Аббревиатура показывает фактические команды, и они также корректно записываются в историю.
5. Обширная веб-помощь
Приверженцы Linux полагаются на страницы man, чтобы получить помощь по той или иной команде. Новые пользователи Linux больше полагаются на Интернет.
Fish сочетает в себе оба варианта благодаря обширной “веб-справке”, которая легко доступна в вашей системе, даже если нет интернета, поскольку хранится локально.
Чтобы получить справку, запустив оболочку Fish, просто используйте:
help
Это откроет страницу “Справка” в вашем веб-браузере.
Теперь вы можете с легкостью обращаться к обширной документации.
6. Веб-конфигурация
Да, еще одна “веб-функция”.
Чтобы изменить цвет подсказки или другие настройки, вам не нужно редактировать конфигурационные файлы в терминале. Вместо этого вы можете воспользоваться веб-конфигурацией.
Введите следующую команду, запустив оболочку Fish:
fish_config
Откроются настройки конфигурации в браузере.
Здесь можно изменить цвета, установить другую подсказку из уже имеющегося списка и т. д.
Так проще вносить изменения, нет?
7. Автоматический CD-диск
Если вы хотите перейти в каталог, вам не нужно вводить команду cd. Просто введите имя каталога, и все.
Например, если вы находитесь в каталоге Home и хотите переместиться в каталог Downloads, просто введите Downloads. По мере ввода будет предложено дальнейшее завершение.
Вам нужно использовать абсолютный путь, если вы находитесь в определенной директории и хотите перейти в совершенно другую ветку.
8. Более удобная навигация по маршруту
Если вам нужно вернуться назад и вперед между посещенными директориями, не нужно вводить путь или использовать cd … и т.д. Просто нажмите ALT + стрелки вправо/влево, чтобы переместиться вперед и назад соответственно.
В качестве альтернативы можно набрать cdh и ввести enter, после чего появится интерфейс пейджера, на котором можно набрать номер, соответствующий директории, в которую вы хотите вернуться.
9. Интерактивный поиск по истории
Вы можете искать определенную команду в истории в интерактивном режиме на Fish. Для этого используйте старый добрый CTRL+R.
Это откроет страницу, похожую на пейджер, с поисковой строкой. Введите название нужной команды и посмотрите результат:
10. Универсальные переменные
В оболочке Fish, если вы установите переменную как универсальную, она будет доступна даже при перезапуске оболочки или даже при перезагрузке системы.
Чтобы сделать переменную универсальной, используйте:
set -U my_variable 10
Значение my_variable будет сохранено равным 10, даже если система будет перезагружена.
Да, не нужно добавлять их в RC или профиль.
11. Частный режим
В оболочке Fish shell есть приватный режим, в котором вводимые команды не сохраняются в истории и не записываются на диск.
Чтобы перейти в приватный режим, используйте команду:
fish -P
После завершения работы вы можете выйти из приватного режима, набрав exit.
С “Рыбкой” можно исследовать еще много интересного.
Fish shell предоставляет множество других удобных функций, таких как:
- Простое редактирование многострочных команд с помощью ALT+Enter
- Переключение между связками клавиш Emacs (по умолчанию)/Vim
- Простой и чистый синтаксис для написания скриптов
Конечно, большинство рассмотренных здесь возможностей оболочки Fish можно реализовать с некоторыми усилиями и в других оболочках, но то, что они включены по умолчанию, – это совсем другое дело.
Fish может помочь вам быть более продуктивным и эффективным в разработке, поскольку вы контролируете свою среду разработки. Не пишите скрипты исключительно для оболочки Fish, которые другие должны запускать в Bash. Проблемы с совместимостью оболочек могут возникнуть в общей среде на многопользовательской системе.
Если вам понравились эти функции, попробуйте Fish shell и посмотрите, как пойдет дело. Возможно, вы перейдете на использование Fish в качестве оболочки по умолчанию.
Даже если вы не хотите видеть “рыбу” в своем терминале, вам может понравиться (ASCII) аквариум 😉.