LINUX.ORG.RU

bash-completion 2.0

 ,


1

1

bash-completion это набор сценариев, которые, используя возможности программирования дополнений командной строки доступные в bash, реализуют автоматическое дополнение для множества популярных unix-утилит и значительно увеличивают комфортность работы в командной оболочке.

В новой версии произошли следующие изменения:

  • Прекращена поддержка bash < 4.1. За счёт этого было убрано множество «костылей», обходящих ошибки в более ранних версиях bash.
  • Задействована, появившаяся в bash-4.0, функция динамической подгрузки дополнений. Если раньше при запуске командной оболочки загружались все доступные дополнения, что приводило к неприятной задержке на старте, то сейчас сначала загружается только базовая часть, а сами дополнения только при первом использовании соответствующих команд.
  • Множество других мелких улучшений направленных на ускорение работы дополнений.
  • Все сценарии bash-completion теперь устанавливаются не в /etc, в /usr.
  • Добавлено множество новых дополнений: a2x, arping, asciidoc, base64, cal, chrpath, cppcheck, curl, dmesg, dot, file, gnome-mplayer, gprof, hddtemp, host, htpasswd, idn, ionice, jps, lbunzip2, lbzip2, lbzcat, prelink, protoc, pwdx, pwgen, reptyr, sum, watch, phing, pinfo, sbopkg, pkgtool, makepkg, rmp2tgz, slapt-get, slapt-src, slackpkg, kcov, feh, xgamma, fbi, fbgs, puppet, epdfview, lpr, lpq, mysql, plague-client, desktop-file-validate, valgrind, ccache, iperf, koji, lzip, udevadm, htop, nethogs, acpi, hwclock, pwd, ssh-add, vmstat.
  • Значительно улучшена поддержка Slackware: добавлены дополнения для системных утилит, учтены особенности расположения сценариев инициализации системы.
  • Добавлены linux-специфичные версии дополнений для mount, umount и su.
  • Исправлено множество ошибок. В том числе значительно улучшена поддержка дополнений для команд, принимающих в качестве аргументов другие команды.

Полный список изменений

>>> Сайт проекта

★★★

Проверено: maxcom ()

Прекращена поддержка bash < 4.1.

Интересно, до того как они выкинут поддержку 4.2=<, в баше успеют исправить баг с мусором в консоли при неправильных командах? Я вот про это(пример, как должно работать, баш 4.1_p11):

~ $ эхо 'Echo'

bash: эхо: command not found
Lighting ★★★★★ ()

Хорошая штука эти самые комплишн. Меня в своё время удивило их отсутствие в федоре из коробки. В убунтах сразу имеются.

wbrer ★★★ ()

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

pevzi ★★★★★ ()
Ответ на: комментарий от GArik
$ эхо 'Echo'
bash: $'\321\215\321\205\320\276': команда не найдена
vurdalak ★★★★★ ()

чем оно лучше zsh?

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

Эээ... И что в этом примере мусор?

Все что он не понимает - для него это все мусор. Ну а к пониманию он не стремится. Представителя в биореактор на удобрения\^W\^W\^W\^W\^W

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

Лучше. Теперь даже на нетбуке задержка небольшая (около пары секунд). Вообще, скорость запуска увеличилась не в 2.0, а гораздо раньше :)

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

задержка небольшая
около пары секунд

мда... терпеливый вы человек. :)

Bad_ptr ★★★ ()

graphicsmagick оно так и не научилось дополнять.

d ★★★ ()

Можно пример чего она умеет? Попробовал sudo moun что до, что после установки - не дополняет.

Dragon59 ★★ ()

Для pacman'а и yaourt'а эта штука жутко тормозит. А вообще, конечно, очень даже полезная вещь. Сокращает время чтения манов.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Lighting

УМВР

