30.06.2022

Опубликован Fish 3.4.0

Fish — Friendly interactive shell, предоставляющий удобный интерфейс командной строки и предназначенный для интерактивного использования.

Наиболее значимые изменения, вошедшие в релиз:

Дополнен синтаксис подстановки команд, теперь $(cmd) имеет тот же смысл, что и (cmd), но может использоваться внутри двойных кавычек, чтобы предотвратить разбиение вывода.

# теперь команда
foo (bar | collect strings)
# эквивалентна
foo "$(bar)" # а foo (bar)
# можно записать как
foo $(bar)

Как и команда prompt, команда fish_config получила встроенную подкоманду theme, что позволяет настраивать тему не выходя из терминала (ранее открывался браузер).

Команды set и read получили аргумент --function для определения переменных в области видимости всей функции.

function demonstration if true set --function foo bar set --local baz banana end echo $foo # выведет "bar" потому что $foo все еще существует echo $baz # ничего не выведет, так как $baz вышел из области видимости
end

Команда string pad теперь корректно обрабатывает известные fish управляющие последовательности, а команда string length получила аргумент --visible, при использовании которого она вычислит «видимую» длину переданной ей строки — количество ячеек терминала, которые она займет при выводе.

Производительность глоббинга значительно возросла, особенно на системах с glibc. На некоторых образцах время на выполнение глоббинга уменьшилось почти вдвое.

Автоподсказки теперь можно отключить, установив $fish_autosuggestion_enabled в 0, а подсветку (почти) полностью выключить, выбрав тему «None» — не отключаются только необходимые для работы цвета, например, те, что используются для различения подсказки и актуального содержимого командной строки.

Исправлено CVE-2022-20001 — потенциальная дыра в безопасности, позволяющая исполнять произвольные команды, определяемые содержимым репозитория. Исправление заключается в переопределении команды git функцией fish_git_prompt.

Добавлен флаг ampersand-nobg-in-token, при установке которого амперсанд работает как оператор только если за ним следует разделитель.

echo foo&bar # напечатает "foo&bar", вместо запуска "echo foo" в фоновом режиме и запуска "bar"
echo foo & bar # запустит "echo foo" в фоне и затем запустит "bar"
# с установленными флагами ampersand-nobg-in-token и qmark-noglob аргумент в этой команде не содержит специальных символов
open https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be

Флаги могут быть установлены во время запуска с помощью fish --features ampersand-nobg-in-token,qmark-noglob или с помощью универсальной переменной fish_features:

set -Ua fish_features ampersand-nobg-in-token

Символ _ теперь является зарезервированным ключевым словом.

Mac OS X 10.9 более не поддерживается. Теперь минимальная версия Mac – Mac 10.10 «Yosemite».

Также в этой версии внесено значительное количество иных улучшений и исправлений, о которых можно прочитать по ссылке.

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

Источник.