ln -s:1つのソースから複数のターゲットへ

ln -s:1つのソースから複数のターゲットへ

擬似コード

ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/

その中で、ソースから両方のターゲットへのシンボリックリンクを作成したいと思います。そうかもしれないしmoreutilspee


1つのソースから複数のシンボリックリンクを作成するには?

答え1

単一の呼び出しではこれを行うことはできませんが、必要lnなすべての宛先を繰り返すことはできます。

$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done

答え2

あればgnu parallel試してみることができます

parallel ln -s /path/file {} ::: /path/dest1 /path/dest2 /path/dest3

または、複数のターゲットを(同じ)複数のターゲットにシンボリックリンクします。

parallel ln -s {1} {2} ::: /path/file1 /path/file2 ::: /path/dest1 /path/dest2

答え3

2 回の個別の呼び出しよりもln -s冗長ではありません。

echo $HOME/Documents/ $HOME/Desktop/ | xargs -n 1 ln -s $HOME/file

ただし、これは絶対パスでのみ機能します(シンボリックリンクは絶対パスではなく、親ディレクトリに基づいて解釈されるためです)。

(もちろん、リンク数が増えるにつれて、相対的なコストは低くなります。また、このコードスニペットは、$HOMEスペース、タブ、または改行が含まれていないという事実に依存します。)

関連情報