$ эхо 'Echo'
bash: $'\321\215\321\205\320\276': команда не найдена
$ bash --version
GNU bash, version 4.2.24(2)-release (i486-slackware-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
drBatty ★★ ()
Ответ на: комментарий от Dragon59
sudo moun
mount             mount.cifs        mount.fuse        mount.lowntfs-3g  mountmd           mount.ntfs        mount.ntfs-3g     mountpoint 
Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Bad_ptr

zsh ещё сильнее тормозит на подгрузке функций, а тут только запуск.

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

Можно пример чего она умеет? Попробовал sudo moun что до, что после установки - не дополняет.

наверно нужно перелогинится. У меня дополняет. bash-completion-1.3-noarch-4

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

Попробовал sudo moun

Попробуй без sudo. Если без судо будет ок:

complete -cf sudo

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

Чем оно лучше, чем zsh-completion?

тем, что это bash. у меня лично и так постоянные проблемы с совместимость (на слаке работает, на debian'е например не работает), зачем не этот головняк?

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

Попробуй без sudo.

без sudo и обычное автодополнение дополняет.

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

чем оно лучше zsh?

Ничем. В zsh дополнение лучше. Но, возможно, в zsh нет каких-то дополнений, которые есть в bash-completion.

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

complete -cf

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

pevzi ★★★★★ ()

Вышел из анабиоза. Кто-нибудь уже пользовался lbzip2? Ощутимо лучше, чем bzip2?

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

Для pacman'а и yaourt'а эта штука жутко тормозит.

sudo pacman-optimize не помогает? А то они со временем сами по себе тормозить начинают при первом запуске.

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

Ничего странного:

этим маинтейнер должен заниматься. Не? Патрег например занимается.

drBatty ★★ ()
Ответ на: комментарий от Lighting
$ эхо 'Echo'
эхо: command not found

GNU bash, версия 4.2.24(1)-release (i686-pc-linux-gnu)

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

этим маинтейнер должен заниматься

Возможно, но когда я ставил автодополнялку маинтейнер этого не сделал. Добавить пару строчек для меня не проблема.

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

а Патрег добавил 1690 строчек. Это лично для меня - проблема.

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

Note: If you added any lines similar to «complete -cf sudo» as mentioned in the previous settings and have problems with bash-completion, try removing those lines.

Так что, эта команда не для bash-completion, а для дефолтного дополнения bash'а. Получается, собственно bash-completion у меня не работает вообще.

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

В /etc/bash.bashrc нужно добавить строку:

[ -r /usr/share/bash-completion/bash_completion   ] && . /usr/share/bash-completion/bash_completion

Она по идее должна была сама при установке добавиться, но сохранилась в файле /etc/bash.bashrc.pacnew.

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

Эта строка у меня есть, но после sudo, man и некоторых ещё команд без complete'ов ничего не дополняет. К чему она относится мне как-то пофиг - главное результат :)

Aligator ()

Задействована, появившаяся в bash-4.0, функция динамической подгрузки дополнений. Если раньше при запуске командной оболочки загружались все доступные дополнения, что приводило к неприятной задержке на старте, то сейчас сначала загружается только базовая часть, а сами дополнения тормозят только при первом использовании соответствующих команд.

додумались.

anonymous ()
Ответ на: комментарий от drBatty
$ эхо 'Echo'
bash: эхо: команда не найдена...
bash --version
GNU bash, version 4.2.29(1)-release (x86_64-redhat-linux-gnu)

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

но zsh нет. потому что он не нужен. поэтому сабж нужен.

anonymous ()

Если честно, любой «умный» автокомплит — это pain in ass.

Вот попробуй пойми, почему после tar x[tab] [tab] oh? [tab] ?? [tab] ????? [tab] не выводятся все x*... Так это потому, что нужно писать tar xjfv, а потом только пытатьбся автодополнять! Это ещё такой лёгкий пример. А если это, например, unrar или dhclient?

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

Почему это «pain in ass»? Автокомплит дополняет команды, а не ключи. А если нужно часто вводить длинные команды с кучей ключей и в разных комбинациях, то использовать alias'ы или скрипты.

Aligator ()

Все сценарии bash-completion теперь устанавливаются не в /etc, в /usr.

Вот ведь геморрой дистростроителям. Это всегда должно было лежать в /etc.

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

А если нужно часто вводить длинные команды с кучей ключей и в разных комбинациях, то использовать alias'ы или скрипты.

Спасибо, Aligator. Я просто про то, что непривычно всё это.

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

в ф17 приехало апдейтом bash-completion.noarch 1:2.0-1.fc17 сам не ставил.

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

пары секунд

Добавил в конец .bashrc exit для автоматического выхода при запуске.

┌─[crow@hp625] † (~) 0 ;) 
└─$ time terminal

real	0m0.115s
user	0m0.003s
sys	0m0.010s
┌─[crow@hp625] † (~) 0 ;) 
└─$ time xterm

real	0m0.385s
user	0m0.173s
sys	0m0.040s
┌─[crow@hp625] † (~) 0 ;) 
└─$ time bash

real	0m0.114s
user	0m0.087s
sys	0m0.013s

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

Да ну? Какая хорошая новость! 17 я недавно только поставил, ещё не обновлял и не пилил. Интересненько, поглядим, спасибо за информацию.

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

Так что, эта команда не для bash-completion, а для дефолтного дополнения bash'а. Получается, собственно bash-completion у меня не работает вообще.

не факт. bash-compitios сам ничего не добавляет, это просто костыль для прикручивания разнообразных правил. А дополняет bash, просто так он не знает, что после sudo должна быть команда, а не простой файл. bash без сабжа туда всё что угодно пихает, кроме того, что действительно надо.

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

Автокомплит дополняет команды, а не ключи.

ключи тоже. О тех, которые знает. Удобно например для GnuPG.

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

Вот ведь геморрой дистростроителям. Это всегда должно было лежать в /etc.

в /etc/ должен лежать _твой_ конфиг, а дефолтный в /usr/. Так всегда было.

drBatty ★★ ()

а у кого-нить нет SlackBuild'а для нового сабжа? А то там как-то оно непонятно...

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

Сделай ln -s /bin/echo /usr/local/bin/эхо

Речь не об этом, это просто пример. Ну, значит отображение кириллических символов уже починили, попробую размаскировать 4.2.

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