_expand 起什么作用?

_expand 起什么作用?

我正在使用 shell,tab在写入 后错误地使用 自动完成_e,结果为_expand

这个命令是做什么的?我在网上找不到解释,在 Ask Ubuntu 上我能找到的唯一参考是:

_complete但它们并没有回答我的问题。相反,它们提出了更多有关、_complete_as_root等命令的同类问题。

答案1

_expand你可以通过输入以下内容来了解

$ type _expand
_expand is a function
_expand ()
{
    if [[ "$cur" == \~*/* ]]; then
        eval cur=$cur;
    else
        if [[ "$cur" == \~* ]]; then
            cur=${cur#\~};
            COMPREPLY=($( compgen -P '~' -u "$cur" ));
            [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]};
            return ${#COMPREPLY[@]};
        fi;
    fi
}

这是 bash 补全机制中的一个函数。它扩展~路径名中的波浪符号 ( )。下面/etc/bash_completion是该函数的注释:

# Expand ~username type directory specifications.  We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.

在终端中尝试一下,输入:

~<tab><tab>

它将扩展到用户名,例如

~usera     ~userb     ~userc

相关内容