На сайте коллега scorpii писал статью о сравнении shell’ов (командных оболочек), после чего я решил попробовать zsh, но первое, с чем я столкнулся — куча настроек и попытка привести оболочку к привычному виду bash (под видом я понимаю привычное поведение). Тогда возился, возился и вернулся на bash, как-то не дойдя до Fish …
Попалась мне в ленте статья о преимуществах Fish, поэтому вновь открыл материал от scorpii для попробовать нечто новое. Менял bash по этой статье. В этом материале будет перевод и адаптация на русский язык материала от It’s FOSS.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _
Вам следует попробовать fish, даже если Вы веган или у Вас аллергия на морепродукты :P
Bash — самая распространенная оболочка. Zsh — самая популярная среди разработчиков. Но Fish — самая недооцененная.
Я не преувеличиваю. Fish действительно является оболочкой, которую не замечают и которая может отлично подойти как новичкам, так и продвинутым FOSS’ерам. Fish предоставляет целый ряд возможностей, которые делают её привлекательной — от подсветки синтаксиса до сокращений (моя любимая) — здесь есть множество новинок. Позвольте мне поделиться с вами некоторыми из моих любимых особенностей Fish shell.
1. Подсветка синтаксиса
Лучше обнаружить ошибки до того, как они будут выполнены. Это экономит много времени, энергии и разочарований. Большинство современных редакторов кода имеют встроенную подсветку синтаксиса. Fish имеет эту функциональность, встроенную в саму оболочку, и работает с командами Linux.
Неправильные команды? Вы видите, что они выделены красным (или у кого какой цвет в настройках терминала). То же самое касается аргументов и опций, несоответствующих контексту.
Это можно заметить на анимациях ниже: предлагаемые пути и команды показываются блёклыми цветами.
2. Автодополнение
Оболочка Fish предлагает команды по мере ввода, которые позже можно выполнить соответствующим образом с помощью клавиши табуляции.
По мере ввода предложения будут отображаться цветом, чтобы сделать их более доступными. Если вся строка предложения вас устраивает, вы можете нажать стрелку вправо, чтобы завершить ее полностью, либо Tab, чтоб увидеть другие предложения.
Если ввести меньшую часть команды и нажать Tab, то будут предложены варианты, которые начинаются с введённых символов; если бóльшую, то сама команда будет дописана. По стрелке вправо будет дописан предлагаемый аргумент, Alt + → будет дополнять по-одному слову.
3. Интерактивная справочная страница (man) с параметрами команд
Это замечательная функция, с помощью которой вы сможете указать параметры команды, воспользовавшись справкой на странице руководства в интерактивном режиме.
Во-первых, вам нужно проанализировать справочную страницу, что можно сделать выполнив
fish_update_completions
Теперь, если вы наберёте команду, поставите дефис для опций, а затем нажмёте кнопку Tab, появится предложение о возможных опциях с их краткими описаниями (Анимация 2)
Вы можете пролистать варианты и выбрать, прочитав о работе, из появившегося списка. Это немного проще, чем набирать команду -h.
4. Аббревиатуры вместо сокращений (алиасов)
Аббревиатуры в Fish похожи на расширение текста. Здесь вы заменяете часто используемый код легко доступным сокращением. Например, я использовал sch как сокращение команды pacman -Ss для поиска пакетов.
abbr -a sch pacman -Ss
Теперь, когда я печатаю sch и нажимаю кнопку пробела, она будет заменена на pacman -Ss.
5. Обширная веб-справка
Опытные пользователи Linux полагаются на страницы man, чтобы получить помощь по той или иной команде. А вот новая часть пользователей Linux больше полагается на Интернет.
Fish предлагает сочетание того и другого благодаря своей обширной «сетевой» справке, которая легко доступна в вашей системе, даже если нет Интернета, поскольку она хранится локально. Чтобы получить помощь при запуске Fish Shell, просто используйте:
help
Теперь вы можете легко обращаться к обширной документации. Текст, разумеется, на английском, это браузер, поэтому тут работают браузерные переводчики (плагины и расширения).
6. Настройка на основе веб-технологий
Да, еще одна «сетевая» функция.
Чтобы изменить цвет приглашения или другие настройки, вам не нужно редактировать файлы конфигурации в терминале. Вместо этого вы можете использовать веб-настройку.
Введите следующую команду во время работы оболочки Fish:
fish_config
Здесь вы можете изменить цвета, установить другую подсказку из уже доступного списка. Так проще внести изменения, не так ли?
7. Автоматическая подстановка cd
Если вы хотите перейти в каталог, вам не нужно вводить команду cd. Просто введите имя каталога, вот и все. Как видите ниже, можно ввести не только имя каталога, но и несколько таковых сразу.
Например, если вы находитесь в своем домашнем каталоге и хотите перейти в каталог «Загрузки», просто введите «Загрузки/». По мере ввода также будет предлагаться дальнейшее завершение, куда можно перейти стрелочкой.
Вам нужно использовать абсолютный путь, если вы находитесь в каталоге и хотите перейти в совершенно другую ветку.
8. Упрощённая навигация по пути
Если вам нужно перемещаться между каталогами, которые вы посетили, не нужно вводить путь или использовать cd .. и т.д. Просто нажмите ALT + ←|→ для перемещения вперёд и назад соответственно.
В качестве альтернативы можно набрать cdh, ввести Enter, в результате чего появится меню, где можно набрать номер соответствующий директории, в которую вы хотите быстро вернуться.
На скриншоте ниже из /home/ перешёл в папку /mnt/Archive/Install/GNU, выбрав цифру 7, а позже в директорию /home/Картинки, выбрав из списка число 10.
9. Интерактивный поиск по истории
Вы можете выполнить поиск конкретной команды в истории в интерактивном режиме на Fish. Для этого используйте сочетание CTRL+R. Появится список введённых команд и строка для поиска команды.
10. Универсальные переменные
В оболочке Fish, если вы установите переменную как универсальную, она будет доступна даже при перезапуске оболочки или после перезагрузки системы. Чтобы создать универсальную переменную, используйте:
set -U my_variable 10
Значение my_variable будет сохранено равным 10, даже если система будет перезагружена. Да, не нужно добавлять их в RC или профиль.
11. Приватный режим
Fish Shell имеет приватный режим, в котором вводимые вами команды не сохраняются в истории или на диске. Чтобы перейти в приватный режим, используйте команду:
fish -P
Как переключиться в приватный режим, команда есть, а вот как из него выйти — я не встретил.
Несколько слов от себя
Поскольку мануал на английском, то не сразу разобрался … Хотя стоит последовать совету 4 и задать этакие сократители команд. Руководство ещё нуждается в чтении, пока изучал методом тыка и смотрел поверхностно, местами. Текст в статье дополнял от себя для лучшего понимания, вот и разбирался за одно, как и переделал все анимации со своим терминалом.
Алисы как и начальную команду, выполняемую при открытии окна, задал в файле
/home/user/.config/fish/config.fish
Если я правильно понял, то задание сокращений в окне терминала командой
function alias
команда
end
носит временный характер и работает до закрытия окна.
Файл с историей находится по этому адресу. Но можно открыть настройки в браузере (Совет 6), там есть вкладки с историей и сочетаниями клавиш (history и bindings)
/home/user/.local/share/fish/fish_history
Пока не смог отключить приветственную команду, этакое приглашение ко вводу (на скриншоте под пингвином). Но Fish мне нравится, буду использовать и осваивать, другим рекомендую попробовать. Не сразу сообразил, но для Fish не работают настройки цветов xfce4-terminal из настроек самого терминала, по крайней мере после внесения изменений и выбора их в браузере (пункт 6). Поэтому по ходу написания статьи фоновая картинка сменилась для читаемости. Там сменил ещё имя_пользователя2@имя_хоста перед вводимой командой.
Есть несомненные плюсы по сравнению с Bash, нужно освоиться. А как иначе?..
Нашёл в мане команду для освобождения пары строчек: set -U fish_greeting
Комментарии
09:42
18:11
18:14
https://ghostty.org/docs/install/binary#linux
18:26
18:29
21:44
Мои терминалы: alacritty, kitty
23:58
Kitty ставил, якобы он с поддержкой gpu-ускорения, но там тоже надо настройки ковырять через текстовый файл и всё на иностранном: установил тогда картинку фоном, размеры окна мб задал и на этом всё, удалил.
08:53
17:19
disk.yandex.ru/i/gdIuRCIM0P8RxA
11:39
Отключить приглашение при входе можно простой функцией:
function fish_greeting
fortune
end
а затем сохранить ее:
funcsave fish_greeting
Так же советую вам обратить внимание на Oh My Fish, очень много тем и расцветок для fish, всячески рекомендую.
Алиасы можно создавать и вот так (мой пример):
alias --save cleanconfig="sudo dpkg -l | grep '^rc' && sudo aptitude purge ~c"
09:12
alias --save cleanconfig="sudo dpkg -l | grep '^rc' && sudo aptitude purge ~c"
Все гораздо проще. Для сокращений создаем файл .aliases (или назовите его как душе угодно) в корне домашней папки пользователя.
Для вызова его в bash, нужно добавить в .bashrc что-то типа (аналогично будет и для других posix-совместимых):
if [ -f ~/.aliases ];
then . ~/.aliases
fi
Для вызова в fish, добавить в config.fish:
if [ -f ~/.aliases ]
source ~/.aliases
end
11:55
Как будто Пингвин говорит "Welcome to fish" и на свет маяка наложилась цифра, как-будто эмоционально ОДИННАДЦАТЬ!!! flatpak
13:16
12:26
13:18
16:16
12:59
14:49
Будем ждать когда Fish будет более распространена в дистрибутивах. Особенно в дистрибутивах для новичков. Сожалею что Fish недооценена.
15:29
15:57
16:01
16:12
Солидарен. Я не просто так в начале сослался на статью scorpii. Он рекомендует в конце использовать bash, как наиболее растространённую, потому что она по умолчанию.
Я сам таскал(ю) от дистрибутива к дистрибутиву свой .bashrc, потому что во всех дистрибутиваз алиасы нужные работают (которые там прописаны).
16:44
17:17
17:41
"Плейбой" что ли черно-белый ? О_о )))
17:53
18:23
18:22
17:14
18:08
01:59
https://postimg.cc/ZWNjZB8q
22:24
23:10
Терминал же он только для neofetch
12:21
22:25
23:04
23:18
https://linuxiac.com/fish-shell-4-0-rust-is-coming/
13:53
#Install oh-my-zsh plugins.
#autosuggesions plugin
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
#zsh-syntax-highlighting plugin
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
#zsh-fast-syntax-highlighting plugin
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
#zsh-autocomplete plugin
git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git $ZSH_CUSTOM/plugins/zsh-autocomplete
15:45
Как показали комментарии выше, нет, не стоит оно того.