30.06.2022

Fish 3.5

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, дополнение будет выполняться только при выполнении всех указанных условий – это должно улучшить работу кэширования.

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

Источник.