Релиз Fish Shell 4 - командная оболочка перешла на Rust с обновлениями скриптов

2025-02-28 5251 комментарии
Командная оболочка Fish Shell 4 перешла на Rust. Обновлены привязки клавиш, поиск по истории, совместимость с терминалами через OSC 133 и обработка длинных команд

Проект Fish Shell, известный своей удобной и интуитивно понятной оболочкой для командной строки, представил четвертую версию — Fish Shell 4. Этот релиз стал значительным шагом вперед, поскольку оболочка была полностью переписана на языке Rust. Несмотря на масштабные изменения в кодовой базе, для пользователей переход останется практически незаметным: команды, настройки и типичные взаимодействия сохраняют свою привычную функциональность.

Fish Shell — это командная оболочка для Unix-подобных систем, разработанная для удобства пользователей. Она предлагает автодополнения, подсветку синтаксиса и простой синтаксис скриптов, не требуя сложной настройки. В отличие от Bash, Fish изначально ориентирован на интерактивное использование и интуитивность.

Что нового в Fish Shell 4

Переход на Rust

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

Улучшенные привязки клавиш и совместимость с терминалами

Одним из заметных нововведений стала обновленная система привязки клавиш. Теперь пользователи могут заменять сложные последовательности на более интуитивные команды, такие как bind ctrl-right. Благодаря поддержке протокола Kitty и функции modifyOtherKey, Fish Shell 4 может различать управляющие последовательности, которые ранее казались идентичными.

Интеграция с возможностями терминалов

Fish Shell 4 теперь автоматически использует OSC 133 последовательности для вывода подсказок и результатов команд. Это улучшает синхронизацию с различными терминалами, которые ранее требовали дополнительных скриптов для интеграции. Также стандартизированы изменения курсора в vi-режиме, что устраняет проблемы, связанные с особенностями окружения.

Улучшения в работе с длинными командами

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

Новые функции для пользователей

Улучшенный поиск по истории

Функция поиска по истории, впервые представленная в Fish 3.6, была доработана. Теперь пользователи могут использовать синтаксис glob для более точной фильтрации записей. Поиск ограничивается текущей командой, что упрощает восстановление сложных многострочных команд.

Обновленная тема по умолчанию

Тема по умолчанию получила небольшое, но важное изменение: команды теперь отображаются в "нормальном" цвете терминала вместо трудного для чтения синего. Пользователи могут сохранить свои текущие настройки, если не перезагрузят тему вручную через fish_config.

Самостоятельная установка

Новая функция самостоятельной установки (self-installable) позволяет пользователям запускать Fish Shell на серверах без прав администратора. После компиляции можно использовать единый бинарный файл, который извлекает все необходимые компоненты (функции, man-страницы и инструмент веб-конфигурации) в домашний каталог. Это особенно полезно для сред, где отсутствует доступ к пакетному менеджеру. Сборки доступны для x86_64 и aarch64 Linux на странице GitHub. Для других платформ нужна ручная компиляция.

Исключение команд из истории

Долгожданная функция исключения команд из истории теперь доступна. Пользователи могут определить функцию fish_should_add_to_history, чтобы указать, какие команды следует сохранять. Исключенные команды временно остаются доступными для повторного использования, но удаляются после выполнения следующей команды.

Улучшения для разработчиков скриптов

Fish Shell 4 предлагает несколько улучшений для любителей написания скриптов:

  • Команда string match теперь поддерживает опцию --max-matches, позволяющую ограничить количество обрабатываемых совпадений.

  • Циклы for больше не запоминают локальные переменные из предыдущих итераций.

  • Команда set получила опцию --no-event для подавления событий изменения переменных.

  • Команда time теперь измеряет время выполнения с учетом подстановок команд.

  • Команда complete --erase полностью отключает автозагрузку завершений для указанных команд.

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

Подробнее о всех нововведениях можно узнать в официальном анонсе.

© . По материалам linuxiac
Комментарии и отзывы

Нашли ошибку?

Новое на сайте