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