LINUX.ORG.RU

Fish Shell 4.0

 , ,

Fish Shell 4.0

0

4

Командная оболочка Fish Shell, популярная среди пользователей терминалов, обновилась до версии 4.0, которая принесла значительные изменения и улучшения.

Основное новшество заключается в том, что Fish Shell теперь полностью переписана на языке программирования Rust. Однако для обычных пользователей этот переход будет практически незаметен: команды, настройки и типичные взаимодействия останутся прежними.

Другие значимые изменения изменения

  • Новая система привязки клавиш. Fish Shell 4.0 представляет обновленную систему привязки клавиш и более глубокую совместимость с терминалами. Теперь можно заменить неинтуитивные esc-последовательности на более человекочитаемые команды, такие как bind ctrl-right. Благодаря поддержке протокола клавиатуры Kitty, Fish может различать последовательности управления, которые ранее казались идентичными, например bind ctrl-i, bind ctrl-I и bind tab.
  • Интеграция с возможностями терминала. Fish теперь автоматически использует последовательности OSC 133 для подсказок и вывода команд, что способствует более гладкой синхронизации с различными терминалами, которые ранее полагались на дополнительные скрипты интеграции оболочки.
  • Улучшенная обработка длинных команд. Оболочка теперь более аккуратно обрабатывает длинные командные строки, прокручивая их вместо неправильного отображения. Любые изменения, вызванные привязками командной строки, сразу видны, что обеспечивает более интуитивный опыт работы.
  • История команд. Пейджер истории команд, впервые представленный в Fish 3.6, был доработан. Теперь можно использовать синтаксис glob для более точной фильтрации записей истории, например, поиск по * glob syntax - git*HEAD выдаст всё, где есть git и HEAD именно в таком порядке.
  • Новая тема по умолчанию. В новой версии тема по умолчанию была слегка изменена: команды теперь отображаются в «нормальном» цвете терминала вместо трудночитаемого «синего». Существующие пользователи сохранят свои текущие настройки, если не перезагрузят тему вручную через fish_config.
  • Самоустанавливаемые сборки. Новая функция самоустанавливаемых сборок может стать настоящим прорывом для пользователей, часто работающих через SSH на серверах без административных привилегий. После компиляции Fish можно запустить один самодостаточный бинарный файл, который извлекает все необходимое — функции, страницы руководства и даже веб-инструмент настройки — в домашний каталог.
  • Исключение команд из истории. Наконец появилась долгожданная функция, позволяющая исключать определенные команды из истории. Определив пользовательскую функцию fish_should_add_to_history, можно точно решить, какие команды будут сохранены.
  • Улучшения для скриптинга:
    • string match теперь поддерживает опцию --max-matches, позволяющую ограничить количество обрабатываемых совпадений;
    • циклы for больше не будут запоминать локальные переменные из предыдущей итерации;
    • set получает опцию --no-event для подавления событий изменения переменных;
    • time начинает измерение раньше, захватывая продолжительность любых подстановок команд до их выполнения;
    • complete --erase полностью отключает автозагрузку завершений для указанных команд.

>>> Полный список изменений и релиз на GitHub

>>> Подробности в блоге fishshell.com

★★★★★

Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 5)
Ответ на: комментарий от MoldAndLimeHoney

когда fish обосрался на $( pkg-config –libs … )

А что с ним не так ?

Welcome to fish, the friendly interactive shell v3.7.1-2166-gfe63775ec
Type help for instructions on how to use fish
❯ echo $( pkg-config --libs zlib ncurses libiio )
-lz -lncurses -ltinfo -liio 
❯
alx777 ★★
()
Ответ на: комментарий от gns

Вроде бы работает, но неудобно, слишком много клавиш перехватывает сам mc. Лучше Ctrl+Z нажать в миднайте и запустить что надо, или просто новый таб в терминале запустить.

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

Ну справляются. Вопрос привычки. Только сами китайцы не всегда понимают на слух, какой иероглиф надо писать. Поэтому и придумывают «стандартный набор».

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

Оно такое же дерьмовое и с башем. Искренне не понимаю кто этим пользуется и зачем. Без таба и бэкспейса что-то набрать в шелле это страдание.

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

Судя по сообщениям с полей, версия 4.0 перестала :)

