すべてのファイルの内容を含むディレクトリをシンボリックリンクすることはできません。

すべてのファイルの内容を含むディレクトリをシンボリックリンクすることはできません。

locationsにシンボリックリンクしたいです~/locations

これにより、すべての内容が次にlocations表示されます~/locations

 λ tree locations/
locations/
├── adelaide
│   └── config
├── amber
│   └── config
├── austin
│   └── config
├── boston
│   └── config
├── boulder
│   └── config
├── durham
│   └── config
├── jade
│   └── config
├── losangeles
│   └── config
├── minsk
│   └── config
├── newcastle
│   └── config
├── opal
│   └── config
└── pearl
    └── config

シンボリックリンクを試しても期待どおりに機能しません。

 λ ln -s locations/*/* ~/locations
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists

tree locations
 λ tree ~/locations/
/Users/bob.smith/locations/
└── config -> locations/Adelaide/config

locationsご覧のとおり、次のディレクトリが出力から欠落しています。

私がここで何を間違っているのか?

ベストアンサー1

正確に何を達成しようとしているのかは不明です。ディレクトリシンボリックリンクですか、それとも個々のファイルを指すシンボリックリンクの「リンクファーム」ですか?

シンボリックリンクは、パスを含む小さなファイルです。名前解決中にファイルにアクセスすると、このパスが置き換えられます。パスは相対パスでも絶対パスでもかまいません。

ディレクトリシンボリックリンクを作成するには、次のようにします。

ln -s locations ~/locations

しかし、問題があります!locationsたとえば、ホームディレクトリにシンボリックリンクが作成されます/home/yourname/locations。シンボリックリンクの内容は相対パスになりますlocations。つまり、シンボリックリンクは自分自身を指し、役に立たないループを作成します。

正しい相対パスまたは絶対パスを指定する必要があります。たとえば、次のようになります。

ln -sf /absolute/path/to/locations ~/locations

というユーティリティがある場合、サブrealpathディレクトリは次の親ディレクトリでこれを実行できますlocations

ln -sf "$(realpath locations)" ~/locations

realpathlocationsすべてのシンボリックリンクが解決された印刷された絶対パス。コマンド$(...)置換構文はコマンドラインでそれを置き換えます。生成されたパスにスペースが含まれている場合は、周囲に引用符を入れて複数のパラメータに分割しました。

ファイルツリーはシンボリックリンクを使用してミラーリングできます。lndirXWindowシステムから派生したユーティリティがあります。通常、GNU / Linuxディストリビューションにインストールする場合は、lndirXコンテンツと共にパッケージ化されます。lndir元のディレクトリツリーを模倣した空のディレクトリツリースケルトンを作成し、そのソースファイルを指すシンボリックリンクで埋めます。

シンボリックリンクされた汎用ディレクトリを介してアクセスしたいファイルツリーがある場合は、そのためのスクリプトを作成する必要があります。

おすすめ記事