LINUX.ORG.RU

Fish Shell 4.0

 , ,

Fish Shell 4.0

0

3

Командная оболочка 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)

Рыбонька! Ржавенькая!

Вообще список изменений выглядит приятно. Именно благодаря тому, что там нет чего-то фундаментального (это, очевидно, давно реализовано нормально в любом нормальном шелле), но всё ещё есть весьма активное развитие именно «для людей» — то, что направлено на удобство пользователя. Это достаточно круто, что до сих пор есть куда развивать такую, казалось бы, давно «доделанную» вещь, как шелл, и при этом это не изменения ради изменений и «перестановка кроватей».

Не знаю уж, насколько им действительно было нужно это переписывание на Rust. Кажется, что это скорее от того, что некуда было уже девать энергию и энтузиазм, нежели от объективной необходимости. Но я к расту отношусь нейтрально — не «убийца всего на свете, особенно ваших небезопасных сей», но и не «рак, пожирающий опенсорс» — язык как язык, обычный, со своими плюсами и минусами.

Это я всё к чему… Такие новости всегда у меня вызывают некоторый порыв попробовать поюзать самому. Последний раз я тыкал fish давно. Некоторые фишки (каламбур не намеренный) понравились, но каких-то значимых для себя преимуществ перед моим любимым zsh я не нашёл. Но подумываю о том, чтобы опять попробовать.

Вообще основной минус, как по мне — это синтаксис. Он же при этом и плюс, конечно — он практически объективно более адекватный. Но он не совместим с классичесим Bourne Shell, POSIX и т.д. — в отличие от bash, zsh, dash и иже с ними. Не знаю, насколько сильно это будет неудобно мне или ещё кому-то, привыкшему к стандартному синтаксису за десятки лет. Аналогично, примеры команд из этих ваших интернетов обычной копипастой могут из-за этого не работать. Конечно, всегда несложно поправить, зная особенности — но да, это предполагает знание именно обоих синтаксисов (то есть в какой-то степени убирает преимущество «более адекватного»), да и в принципе лишние телодвижения.

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

Но наверное дам ему ещё шанс… когда прям совсем скучно будет, и захочется что-нибудь попробовать.

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

Ну libc это libc. Непонятно, впрочем, ради чего они его с собой таскают.

CrX ★★★★★
() автор топика

Попробовал и снова снёс из-за кривой работы с MidnightCommander при скрытых панелях.
После Ctrl-O не работают «курсорные» клавиши.
Вот что происходит: https://0x0.st/8mjw.08.mp4.
Хотя в Midnight Commander 4.8.33 «Улучшена поддержка командной оболочки Fish 4.0».

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

Командная оболочка Fish Shell, популярная

Ну, самая популярная после Bash и ZSH. Но можно убрать, если не нравится.

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

Буду честен: я брал за основу новость тут: https://linuxiac.com/fish-shell-4-is-here-entirely-rewritten-in-rust/, и перевёл «multi-line history reconstructions without rummaging through entire scripts.» без полного понимания.

Поправил на другое, более подробное по факту, а «It also only applies to the current command, so you can build bigger multiline scripts with it, instead of searching for the entire script.» вообще не стал упоминать в новой версии.

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

На форуме уже пару-тройку раз упоминалась https://ngs-lang.org.

A modern programming language for DevOps

Next Generation Shell is a modern programming language that focuses on "DevOps"y use cases.

NGS utilizes a subset of bash syntax for running external programs and provides additional facilities for ergonomic experience: exit codes handling, output parsing, etc.

Data manipulation is convenient. NGS provides map, filter and other primitives for basic functional programming, uniquely extended to support patterns.

Потихоньку пилят в https://github.com/ngs-lang/ngs/tree/dev.

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

Что за «реконструкции»?

Наверное скрипт-блоки из истории выводит как есть, а не в одну строку, как это делает bash.

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

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

dataman ★★★★★
()

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

MoldAndLimeHoney
()

Честно, в первые о такой слышу. А если на Раст, то и нет никакого желания даже пощупать. Ибо мало того что получается скорее всего жирный бинарник, так ещё в сообществе Раст хватает откровенно враждебно настроенных людей, что для меня достаточно важно, так как я не готов пользоваться продуктом от людей, которые его пишут или/и распространяют с очень негативной энергией.

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

корее всего жирный бинарник

Статическая сборка — 14,5МБ.

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

А что твой таролог про это говорит? :)

AP ★★★★★
()

