LINUX.ORG.RU

Fish 3.5

 ,


2

3

Fish (Friendly interactive shell) — оболочка, предоставляющая удобный интерфейс командной строки и предназначенная для интерактивного использования.

Крупные изменения и исправления:

  • Новая встроенная команда path для обработки путей. Например, для перечисления всех расширений на файлах в /usr/share/man с удалением крайнего расширения (обычно «.gz»), можно выполнить команду
path filter -f /usr/share/man** | path change-extension '' | path extension | path sort -u
  • Tab (или любая другая клавиша, к которой привязана complete) теперь выполняет раскрытие подстановочных знаков (wildcards) вместо дополнения, если в пути под курсором такие имеются.

  • Добавлена поддержка перехвата и обработки сценариями (при помощи function --on-signal или trap ) сигналов SIGINT и SIGTERM.

Устаревшие и удаленные возможности

  • Флаг stderr-nocaret, введенный в fish 3.0 и включенный по умолчанию в fish 3.1, был переведен в режим «только чтение», отключить его более невозможно. Этот флаг отвечает за отключение возможности использовать символ ^ для перенаправления stderr, которая была сочтена устаревшей ввиду необходимости экранирования символа ^ повсеместно и наличия рабочей альтернативы 2>.
  • Также были включены по умолчанию флаги
    • regex-easyesc, отключающий лишний проход устранения экранирования в string replace -r, что позволяет, например, писать string replace -ra '([ab])' '\\\\$1' foobar для экранирования символов «a» или «b» – без флага количество обратных косых черт возрастает до 8. Флаг был добавлен в fish 3.1.
    • ampersand-nobg-in-token, с которым символ & считается частью токена, если находится в середине слова, а не запускает фоновый процесс. Например echo foo&bar выведет «foo&bar» вместо запуска в фоне echo foo и выполнения команды bar. Флаг был добавлен в fish 3.4.

Для отключения этих флагов достаточно добавить no-regex-easyesc или no-ampersand-nobg-in-token в $fish_features и перезапустить fish:

set -Ua fish_features no-regex-easyesc

Как и stderr-nocaret, эти флаги будут переведены в режим «только чтение» в одном из последующих релизов.

Исправления

  • Пустые переменные цвета теперь интерпретируются как указание использовать цвет, указанный в переменной цвета для более общего типа, а не «normal» цвет (обычно белый в темном терминале). Так, команды
set -g fish_color_command blue
set -g fish_color_keyword

ранее приводили к использованию цвета «normal» для ключевых слов – теперь же ключевые слова окажутся голубого цвета.

  • eval теперь является зарезервированным ключевым словом, недоступным для использования в качестве названия функции. Это изменение дополняет схожие изменения, выполненные ранее для set и read.
  • Командная строка git в информативном (informative) режиме не будет выполнять подсчет неотслеживаемых файлов в репозитории по причине низкой производительности. Включить подсчет можно при помощи переменной $__fish_git_prompt_showuntrackedfiles или отдельно для каждого репозитория в его файле конфигурации git, установив значение bash.showuntrackedfiles в true

Улучшение языка сценариев

  • В кавычках, на подстановку значения переменной более не влияет следующая непосредственно за ней подстановка команды.
  • Исправлена регрессия обработки подстановок команд, следующих сразу за экранированным символом $ (например, echo \$(echo)).
  • Команда math теперь распознает символ _ в числах как визуальный разделитель: math 5 + 2_123_252.
  • math min и math max поддерживают обработку произвольного числа аргументов.
  • Команда read теперь выполняется быстрее, если запущена как последний процесс в конвеере.
  • Некоторые функции, поставляемые в комплекте fish, выводили ошибки на стандартный вывод – теперь ошибки выводятся на stderr, как и должны.
  • jobs выводит использование CPU в процентах.

Улучшения привязок

  • Alt+S вставляет doas на системах без sudo.
  • Специальная функция kill-whole-line вырезает перенос строки, предшествующий последней строке, что исправляет поведение dd в vi-режиме, когда курсор находится на последней строке.
  • Новая специальная функция kill-inner-line вырезает строку, сохраняя перенос строки, что исправляет поведение cc в vi-режиме.

Дополнения команд

Дополнения команд были добавлены для:

  • archlinux-java
  • apk
  • brightnessctl
  • efibootmgr
  • fastboot
  • optimus-manager
  • rclone
  • sops
  • tuned-adm
  • wg-quick

Команде complete теперь можно передавать несколько параметров --condition, дополнение будет выполняться только при выполнении всех указанных условий – это должно улучшить работу кэширования.

>>> Подробности

★★★★

Проверено: maxcom ()

Ответ на: комментарий от maxcom

Если в МС нажать F1 (в shell соединении) то выдает:


Файловая система FISH (FIle transfer over SHell)

Файловая система fish - это сетевая файловая система, которая позволяет работать с файлами на удаленном компьютере так, как если бы они были расположены на вашем диске. Для того, чтобы это было возможно, на удаленном компьютере должен быть запущен fish-сервер, или bash-совместимая оболочка shell.


