Hai*_*ood 6 command-line bash alias auto-completion
我有一大堆别名命令 .bash_aliases
最通用的例子是
alias apt-update="sudo apt-get update"
alias apt-upgrade="sudo apt-get dist-upgrade"
Run Code Online (Sandbox Code Playgroud)
但我也有
alias apt-install="sudo apt-get install "
alias a2avail="/etc/apache2/sites-available"
Run Code Online (Sandbox Code Playgroud)
前两个没问题,后两个我想做更强大的;
特别是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
Run Code Online (Sandbox Code Playgroud)
至于 a2avail,别名只能用作命令的第一个单词,但您可以使用变量。
a2avail=/etc/apache2/sites-available # in ~/.bashrc
# then...
sudo cp "$a2avail"/{default,new}
Run Code Online (Sandbox Code Playgroud)