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