У меня есть целая куча команд с псевдонимами в .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
, возможна ли любая из этих двух вещей?
Добавление следующего к вашему ~/.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}
По состоянию на 4 июля 2017 года:
Установить полный псевдоним .
Добавить эту строку: complete -F _complete_alias apt-install
.
Вы сделали.