Я думал что он уже лет 15 как rip.

mx__ ★★★★★ ()
Последнее исправление: mx__ (всего исправлений: 2)
Ответ на: комментарий от goingUp

Это что-то типа bash

Понял, это значит если симлинк bash заменить на fish, то любой скрипт будет с*ать всеми цветами радуги с допвозможностями и командами, например, да?

xwicked ★★ ()
Ответ на: комментарий от xwicked

Прикол в том что не будет. Он не sh и bash совместимый шелл. Так что скрипты на bash придётся обрабатывать с помощью bash. Fish это чтобы нескучно интерактивно по кнопкам стучать более по другому чем в bash и zsh. Почти так же, но по другому, не как все.

Jameson ★★★★ ()
Ответ на: комментарий от Jameson

Только везде стоит баш, а не более лучший. И кто будет писать на фише скрптуху, если нет гарантии, что у пользователя она запустится.

ox55ff ★★★★★ ()
Ответ на: комментарий от endlessend

Ты идеому не понял просто. То что ты ответил это и есть «исправление фатального недостатка». «Фатальный недостаток» означает «что либо уже придуманное, но не нами, а ими, поэтому мы сделаем то же самое, но совсем совсем другое». Это такой сарказм.

Jameson ★★★★ ()
Ответ на: комментарий от ox55ff

А никому это и не надо. Его в первую очередь используют как интерактивный шелл. Скрипты можешь на чем угодно писать, хоть на том же bash, например.

Ja-Ja-Hey-Ho ★★★ ()
Ответ на: комментарий от ox55ff

Ну вот никто и не пишет. Вообще фиш не про «скриптуху», про это остаётся баш, повторяю, фиш это для того чтобы модно и молодёжно интерактивно печатать буквы в консоль. «Скриптуха» в фиш тоже есть, но она для того чтобы тот кто интерактивно в фиш в консоль печатает сам себе приятно делал.

Jameson ★★★★ ()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от Oldboy

Вкусовщина. Пробовал fish, zsh, в итоге остался bash. Тупо потому что он всюду уже есть, и мне стало лень консоль украшать и настраивать. Но если ты в творческом поиске идеала - попробуй их все и реши. Так то они все прекрасны, каждый по своему, просто мне стало насрать.

Jameson ★★★★ ()
Ответ на: комментарий от Oldboy

Ну прекрасно, у меня тоже, но из коробки. Я вообще стал ленив и дефолты интерфейсов больше не трогаю, мне проще привыкнуть к тому что «из коробки» чем тратить время на настройку под себя. Я в ОС с программами работаю, а не с самой ОС. От ОС мне требуются только две вещи — чтобы она нужные мне программы запускала, и чтобы я её при работе не замечал.

Jameson ★★★★ ()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от xwicked

Ну кому то нужно же. У него много поклоников. А для баш скриптухи никто не отбирает у пользователя фиш баш, как пакетный интерпретатор этой скриптухи. Просто мы привыкли что баш - он и командный, и скриптовый интерпретатор. Но ничто не запрещает использовать разные сущности для интерактивного ввода команд и для обработки скриптов.

Jameson ★★★★ ()
Последнее исправление: Jameson (всего исправлений: 2)

Достойная новость, есть на кого равняться! :)

Как и stderr-nocaret, эти флаги будут переведены в режим «только чтение» в одном из последующих релизов.

Жду и надеюсь в следующем релизе.

Улучшение языка сценариев: jobs выводит использование CPU в процентах, Некоторые функции, поставляемые в комплекте fish, выводили ошибки на стандартный вывод – теперь ошибки выводятся на stderr, как и должны.

Удобно и привычно. Так и должно было быть ещё при релизе Fish Shell 3.0.

Улучшения привязок: Alt+S вставляет doas на системах без sudo.

Как раз недавно ругался на эту тему. Ещё один шаг в сторону от sudo к doas.

Сам Fish Shell - хорошая интерактивная оболочка. Рекомендую к ознакомлению.

TagMoon ()
Последнее исправление: TagMoon (всего исправлений: 1)
Ответ на: комментарий от TagMoon

Сам Fish Shell - хорошая интерактивная оболочка. Рекомендую к ознакомлению.

Что касается языка для написания скриптов, Fish — это песня по сравнению с Bash: не надо переменные по сто раз оборачивать в кавычки, гораздо более удобная работа с массивами. Жалко, конечно, что никогда не будет мейнстримом.

morozov ()
Ответ на: комментарий от Jameson

Просто мы привыкли что баш - он и командный, и скриптовый интерпретатор. Но ничто не запрещает использовать разные сущности для интерактивного ввода команд и для обработки скриптов.

Я думал, что в нашем мирке многое, если не всё стремиться к снижению ментальной нагрузки, а тут предлагается её удвоить.

Возникает логичный вопрос: «Fish действительно настолько хорош?», м?

ssh2 ★★★ ()
Ответ на: комментарий от ssh2

а тут предлагается её удвоить.

Нагрузка удваивается и при использовании допиленного bash или zsh.

