LINUX.ORG.RU

fish 2.5.0

 ,


3

3

Вышла новая версия командной оболочки fish (friendly interactive shell), цель разработчиков которой — создать более интерактивную и удобную альтернативу прочим оболочкам.

Основные изменения:

  • Клавиши Home, End, Insert, Delete, Page Up и Page Down теперь работают при использовании режима с Vi-подобными сочетаниями клавиш.
  • Для сборки новой версии на GNU/Linux требуется g++ 4.8 и новее либо clang 3.3 или новее.
  • Для Ubuntu 12.04, Debian 7 и 64-битных версий RHEL/CentOS 5 и 6 больше не будут публиковаться бинарные сборки.
  • При попытке выйти из оболочки при запущенных фоновых процессах будет появляться предупреждение (при повторной попытке фоновые процессы будут прерваны).
  • С помощью функции random теперь можно выбрать случайное значение из списка (list), сделать это можно с помощью задания аргументов start, stop и step. Также для этого можно использовать новую команду choice.
  • Добавлен режим сочетаний клавиш fish_hybrid_key_bindings, совмещающий Emacs-подобные и Vi-подобные сочетания клавиш.
  • При некорректном объявлении функции теперь возвращается ошибка, в fish 2.3.0 и 2.4.0 функция была бы объявлена в любом случае.
  • С этой версии fish больше не выводит предупреждение при обнаружении запущенной оболочки более старой версии.
  • Улучшена совместимость с Android, MSYS/mingw и Solaris.
  • Теперь test возвращает ошибку при попытке проведения численных операций над некорректными данными.
  • Параметры --authoritative и --unauthoritative функции complete объявлены устаревшими и удалены.
  • status теперь принимает подкоманды (subcommands).
  • Исправлена ошибка, вызывавшая выделение лишнего символа при выделении текста.
  • Исправлены недочёты с индексами списков.
  • Изменено поведение функции fish_mode_prompt, теперь это просто обёртка над fish_default_mode_prompt.
  • Команда alias, запущенная без параметров, теперь выводит список всех алиасов.
  • Функция complete теперь принимает пустые строки в качестве описаний, задаваемых параметром -d.
  • Функция command теперь может быть запущена с параметром -q (--quiet) при использовании параметра --search; использоваться эта функция может для того, чтобы узнать, присутствует та или иная команда в скрипте.
  • Аббревиатуры теперь могут быть переименованы командой abbr --rename.
  • Исправлены проблемы с копированием вывода команды help.
  • help теперь запускает браузер, определённый в переменной $fish_help_browser.
  • Устранены потери данных при слиянии истории.
  • При вводе команды с неверным синтаксисом значение переменной $status теперь становится равным 123.
  • Добавлена функция prompt_hostname, выводящая имя хоста.
  • Функция __fish_man_page теперь распознаёт подкоманды (subcommands). К примеру, при вводе git add и нажатии Alt + H будет выводиться справочная страница (man) для git-add, а не git.
  • Добавлена функция edit_command_buffer для редактирования буферов во внешних редакторах.
  • set_color теперь поддерживает режимы italic (курсив), dim (затемнение) и reverse (реверс).
  • Использование файловых систем, в которых блокировка файла происходит медленно, например некорректно настроенного NFS-раздела, теперь не скажется на производительности fish.
  • Улучшено дополнение команд для apt, fusermount, make, netctl-auto, nmcl, pygmentize и tar.
  • Добавлено дополнение команд для VBoxHeadless, VBoxSDL, base64, caffeinate, dconf, dig, dpkg-reconfigure, feh, launchctl, lxc, mddiagnose, mdfind, mdimport, mdls, mdutil, mkvextract, nvram, objdump, sysbench, tmutil.

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

★★

Проверено: jollheef ()
Последнее исправление: sudopacman (всего исправлений: 6)

Ответ на: комментарий от anonymous

1. Декларативщина так же требует рефакторинга.

2. Если «хорошо написано» и больше не трогать, то да. Но анонимусу же страшно открывать конфиг после многих лет дописываний туда всякого. Вот при дописывании и надо было рефакторить время от времени.

