LINUX.ORG.RU

bash autocompletion


0

0

Бред конечно, но а вдруг - есть ли природе шелл (не обязательно bash) чтобы дополнение делал не только по путям, но и по параметрам всяких команд?


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

А вы не справшивали про «изкаропки».
Доставьте нужные completion)

CyberTribe ★★ ()

Убунтоид чтоль?

В ~/.bashrc вставь [code]if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi[/code]

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

Чортово форматирование, мазафака!Понаставили, понимаещь!

if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi

anonymous ()
[nnz@nehalem ~]$ echo $ZSH_<TAB>
ZSH_NAME     ZSH_VERSION

В свое время юзал bash+bash_completion, а потом попробовал zsh и осознал, что баш с любыми костылями — полная фигня по сравнению с нормальным шеллом :)

nnz ★★★★ ()
Ответ на: комментарий от nnz
$ echo $BASH_<TAB>
$BASH_ALIASES                $BASH_CMDS                   $BASH_COMPLETION_COMPAT_DIR  $BASH_SOURCE                 $BASH_VERSION
$BASH_ARGC                   $BASH_COMMAND                $BASH_COMPLETION_DIR         $BASH_SUBSHELL               
$BASH_ARGV                   $BASH_COMPLETION             $BASH_LINENO                 $BASH_VERSINFO               
Adjkru ★★★★★ ()

bash-completion

apt-cache show bash-completion

Package: bash-completion
Priority: standard
Section: shells
Installed-Size: 936
Maintainer: Bash Completion Maintainers <bash-completion-devel@lists.alioth.debian.org>
Architecture: all
Version: 1:1.1-3
Replaces: bash (<< 3.1dfsg-9)
Depends: bash (>= 3.1dfsg-9)
Filename: pool/main/b/bash-completion/bash-completion_1.1-3_all.deb
Size: 127078
MD5sum: 8dc7f55dcfa8e03c92efc095d95f9ee5
SHA1: eec00026e3e6d767efbab8f9b2292ca8b3b681d1
SHA256: 98cccbd7f37a77e9969351588b09c8dad953c6f1fd14e0a605456cd5f794dcdb
Description-ru: программируемое дополнение ввода для оболочки командной строки bash
 bash-completion расширяет существующие возможности дополнения в bash,
 позволяя вводить сложные командные строки нажатием буквально нескольких
 клавиш. Целью проекта является создание программируемых процедур
 дополнения для большинства распространённых команд Linux/UNIX, которые
 позволили бы системным администраторам и программистам сократить количество
 нажатий клавиш при выполнении ежедневных задач.
Homepage: http://bash-completion.alioth.debian.org
Tag: implemented-in::shell, interface::shell, role::app-data, use::editing
anunymuos ()
Ответ на: комментарий от nnz

Ну, я, например, хочу, что бы при «pacman -Rd asd<TAB>» я видел список установленных пакетов, которые начинаются на «asd». Так можно?

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

Ещё вдогонку, хочу чтобы по Tab всегда сразу вываливался хоть какой-то подходящий вариант и последующими нажатиями Tab перебирались другие варианты. Раздражает когда недопечатал 1-2 буквы созерцать эти «отобразить все 9000 возможностей? (y/n)».

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

Я здесь вообще-то не собирался пиписьками мериться...

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

[nnz@nehalem ~]$ yum
check-update            -- Check if any updates are available
clean                   -- Clean local yum cache
deplist                 -- Gives a list of all dependencies for a package
groupinfo               -- Get info on package groups
...

Ну и прочие плюшки, например, автокоррекция

[nnz@nehalem ~]$ mna ps
zsh: correct 'mna' to 'man' [nyae]?
Или, скажем, общая история для всех сеансов, включая работающие одновременно, а?

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

>Ну, я, например, хочу, что бы при «pacman -Rd asd<TAB>» я видел список установленных пакетов, которые начинаются на «asd». Так можно?

С арчем дела не имел, но беглое гугление намекает, что все должно работать.

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

Я тоже не собирался, просто намекнул, что пример с дополнением переменных окружения неудачный.

Спорить не буду, т.к. ни «меню автодополнения», ни описание опций по tab без --help, ни исправление опечаток мне не требуется, несмотря на то, есть оно где-то или нет.

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

А как в zsh сделать цветным PS1? Попробовал - отображает вместо цвета все управляющие символы:

