更新: オートコンプリートをカスタマイズできるプログラムは と呼ばれcomplete
ます。
ここでいくつかの良い基本的な例を見つけることができます: Bash Complete コマンドの使用の詳細
上記のリンクに従って関数とスクリプト名を使用し/
て、ディレクトリへのシンボリックリンクに を追加するスクリプトを次に示します...これは単なる大まかなサンプルですが、実行できることを示しています(私は試していません)ビルトインcd
...
関数_mycomplete_
を実行可能ファイルに関連付けるmyfoo
complete -F _mycomplete_ myfoo
入る関数~/.bashrc
function _mycomplete_()
{
local cmd="${1##*/}"
local word=${COMP_WORDS[COMP_CWORD]}
local line=${COMP_LINE}
local xpat='!*.foo'
COMPREPLY=($(compgen -f -X "$xpat" -- "${word}"))
if ((${#COMPREPLY[@]}==1)) ;then
[[ -h $COMPREPLY ]] && COMPREPLY="$COMPREPLY/"
fi
}
元の答え:
コマンドラインでは、シンボリック リンクへの自動展開の主なインジケータが次の表の最後の行に表示されます。名前は展開されますが、最後の はありません/
。
on pressing TAB on pressing TAB (again)
what happens? meaning what happens?
=================== ======================= ====================================
Nothing is appended 1=> Multiple sub-dirs exist => A list of possibilities is presented
2=> No sub-directory exists => Nothing is appended (again)
Expands to end in / => A uniquely matching dir => ...as per first column (repeat)
Expands text only => Current name is a link => Expands to end in /
あなたの例では、コマンドラインを完全な名前にすでに準備している場合、つまり. cd link
その場合、指標は明らかではありません。また、可能性のリストを介したシンボリック リンクであることもわかりません。
cd
リンクのターゲットにアクセスできるようにするにはcd -P link
、 、またはset -P; cd link