LINUX.ORG.RU

Вышла новая версия командной оболочки Fish 2.1.0

 ,


0

1

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

  • Улучшена работа автодополнения с частично заданными шаблонами имени файла.

    Сперва будет происходить сравнение с префиксом (foo сравнивается с foobar), затем сравнение с подстрокой (ooba сравнивается с foobar), в завершение происходит сравнение с возможными последовательностями внутри имени (fbr сравнивается с foobar). К примеру, если директория содержит файлы foo1.txt, foo2.txt, foo3.txt, достаточно ввести числовую часть, и автодополнение произведет сравнение и выполнит подстановку.

    На данный момент, возможность подобного автодополнения реализована лишь для имен файлов и не распространяется на имена опций (--foobar) и путей (из /u/l/b в /usr/local/bin).

  • Улучшена совместная работа пайпов и перенаправлений. В частности, вывод и перенаправление sterr и stdout можно выполнить как с помощью cmd ^&1 | tee log.txt, так и более привычным способом cmd 2>&1 | tee log.txt
  • Одиночный символ % теперь ссылается на последнюю задачу, отправленную в фон, если задач нет - просто ничего не будет происходить.

    В предыдущих версиях символ % указывал либо на все фоновые задачи, либо на задачи определенного пользователя. Сейчас, к примеру, можно выполнить команду fg %, и последняя задача, отправленная на выполнение в фон, вновь активизируется.

Кроме основных изменений исправлено некоторое количество багов.

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



Проверено: Shaman007 ()
Последнее исправление: Wizard_ (всего исправлений: 4)
Ответ на: комментарий от ubuntuawp

Новичку в консоли нужно bash-совместимое, потому что разбираться с неработающими примерами с форумов он не осилит.

vurdalak ★★★★★
()
Последнее исправление: vurdalak (всего исправлений: 1)
Ответ на: комментарий от ubuntuawp

Ну что-нибудь вроде «tar тут_мы_создаем_бэкап > file$(date).tar.bz2» вполне может быть. А этот $(date) не заработает.

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

Скажем проще: новичку в консоли нужен bash. Старичку в консоли тоже нужен bash, ибо привычка. А странное поделие не нужно никому, кроме евонных разрабов.

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

новичку в консоли нужен bash

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

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

Ну хотя бы. А тут ещё очередной велосипед. Бесконечная разработка уже разработанного и починка неполоманного.

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

А этот $(date) не заработает.

А по нормальному через обратные апострофы тоже не работает?

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

по нормальному через обратные апострофы

По-нормальному — это как раз «$(list)».

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

Внутри кавычек они экранируются, в отличие от.

Апострофы? В двойных кавычках в bash?

Они не экранируются в двойных кавычках: проверьте «bash -c 'echo «`echo abc`»'»: выведет «abc», а не «`echo abc`». И апострофы, и «$()» экранируются в одинарных.

Другой вопрос, что их надо экранировать для обеспечения вложенности: «bash -c 'echo `echo \`echo abc\``'» тоже выведет «abc». Но при чём тут кавычки?

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

Не в баш, а в фиш. Я утром проверял, не экранировались. Может это я что-то накосячил?

У меня в fish всё экранируется в двойных кавычках: что `, что () (просто скобки заменяют в fish $()).

Но есть одно большое отличие ` от (): без кавычек ` означает само себя в fish, тогда как () заменяется на stdout команды внутри. Так что я не мог отнести ваш комментарий к fish. Если вы посмотрите документацию, то убедитесь, что на всей странице обратный апостроф употребляется ровно 0 раз, включая соотвествующую секцию, ссылку на которую я и дал.

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

Я пробовал делать echo "(hostname)" и аналогично в `hostname`. В обоих случаях оно просто выводило (hostname) и `hostname`.

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

Ну так я и сказал, что экранируется. Но echo `hostname` выводит `hostname`, тогда как echo (hostname) выводит zyx-desktop.

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

Чем оно лучше bash?

Напишите мне в bash

echo "#define DEFAULT_VAR ${(qqq)VAR}" >> defaults.h
tar cJf ../load.tar.xz ./(#i)load*
cmd $ARRAY
typeset -A FOOS ; grep foo -r . | while read line ; do FOOS[${line/:*}]+=";${line#*:}" ; done ; echo ${(kv)FOOS}

Это всё можно сделать, но потратите вы гораздо больше времени. Проще писать такие конструкции на Python, чем на bash (впрочем, если это не однострочник на один раз, то лучше так и делать).

Далее, добавьте в bash подсветку синтаксиса, правую часть приглашения ко вводу, перерисовку приглашения ко вводу при изменении режима (normal/insert) в vi режиме (чтобы приглашение ко вводу могло показать, в каком режиме вы находитесь) и прочие вкусности.

Ещё в zsh есть дополнение для fish‐подобных autosuggestions в α стадии разработки. В bash организация подобного остановится даже не на вопросе «а как сделать подсветку», а на вопросе «а как реагировать на пользовательский ввод».

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