Долгое время мне не хватало полноценного автодополнения по нажатию TAB.
Например когда надо найти/установить пакет, и не помнишь его полного имени,или долго набирать это имя, можно искать с помощью eix, emerge -s, или просматривать с помощью ls дерево portege. Все это не всегда подходит, а запускать постояно команда --help если вдруг подзабыл, для того что бы вспомнить нужный параметр тоже не айс. И тут нам на помощь приходит bash-completion, что бы сделать нашу жизнь веселей и краше, с его помощью можно дополнять не только команды и пути, а так же ключи опции, имена пакетов используя emerge, благо в Calculate все что нужно сделать для его работы, так это добавить нужную строчку в нужный файл и перезапустить консоль.
У кого нету, создаем файл ~/.bashrc, в директории пользователя и директории root:(в связи с добавленными комментариями, делать этого не нужно,все оказалось гораздо проще)
touch ~/.bashrc
echo "[[ -f /etc/profile.d/bash-completion.sh ]] && source /etc/profile.d/bash-completion.sh" >> ~/.bashrc
cp ~/.bashrc /root/.bashrc
если не нравится этот вариант, то можно сделать иначе, для всех пользователей:(и тут в связи с добавленными комментариями, делать этого не нужно,все оказалось гораздо проще)
echo "[[ -f /etc/profile.d/bash-completion.sh ]] && source /etc/profile.d/bash-completion.sh" >> /etc/bash/bashrc
Правильно будет включить через eselect,
Полный список:
eselect bashcomp list
Затем включаете то, что нужно:
eselect bashcomp enable <номера нужных дополнений>
Для глобальной bashcomp:
for i in $(ls --color=no /usr/share/bash-completion/); do eselect bashcomp enable --global $i; done
После чего делаем:
env-update && source /etc/profile
Проверяем что у нас получилось…
emerge ese<tab><tab>
kill <tab><tab>
killall -<tab><tab>
chown <tab><tab>
chown -<tab><tab>
chgrp <tab><tab>
chgrp -<tab><tab>
rc-update <tab><tab>
rc-update -<tab><tab>
rc-status <tab><tab>
rc-status -<tab><tab>
eselect <tab><tab>
В общем всем все понятно, пользуемся, радуемся. Кому есть что добавить, пожалуйста.
P.S. Спасибо за комментарии Anton Chernyshov я упустил написать eselect bashcomp enable <номера нужных дополнений>, а так же Rosen Alexandrow за красивое решение for i in $(ls --color=no /usr/share/bash-completion/); do eselect bashcomp enable --global $i; done
P.P.S Можно смело сказать что данный пост написан в соавторстве с Anton Chernyshov и Rosen Alexandrow… Товарищи однопартийцы! БОЛЬШОЕ ВАМ СПАСИБО, за поправки!