\[\033[1;32;40m[\D{/home/eddy.host :host.domain}\] \[\033[1;33;40m\w\]\[\033[1;32;40m]\]\[\033[0;37;40m\n

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

>Ещё вдогонку, хочу чтобы по Tab всегда сразу вываливался хоть какой-то подходящий вариант и последующими нажатиями Tab перебирались другие варианты. Раздражает когда недопечатал 1-2 буквы созерцать эти «отобразить все 9000 возможностей? (y/n)».

В баше? echo -e '\nTAB: menu-complete\n' >> ~/.inputrc с перезапуском баша.
В zsh емнип по дефолту так (если дистростроители не накрутили).

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

В zsh с цветами немного попроще, чем в баше ;)

Например,

autoload colors ; colors # Подгружаем цветовые карты
PROMPT="$fg[red]"'[%n@%m %.]%(!.#.$) '"$fg[white]"

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

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

Из коробки не делает. sudo apt-get inst... и хоть обнажимайся Tab.

O_O

sanja@amigo:~$ apt-
apt-cache             apt-extracttemplates  apt-key               apt-sortpkgs
apt-cdrom             apt-ftparchive        apt-listchanges
apt-config            apt-get               apt-mark
sanja@amigo:~$ apt-cache
add        dotty      dumpavail  madison    policy     search     showpkg    stats      xvcg
depends    dump       gencaches  pkgnames   rdepends   show       showsrc    unmet
sanja@amigo:~$ apt-get
autoclean        check            dselect-upgrade  remove           upgrade
autoremove       clean            install          source
build-dep        dist-upgrade     purge            update
И так далее, итого, УМВР, ЧЯДН?О_О

Да:

sanja@amigo:~$ lsb_release -ds
Debian GNU/Linux testing (squeeze)
Нетинсталл, базовая система, доустановка - иксы+кеды+прочие мелочи, нужные для работы. И?

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

Забыл совсем, оболочка:

sanja@amigo:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Май  1 09:03 /bin/sh -> bash

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

не, искоробочно:

sanja@amigo:~$ grep completion /etc/skel/.bashrc
# enable programmable completion features (you don't need to enable
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
второй вопрос, что там, что в дебиане, что в убунтах оболочкой по умолчанию dash идёт, а как там с автодополнением, я честно говоря, не помню)

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

>что в убунтах оболочкой по умолчанию dash идёт, а как там с автодополнением, я честно говоря, не помню)

Даш в убунте работает в качестве /bin/sh, который используется как интерпретатор многих скриптов (раньше это был симлинк на баш, теперь на даш). Дефолтный интерактивный шелл там по-прежнему баш.

Вроде и в сквизе собирались так сделать.

// Юзать Ъ POSIX шелл как интерактивный — мазохизм еще тот.

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

>Вроде и в сквизе собирались так сделать.

Ну после установки базовой, при первом upgrade оно и предлагает dash поставить шеллом по умолчанию;)

novitchok ★★★★★ ()

предпочитаю нестандартные комплишены прописывать ручками в тот же .bashrc

например:

complete -W «`cat ~/.ssh/known_hosts | cut -d ' ' -f1 | cut -d ',' -f1 | cut -d ']' -f1 | sed 's/\[//' | sort`» ssh

и ssh + TAB дополняется хостами куда уже ходили по ssh.

IMHO ручками более бусидо - ибо рулишь конкретикой, а не то что «папа» придумал.

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

>предлагает dash поставить шеллом по умолчанию

Может, все-таки, как замену /bin/sh?
Это же надо минимум с дуба рухнуть, чтобы в качестве интерактивного шелла даш предлагать %)

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

ненене, как раз при отработке, при установке/обновлении пакетов dpkg -configure выкидывает своё синее окно и предлагает оболочкой по умолчанию даш, но я всегда скромно отказываюсь;)

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

У меня такое:

---
Оболочкой командной строки /bin/sh в Debian и основанных на Debian системах по умолчанию является bash.

Однако, так как от оболочки командной строки по умолчанию требуется только соответствовать POSIX, то любая оболочка, соответствующая POSIX, типа dash, может работать в качестве /bin/sh. Причинами, по которым вам стоит рассмотреть переход на dash, являются большая скорость и меньший размер по сравнению с bash.

Установить dash как /bin/sh?

<Да> <Нет>
---

Так это ни разу не про интерактивный шелл.
Ну разве что коснется тех чудиков, у которых шеллом /bin/sh стоит. Но это надо специально постараться.

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

Ну так они честно написали, что есть два дефолтных шелла: для юзеров (interactive) и для скриптов (/bin/sh).

Пока что дефолтным интерактивным шеллом остается bash. Во всех релизах.

The default interactive shell is bash (it's defined in /etc/adduser.conf then copied to the user profile, see chsh(1) manpage).

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

да уже глянул сам:

sanja@amigo:~$ grep sh /etc/adduser.conf
# The DSHELL variable specifies the default login shell on your
DSHELL=/bin/bash
Видать по старости сам в запут завёл, взвиняйте;)

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