gns ★★★★★
()
Ответ на: комментарий от gns
~ ❯ bash --version  | head -1                                                     
GNU bash, версия 5.2.37(1)-release (aarch64-apple-darwin24.0.0)
~ ❯ which bash                                                                    
/opt/homebrew/bin/bash

в чем проблема сделать brew install bash? ну кроме того, что он тебе не нужен)

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

если верить доке, то export даже не надо менять:

       The following commands have an identical effect.

          set -gx PAGER bat
          export PAGER=bat

хотя у меня в каких-то случаях переменную не было видно после экспорта, а с set -gx все нормально

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

Чот вот это мне в голову не пришло. Спасибо :) Видать, действительно не нужен. Как-то вот поставил рекомендованные автокомплишены для zshell и меня все вдруг начало устраивать.

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

Ну для этого тот же Будда советовал избавляться от желаний :)

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

В киношках тоже хакеры отбивают чечётку на клаве и взламывают Пентагон, а жизнь… как Пушкин где-то говорил, что лучшие строки ему приходили, когда он сидел в полузабытьи и слюна стекала по щеке на сюртук 😁

papin-aziat ★★★★★
()
Ответ на: комментарий от gns

Способы записи некоторых языков так вообще ужасны, например, китайского.

Кстати, да, мало языков могут похвастаться красивой письменностью, наверное только английский из популярных (хотя апострофы…) и латинский в современном исполнении может быть, ну и русский (ясное дело), если опять же закрыть глаза на «ё» и «й».

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

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

gns ★★★★★
()
Ответ на: комментарий от papin-aziat

Пока вы не ушли от этого сликом далеко, включу важного душнилу:

Язык и письменность — СОВСЕМ разные вещи. Рассматривайте их отдельно, пожалуйста. А то прям совсем кринжово.

CrX ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Ну вот выкурил последнюю сигару, положил восьмеричные счеты на макбук и копит деньги на новый смокинг :)

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

Да разный, разный. Иные языки по несколько письменностей сменили. И ничего, живут.

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

А то прям совсем кринжово.

Кринжово, это когда вы пишите о fish «популярный среди пользователей терминалов» прямо в теме новости.

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

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

Кстати, у древних вроде даже «V» не было, у меня есть Тацит (по методу Франка), очень неудобно на первый взгляд (второй я не осилил 😁).

papin-aziat ★★★★★
()
Ответ на: комментарий от CrX

Сегодня Трамп спрашивает Зеленского: «У тя ваще есть костюм?» А тот (согласно твоей логике) должен был бы сказать: «Рассматривайте меня отдельно от моей потной футболки.»

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

Кстати, у древних вроде даже «V» не было, у меня есть Тацит (по методу Франка), очень неудобно на первый взгляд (второй я не осилил 😁).

Наоборот, U не было. U и V одной буквой. :) Есть чудное приложение для андроида и всего Эппла, SPQR называется. К сожалению, за деньги. Сборник словарей, учебников всех времен и кучи латинских текстов. Из известного, я там только Плиния Старшего не нашел. А так и De Bello Gallico, и Светоний, и Тацит, и все поэты.

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

V вместо U? Возможно, наверно это была одна и та же буква. В любом случае в моём тексте везде вместо v стоит u. Походу они ещё и [v] не выговаривали 😁

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

Выговаривали они все. Просто на письме использовали одну букву. Звуки

[u] и [v]
в языке были всегда. Иначе как бы существовал Gaivs Jvlivs Caesar, например? :) Есть современные учебники, которые в дидактических целях используют античную орфографию. Привыкаешь к этому быстро, примерно как к твердым знакам в дореформенном русском.

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

Jvlivs

J — такой йот вроде только в средневековье добавили.

Выговаривали они все. Просто на письме использовали одну букву.

Наверное, но по приколу же можно предположить, что было что-то типа [w], поэтому и не могли определиться 😁

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

Нет, все эти w - это германское заимствование. Звука и буквы W в латыни отродясь не было. Место на письме экономили :)

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

Звука и буквы W в латыни отродясь не было.

Про букву понятно. А вот про звуки трудно быть категоричным. Возьмём современный русский язык, где точно нет [w], однако всё чаще и настойчивее слышим и лингвисты уже отмечают целые группы людей склонных (по непонятным причинам) вместо «вэ» и «лэ» говорить какое-то невнятное «wэ» (первое губное, второе альвеолярное), мда… Так что за тыщу лет чего там только не могло быть.

