私はシェルで働いていましたが、間違ってオートコンプリートしました tab _e
を書き込んだ後、_expand
になりました。
このコマンドは何をしますか?私はオンラインで説明を見つけることができませんでした、Ask Ubuntuでここで見つけることができた唯一の参照は:
しかし、彼らは私の質問に答えません。代わりに、_complete
、_complete_as_root
などのコマンドに関する同じ種類の質問がさらに開かれます。
入力すると、_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