Bash完了はシンボリックリンクツリーでは機能しません。

Bash完了はシンボリックリンクツリーでは機能しません。

次のツリー構造があるとしましょう。

~/user
|_____ dir0
|_____ symlink0
|      |_______ somefile0
|_____ symlink1
       |_______ somefile1
       |_______ somefile2

私がこうすれば:

cd
cd symlink0/
cd ../[tab][tab]

~/userの内容を表示したいです。

dir0 symlink0 symlink1

だから私は次のようにすることができます:

cd ../symlink1/

しかし、代わりに直接自動的に実行されます。

cd ../dir0/

...[tab]キーを1回だけ押してください。

どんな提案がありますか?ありがとうございます!

編集:他のコンピュータでは、上記の例の「実際の」ディレクトリを使用してもまったく自動補完されません。複数のディレクトリの場合、使用されているシステムによってはまったくオートコンプリートされないか(可能なディレクトリは提案されていません)、最初のディレクトリのみがオートコンプリートされます。

これは、ツリー構造内のより高いディレクトリにアクセスしようとした場合にのみ発生します(たとえば、./path/toに2つのシンボリックリンクが含まれている場合は、選択用のcd ./path/to/sym # press [tab][tab]出力になりますsymlink0 symlink1)。

ベストアンサー1

その理由は、シェルの場合、シンボリックリンクが先験的にファイルだけであり、事実を指します。目次これは、その内容を調べ、ターゲットが実際にディレクトリであることを認識することによってのみ明らかになります。ディレクトリへのシンボリックリンクの名前を入力し始めると、[次へ]をクリックしたときにのみ表示されることに気付くでしょう。TAB 二重

ご提案した設定には実際ディレクトリのオートコンプリートはcd明らかに引数としてディレクトリを必要とし、貪欲であり、シンボリックリンクが解釈されるのを待たずにそのディレクトリを許可します。

次の提案に従って、この問題を克服することができます。この投稿

おすすめ記事