anonymous
()
Ответ на: комментарий от anonymous

Этот баш - ну просто вырвиглазки вырвиручки тем кто его придумал.

баш божественен. хотя бы потому, что это (внезапно!) функциональный ЯП

anonymous
()
Ответ на: комментарий от anonymous

Ну добавь комментариев.

Они есть, но если ты не пишешь скрипты каждый день (я пишу каждый день на более нормальных языках), то никакие комментарии не сделают обскурные обороты zsh понятными без заглядывания в ман.

anonymous
()
Ответ на: комментарий от anonymous

Но анонимусу же страшно открывать конфиг после многих лет дописываний туда всякого. Вот при дописывании и надо было рефакторить время от времени.

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

anonymous
()
Ответ на: комментарий от anonymous

2. Если «хорошо написано» и больше не трогать, то да. Но анонимусу же страшно открывать конфиг после многих лет дописываний туда всякого. Вот при дописывании и надо было рефакторить время от времени.

Добавляй «всякое» в специально отведенное место, не в «основное» (или «стабильное»).

anonymous
()
Ответ на: комментарий от anonymous

я пишу каждый день на более нормальных языках

Если вам shell скриптота вам до лампочки, то очевидно zsh вам не нужен.

без заглядывания в ман.

Не без этого. Ваши предложения? С сабжем смириться?

anonymous
()
Ответ на: комментарий от anonymous

Зачем использовать в коде укороченные конструкции. ИМХО, укороченные конструкции для интерактива.

anonymous
()
Ответ на: комментарий от mandala

Про управление историей мне так ни кто и не ответил.

дополнения не нужны, а история, внезапно, нужна? иди уже отсюда, болезный, или хотя бы пытайся вбрасывать с более консистентной позиции

anonymous
()
Ответ на: комментарий от anonymous

Я сказал что дополнение аргументов зло, но согласился что для наркоманского поделия типа VB это может быть полезно. А про историю и ты мне не ответил, уж не прошу рассказать что именно там улучшили в этом релизе.

mandala ★★★★★
()
Ответ на: комментарий от anonymous

Если вам shell скриптота вам до лампочки, то очевидно zsh вам не нужен.

Не вижу прямой связи. Zsh рулит интерактивными фичами, очень хорошо настраиваются детали поведения.

Не без этого. Ваши предложения?

Не знаю, заглядываю в ман, раз в год не страшно.

anonymous
()
Ответ на: комментарий от anonymous

Согласен, но в момент написания выглядит прикольно :)

anonymous
()
Ответ на: комментарий от anonymous

Позвольте! А кто просил C-шный синтаксис для shell? Я ему рекомендовал, если что, а не себе и не вам.

d_a ★★★★★
()
Ответ на: комментарий от anonymous

