ln -s:1つのソースから多くの宛先へ


8

疑似コード

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

ソースから2つの宛先へのシンボリックリンクを作成する場所。おそらく、moreutilsそしてpee


1つのソースから多くのシンボリックリンクを作成するにはどうすればよいですか?

回答:


11

の1回の呼び出しでこれを行うことはできませんがln、必要なすべての宛先をループできます。

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

2
ホームベースディレクトリにスペースや、句読点などのエスケープする他の文字が含まれていない場合は、引用符を省略できます。ただし、常に適切な場所で引用符を使用すると、ディレクトリ/ファイル名に特殊文字が簡単に含まれる可能性がある他の場合に間違いを防ぐ習慣ができます
Serge

6

あなたが持っている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

2
@Masi parallelコマンドは、からではparallelなく、パッケージから実行してくださいmoreutils
Gilles「SO-邪悪なことをやめ

5

2つの個別のln -s呼び出しと同じくらい冗長です。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.