我有一大堆别名命令.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
这两件事有可能吗?
答案1
将以下内容添加到您~/.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}