Нет-нет-нет, а как же сишный шелл? Кушайте уж теперь, не обляпайтеся только ヽ(~_~(・_・ )

d_a ★★★★★
()
Ответ на: комментарий от anonymous

дополнения не нужны, а история, внезапно, нужна?

Вполне можно эффективно использовать шелл только с тупыми дополнениями (файл / директория / PATH), но активно пользуясь историей. Сложную команду первый раз можно и руками набрать, а потом она эффективно вызывается из истории и редактируется.

Главное HISTSIZE / HISTFILE побольше поставить (и всякие nodups включить, если шелл может).

Такой способ работы более консистентен по сравнению с активным использованием сложных дополнений.

anonymous
()
Ответ на: комментарий от anonymous

баш божественен. хотя бы потому, что это (внезапно!) функциональный ЯП

Яростно плюсую. xargs наше всё.

Баш (да и даже POSIX shell) очень высокоуровневый язык. Надо только учитывать, что системные утилиты для шелла — это как функции для, например, пайтона. Их надо изучать.

И не пытаться на шелле писать в низкоуровневом императивном стиле, манипулируя переменными вручную. Иначе будет много боли.

anonymous
()
Ответ на: комментарий от anonymous

Не вижу прямой связи. Zsh рулит интерактивными фичами, очень хорошо настраиваются детали поведения.

Часть настроек написана на zsh, который дофига вобрал в себя от других оболочек.

anonymous
()
Ответ на: комментарий от anonymous

Да, настройка истории -- первейший момент в изучении shell. Иначе и нет смысла браться. У меня так: https://github.com/Jajauma/dotfiles/blob/master/bash/.bashrc#L87, самое лучшее HISTSIZE -- бесконечное (интересно, когда тормозить начнёт).

PS. Только сейчас кстати, узнал, что дополнение которым я пользуюсь тупое. Умное это видимо как fis^W^W

d_a ★★★★★
()
Ответ на: комментарий от d_a

интересно, когда тормозить начнёт

В баше у меня было настроено для общей истории что-то типа

PROMPT_COMMAND='history -a; history -n'
и из-за этого он тормозить начинал на нескольких десятках тысяч записей.

mksh (там общая история по умолчанию) не тормозил на 100 тыс.

Сейчас zsh тоже с общей историей, тысяч 80 набралось уже, не тормозит.

anonymous
()
Ответ на: комментарий от anonymous

А у меня 72k, но это домашний компьютер, я там не сильно маньячу. Тоже вроде быстренько работает.

d_a ★★★★★
()
Ответ на: комментарий от anonymous

И, кстати, если забиндить в .inputrc

"\ep": history-search-backward
"\en": history-search-forward
то поиском по истории можно пользоваться почти как дополнением, причём не только в баше, а везде, где прилинкована libreadline (а где не прилинкована, есть rlwrap).

В zsh надо делать

bindkey "^[p" history-beginning-search-backward
bindkey "^[n" history-beginning-search-forward

Можно на стрелочки забиндить (если кто любит стрелочки), как сто лет назад (не знаю как сейчас) было по умолчанию в tcsh на FreeBSD.

Ну и инкрементальный поиск тоже можно освоить эффективно, наверное.

anonymous
()
Ответ на: комментарий от d_a

Тупое — это в хорошем смысле. Которое не пытается умничать.

Что «интеллектуальное» дополнение аргументов — зло, я понял лет 10 назад, когда хотел написать unrar file.jpg с включённым автодополнением на unrar.

anonymous
()
Ответ на: комментарий от d_a
 ~ % wc -l .zhistory
160362 .zhistory

Тормозило с опцией HIST_LEX_WORDS, без неё стало нормально. История дописывается в файл после каждой команды, но она не общая — очень неудобно, хотя многим почему-то нравится.

anonymous
()
Ответ на: комментарий от anonymous

Помоему надо unrar x делать, а не просто unrar. Может быть на это вам пыталась эта штука указать, а не просто рарджипег не смогла. Хотя хоть так хоть так не нужно конечно.

d_a ★★★★★
()
Ответ на: комментарий от anonymous

Вполне можно эффективно использовать шелл только с тупыми дополнениями

ну использую mksh, сильно не хватает дополнения по именам пакетом

но активно пользуясь историей

ну для такого, можно обернуть в rlwrap / socat readline exec:.. (ну sudo !! / ... !$ ... не получится, конечно)

активным использованием сложных дополнений

усиливается утверждения, чтобы его лечге отрицать, не самый чистый риторический приём)

anonymous
()

Нифига тут изменений, голова опухла пока распарсил.

Hertz ★★★★★
()
Ответ на: комментарий от anonymous

активным использованием сложных дополнений

усиливается утверждения, чтобы его лечге отрицать, не самый чистый риторический приём)

Где ж тут усиление? Тут противопоставление: «сложные» — упомянутым ранее «тупым», «активное» — «эпизодическому».

Иногда и «сложные» дополнения нужны (хотя бы для тех же имён пакетов), но в большинстве случаев использование истории для примерно тех же целей мне кажется более консистентным.

mksh — хорошая штука для любителей минимализма. Единственное, на чём я в нём запинался время от времени, это отсутствие undo при редактировании.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.