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














