LINUX.ORG.RU

Fish 3.5

 ,

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 ()
Последнее исправление: cetjs2 (всего исправлений: 3)
Ответ на: комментарий от 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)
Ответ на: комментарий от Jameson

Прикол в том что не будет.

Значит очередное не нужно... :(

xwicked ★★☆
()
Последнее исправление: xwicked (всего исправлений: 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 ★★★★★
()
Ответ на: комментарий от Oldboy

Что же выбрать?

Zsh, или bash, но только не fish.

Odalist ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.