![别名的完成是否消失了?](https://linux22.com/image/886864/%E5%88%AB%E5%90%8D%E7%9A%84%E5%AE%8C%E6%88%90%E6%98%AF%E5%90%A6%E6%B6%88%E5%A4%B1%E4%BA%86%EF%BC%9F.png)
本网站中有关别名补全的好方法https://ubuntuforums.org/showthread.php?t=733397。
现在是 16.04,似乎规则已经改变。
我找不到 apt(_apt) 完成命令。但 ls is(_longopt) 在这里并且它可以工作。当然 apt 也不在 /etc/bash_completion.d/ 中。
▶ complete |grep apt
▶ complete |grep '\<ls\>'
complete -F _longopt ls
▶ complete |grep 'upstart'
complete -F _upstart_reload reload
complete -F _upstart_stop stop
complete -F _upstart_initctl initctl
complete -F _upstart_start start
complete -F _upstart_status status
complete -F _upstart_restart restart
答案1
好的,我返回到其他旧版本,并且它可以工作。根据文件 /usr/share/bash-completion/completions/apt。
alias ai='sudo apt install'
alias ap='sudo apt purge'
alias au='sudo apt update && msg 列表已经刷新 || msg 刷新失败'
alias ag='sudo apt upgrade'
alias as='apt list'
alias aw='apt show'
alias aa='sudo apt autoremove'
_show_installed()
{
local cur
COMPREPLY=()
cur=`_get_cword`
COMPREPLY=( $( _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
return 0
}
_show_all()
{
local cur
COMPREPLY=()
cur=`_get_cword`
COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
return 0
}
complete -F _show_all $default aw ai as
complete -F _show_installed $default ap