Fish действительно настолько хорош?

Да. У него отличные значения по умолчанию. То, что в zsh делается не одним десятком плагинов, в fish есть из коробки и нативно.

Siborgium ★★★★ ()
Ответ на: комментарий от Jameson

мне стало лень консоль украшать и настраивать

В плане именно украшательств, еще не видел шелл, в котором можно бы было что-то такое, чего нельзя в баше. Основное отличие между башем, зсх, фишем и остальными в автокомплите. А, еще в зсх можно часики в реальном времени в PS1 запихать. Но это вроде все.

Dog ()

Нормальная штука, хоть и плохо совместимая с чем либо

antonvaino ()
Ответ на: комментарий от pihter

А что за vi-режим? То что я думаю?

Режим, в котором предоставляются vi-подобные привязки клавиш, режимы из vi (нормальный/ввода/выделения).

Сам пользовался?

Да, пользовался. Довольно удобно. Для набора длинных команд Alt+E (открывает команду в текстовом редакторе) бывает удобнее, но там нет дополнения, а в vi-режиме – есть.

Siborgium ★★★★ ()
Ответ на: комментарий от Dog

В плане именно украшательств, еще не видел шелл, в котором можно бы было что-то такое, чего нельзя в баше.

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

В этом плане, на мой взгляд, bash < zsh < fish.

Siborgium ★★★★ ()
Ответ на: комментарий от Siborgium

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

Dog ()
Ответ на: комментарий от Dog

которые делаются один раз и надолго

А зачем этим заниматься, если в fish текст уже покрашен?

и удобство в данном случае не перешивает минусов самого шелла.

Каких? Минус один: несовместимость в POSIX shell/bash.

Siborgium ★★★★ ()
Ответ на: комментарий от Siborgium

А если мне не нравится,как он покрашен по дефолту?)

Dog ()
Ответ на: комментарий от Jameson

Так что скрипты на bash придётся обрабатывать с помощью bash

вроде казалось, что на фише запускаются башевские скрипты, у меня только один раз не сработало, когда развертывал venv питоновский и то потом увидел что есть для fish настройка.

sol13 ★★★★★ ()
Ответ на: комментарий от Jameson

От ОС мне требуются только две вещи — чтобы она нужные мне программы запускала, и чтобы я её при работе не замечал.

Тогда почему ты на linux форуме?

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

Зачем ты мучаешь себя? Windows 11 для ленивых пацанов!

Oldboy ()

Пользуюсь уже года 4. Лучший шел, пользоваться одно удовольствие с его автодополнением. Долгих лет проекту.

Raziel ()
Ответ на: комментарий от ox55ff

кто будет писать на фише скрптуху, если нет гарантии, что у пользователя она запустится

Карты на стол - сколько скриптов ты написал для других, а не для себя?
Я свой, мне можешь сказать правду

zolden ★★★★★ ()
Ответ на: комментарий от zolden

Скриптов 10 на три проекта, которые у меня были на работе и которые запускаются на машинах наших клиентов. Ещё больше скриптов делал для внутренней инфраструктуры разработки. И, не поверишь, ни у кого нет фиша. Представляю ситуацию на митинге: ну я таски конечно сделал, но они ни у кого работать не будут. Или предлагаешь мне всю команду агитировать на переход на фиш?

ox55ff ★★★★★ ()

Очередных GPL-погремушек подвезли. А для работы хватит sh.

untitl3d ()
Ответ на: комментарий от ox55ff

Тот, кому не нужно запускать её «у пользователя». Или тот, кто может диктовать «пользователю» условия.

Ваш кэп.

intelfx ★★★★★ ()
Ответ на: комментарий от ox55ff

И кто будет писать на фише скрптуху, если нет гарантии, что у пользователя она запустится.

Скриптуху нужно писать не на Fish и не на Bash, а на вменяемых скриптовых и других языках.

Это очень хорошо, что разработчики многих UNIX-like систем перестают мазаться калом и Bash-лапшу и говнокодеров на ней выжигают отовсюду калёным железом, оставляя за Bash, Fish или Zsh лишь функции интерактивного Shell’а.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)

Не совсем понимаю преимущество использования шелла вместо нормальных файловых менеджеров вроде mc, ranger, nnn.

tt ()

Годно. Пользуюсь уже несколько лет.

m16a1 ()
Ответ на: комментарий от Siborgium

Нагрузка удваивается и при использовании допиленного bash или zsh.

Я если честно не понимаю, что в bash можно украшать, положил в ~/ файл с алиасами и локальными заморочками вроде привычного PS1 и путей, убедился, что последние работают и всё, пользуйся.

Да. У него отличные значения по умолчанию. То, что в zsh делается не одним десятком плагинов, в fish есть из коробки и нативно.

Тот случай, когда узнал что у zsh есть плагины из цитаты выше. :)

Сложно всё, буду и далее ksh использовать.

ssh2 ★★★ ()
Ответ на: комментарий от tt

А почему бы и нет? Имхо в консоли кое-что получается даже более просто, а остальное примерно так же.

ssh2 ★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.