Началось…
https://github.com/fish-shell/fish-shell/issues/11187

Fish 4.0.0 only says "Segmentation Fault (core dump)
Hey, right after upgrading to 4.0.0 my Fish shell began to Segmentation Fault (core dumped). Even if I pass some options, it still does the same thing before exiting. As a programmer who has dealt with this error before I have decided to launch fish with lldb (even though I don’t think the binary is built in debug mode), but all I see it a single-frame stack trace with the top entry being 0x0.

Once I have figured out how to upload a core dump I’ll do so.

Thanks

Edit: if you need any more info feel free to ask

Edit 2: I am running the https://github.com/fish-shell/fish-shell/releases/download/4.0.0/fish-static-amd64-4.0.0.tar.xz build

dataman ★★★★★
()

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

От себя добавим — терминалов на MacOS. И чем их (то есть — нас) там zshell не устраивает?... Меня так вполне.

Посмотрел я на этот фиш и пользовать не стал. «Не пригодилось» (с)

gns ★★★★★
()

Можно закапывать

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

Ну вот на Маке приходится. Там баш искаропки какой-то доисторический по лицензионным соображениям. По дефолту там z-shell.

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

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

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

Какой-нибудь режим совместимости с башем планируется

Для чего? Этот шелл имеет смысл только для интерактивного использования. Удобная история и автокомплит. Скрипты на нём писать никому нафиг не упало.

no-such-file ★★★★★
()
Ответ на: комментарий от buddhist

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Скрипты на нём писать никому нафиг не упало.

Внезапно, какие-то однострочники бывают нужны и в интерактивном режиме. Помнить несколько разных синтаксисов не упало.

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

1% от 1% от 1%?

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

Единственный шелл, которым было реально комфортно пользоваться без настройки вообще.

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

какие-то однострочники бывают нужны и в интерактивном режиме

Для этого можно в bash перейти. На кой чёрт переписывать bash с нуля внутри fish?

no-such-file ★★★★★
()
Ответ на: комментарий от dataman

у меня ни разу не падала и не падает

Аналогично. Но мне особенно интересно, как они теперь будут выкручиваться. Будет хороший пример применения раста в чём-то реальном, с реальными проблемами.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Скрипты на нём писать никому нафиг не упало.

Скрипты на нём писать конечно не стоит, но всякие свои функции и алиасы вполне можно

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

Был бы, думаю. Но он же несовместим.

реально комфортно пользоваться без настройки

Пользуюсь ksh и rc без настройки, полёт нормальный.

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

популярная

1% от 1% от 1%?

Это все от того что многие не знают что темы в fish можно настраивать прямо в браузере через fish_config, иначе популярность была бы намного выше 😀

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

Пользуюсь ksh и rc без настройки, полёт нормальный.

Страдание как повод к развитию ?

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

Внезапно, какие-то однострочники бывают нужны и в интерактивном режиме

Я для этого выполняю однострочник в виде bash -c '...'. Надо бывает пару раз в месяц.

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

Помнить разные синтаксисы не надо, где-то тут я уже это писал, в фише однострочники баша запускаются так: bash -c "твой однострочник"

masa ★★
()
Ответ на: комментарий от no-such-file

Но мне особенно интересно, как они теперь будут выкручиваться.

А меня больше интересует, почему все эти крутые программисты на «modern С++ 20/23/26» до сих пор не форкнули fish?
Автор Contour начал Endo, но дело пока меееедленно идёт.

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

Для звёздочек на Гитхабе. Попутно можно заработать, наверное.

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

Даладно, $(command) весьма полезнее, чем `command`

$(command) и даже (command) поддерживаются фишем нативно

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

Для меня стало последней каплей, когда fish обосрался на $( pkg-config --libs ... ), а я долго не мог понять, что я делаю не так. А потом как понял! что такой футбол нам не нужен.

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

YMMV. За 5-6 лет использования сабжа количество не взлетевших скриптов могу пересчитать по пальцам одной руки. А времени, сэкономленного на одном только удобном автодополнении — часы, если не дни.

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

Для этих целей есть как минимум Bass и Replay

Я fish хотел как «zsh без пердоллинга», основной поинт был в том, что ничего настраивать не надо, все удобно и работает из коробки.

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

Я раз за тебя, если тебе этот шелл зашел. Из того, что я вижу по сравнению с zshell, да типа поиск по истории встроили прямо в набор текста. Мне бы это мешало. Не люблю навязчивый искусственный интеллект. :) Если нравится, то и пользуй.

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