22 янв. 2014 г.

Автодополнение в командной строке Linux

Автодополнение в командной строке Linux - это крайне удобная вещь. Вот скажем, нужно вам посмотреть информацию о пакете, скажем, php-mcrypt, но вы не помните как точно он пишется. С автодополнением достаточно в команде написать первые буквы и двойное нажатие [TAB] покажет вам варианты, а одинарное - дополнит, если вариант единственный:

rpm -q ph [TAB][TAB]

phonon-backend-gstreamer  php-devel                 php-mysql
php                       php-gd                    php-pdo
php-cli                   php-mbstring              php-xml
php-common                php-mcrypt                

Эта полезная фишка содержится в пакете bash-completion. При установке Debian-based систем этот пакет устанавливается по-умолчанию.А во многих же RHEL-дистрибутивах (например, Oracle Linux) - почему-то нет. Устанавливаем командой:

yum install bash-completion
aptitude install bash-completion

Для каких именно команд работает автодополнение - зависит от конкретной системы и установленного на ней софта. Поэтому, чтобы посмотреть список команд:

ls /etc/bash_completion.d

autoconf       gdbus-bash-completion.sh      mysqladmin        scl.bash
automake       getent                        ncftp             screen
bash-builtins  gpg2                          net-tools         service
bind-utils     gsettings-bash-completion.sh  nmap              sh
brctl          gzip                          ntpdate           shadow
bzip2          iconv                         openssl           smartctl
chkconfig      iftop                         perf              sqlite3
configure      ifupdown                      perl              ssh
coreutils      info                          pkg-config        strace
cpan2dist      iproute2                      pm-utils          subversion
cpio           iptables                      postfix           tar
crontab        java                          procps            tcpdump
cryptsetup     lsof                          python            util-linux
cups           lvm                           qdbus             wireless-tools
cvs            lzma                          quota-tools       xmllint
dd             make                          redefine_filedir  xmlwf
dhclient       man                           rfkill            xsltproc
e2fsprogs      mc                            rpcdebug          xz
findutils      mdadm                         rpm               yp-tools
gcc            minicom                       rsync             yum.bash
gdb            module-init-tools             samba             yum-utils.bash