Автозаполнение команд .bash_aliases?

У меня есть целая куча команд с псевдонимами в .bash_aliases

Самыми общими примерами являются

alias apt-update="sudo apt-get update"  
alias apt-upgrade="sudo apt-get dist-upgrade"

, но у меня также есть

alias apt-install="sudo apt-get install "
alias a2avail="/etc/apache2/sites-available"

. первые два не проблема, вторые два я хочу сделать более мощным;

Специально для apt-install я хочу, чтобы автозаполнение работало.

для a2avail Я хочу иметь возможность напечатать что-то вроде sudo cp a2avail/default a2avail/new и запустить его так, как sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/new

, возможна ли любая из этих двух вещей?

6
задан 12 August 2012 в 03:18

2 ответа

Добавление следующего к вашему ~/.bashrc должно завершить имена пакетов для вашего псевдонима apt-install

_apt_install_complete() { 
    mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2");
}
complete -F _apt_install_complete apt-install

Что касается a2avail, псевдоним будет работать только как первое слово команды, но вы можете использовать переменная.

a2avail=/etc/apache2/sites-available   # in ~/.bashrc

# then...
sudo cp "$a2avail"/{default,new}
0
ответ дан 12 August 2012 в 03:18

По состоянию на 4 июля 2017 года:

  1. Установить полный псевдоним .

  2. Добавить эту строку: complete -F _complete_alias apt-install.

Вы сделали.

0
ответ дан 12 August 2012 в 03:18

Другие вопросы по тегам:

Похожие вопросы: