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
realpath
locations
すべてのシンボリックリンクが解決された印刷された絶対パス。コマンド$(...)
置換構文はコマンドラインでそれを置き換えます。生成されたパスにスペースが含まれている場合は、周囲に引用符を入れて複数のパラメータに分割しました。
ファイルツリーはシンボリックリンクを使用してミラーリングできます。lndir
XWindowシステムから派生したユーティリティがあります。通常、GNU / Linuxディストリビューションにインストールする場合は、lndir
Xコンテンツと共にパッケージ化されます。lndir
元のディレクトリツリーを模倣した空のディレクトリツリースケルトンを作成し、そのソースファイルを指すシンボリックリンクで埋めます。
シンボリックリンクされた汎用ディレクトリを介してアクセスしたいファイルツリーがある場合は、そのためのスクリプトを作成する必要があります。