别名的完成是否消失了?

别名的完成是否消失了?

本网站中有关别名补全的好方法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

相关内容