papin-aziat ★★★★★
()
Ответ на: комментарий от gns

Мне не пригодится: для музыки используем итальянский вариант, а для себя (после разбора некоторых вариантов) я окончательно выбрал наш классический (то есть немецкий) вариант, как наиболее выразительный.

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

Для музыки так оно просто итальянский, насколько я понимаю. Хотя темпы сейчас пишут кто во что горазд. :) Или тупо четверть = 115 вместо Moderato. Сейчас названия темпов только на старорежимном метрономе с маятником увидишь :)

gns ★★★★★
()
Ответ на: комментарий от papin-aziat

Ну это да, на языке оригинала. Особенно в свете движения за аутентичное исполнение. Я вот записи Филипа Пикета и New London Consort очень люблю.

gns ★★★★★
()
Ответ на: комментарий от papin-aziat

J — такой йот вроде только в средневековье добавили.

Кстати, да. Чот не заметил, спасибо. Про UV помнил, а тут чот... :(

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

Только тексты-то средневековые или более поздние, и даже бывает новодел 🙂

У нас нет античной музыки, поэтому древняя латынь (с точки зрения фонетики) — интерес лингвистов да филологов, как-то так. Чего там и как реставрируют, безусловно, интересно, но это всё (при всём уважении) — гипотезы, а вот отголоски аутентичных (хотя и не таких древних) живых голосов мы и сегодня можем услышать в григорианском хорале, чтении молитв и писаний в исполнении монахов из разных частей Европы. Конечно, надеяться на то, что они близки к средневековым сильно не стоит, но традиции должны оставить отпечаток, так что это самое надёжное да ещё и живое.

papin-aziat ★★★★★
()
Ответ на: комментарий от ZogG

Лучше уж тогда https://www.nushell.sh/

Данная shell уже очень интересна. Похоже на стиль Ruby, хоть соединение другое.

# nushell
ls | sort-by size | reverse | first | get name 
# Ruby
ls.sort_by(&:size).reverse.first['name']

p %w{01raz 02dva 03tri 04chetire 11odinadcat}.sort_by(&:size).reverse.first[0..1] # 11
lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 2)
Ответ на: комментарий от lbvf50txt

Сложно точно сказать, давно bash не пользуюсь. Автодополнение в fish непревзойдённое из коробки.

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

nushell похоже на смесь Bash+Ruby+SQL. Сразу три в одном. Должно быть очень удобно.

Если про fish у меня есть попросы, то про nushell - нет.

ps | where status == Running
# => ╭───┬──────┬──────┬──────┬─────────┬──────┬──────────┬─────────╮
# => │ # │ pid  │ ppid │ name │ status  │ cpu  │   mem    │ virtual │
# => ├───┼──────┼──────┼──────┼─────────┼──────┼──────────┼─────────┤
# => │ 0 │ 6585 │ 6584 │ nu   │ Running │ 0.00 │ 31.9 MiB │ 1.2 GiB │
# => ╰───┴──────┴──────┴──────┴─────────┴──────┴──────────┴─────────╯
lbvf50txt
()
Ответ на: комментарий от lbvf50txt

Должно быть очень удобно.

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

dataman ★★★★★
()
Ответ на: комментарий от papin-aziat

Токсичность (ненавижу это переводное гуано, но ближайший смысловой аналог из обычного языка - мерзотность - немного не то по вкладываемому смыслу) коммунити хруста, если брать по гамбургскому счету, медицинский факт. А равно как и агрессивный сектантский прозелитизм с рекламой «серебряной пули» от всего.

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

Начиная с macOS Catalina (версии 10.15), по умолчанию используется Zsh (Z Shell) в качестве основной оболочки командной строки. Ранее, до macOS Mojave (версии 10.14), по умолчанию использовалась Bash.

Речь шла про наличие по дефолту расширения Oh My Zsh! (который и превращает zsh в fish и дохрена чего ещё). Его действительно нет. Более того, по-умолчанию у макосовского zsh и автодополнений нет. Шелл советует при первом запуске поставить пакет автодополнений, что я и сделал. Этого в жизни вполне достаточно. Или я это просто где-то в тырнете нарыл, сейчас уже не помню.

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

А кому-то и команды cut хватает... Не путать с командой cat :)

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