web-dev-qa-db-ja.com

ls、mvとのシンボリックリンク:関数に「論理」アドレスを使用するように強制します(元のパスを記憶します)

シンボリックリンクで動作する多くの基本機能では、デフォルトで物理パスが使用されているようです。ただし、cdは正常に機能します。シンボリックリンクに移動するとき、cdは私がどこから来たのかを記憶しているので、シンボリックリンクの論理アドレスを利用しています(例については関連する投稿を参照してください: symlinks and cd )。

Lsのような関数は、このように部分的にしか機能しません。タブ($ ls ../ {tab})を押してディレクトリの内容を一覧表示すると、シンボリックリンクが配置されているディレクトリの内容が一覧表示されますが、コマンド($ ls ../ {enter})を実行するとディレクトリが一覧表示されます。コンテンツリストは物理パスからのものです。 ls、mv、rmなどのコマンドをcdのように動作させ、シンボリックリンクの論理パスを記憶する方法はありますか?

アドバイスありがとうございます。

6
mrtrujiyo

ディレクトリを指すシンボリックリンクが、シンボリックリンクの場所をルートとする実際のディレクトリであるという錯覚を与えるのはシェルです。 cdは必然的にシェル組み込みであり、タブ補完もシェルによって実行される関数です。 cdはシェルによって実行されるため、シンボリックリンクを認識し、錯覚を維持できます。ほとんどのUnixコマンドはシェルによって実装されていないため、シンボリックリンクをトラバースして現在のディレクトリに到達したことを知る方法はありません。これらのコマンド(lsmvrmなど)はシンボリックリンクを認識できないため、錯覚を維持できません。

9
Kyle Jones