ln -s: dari satu sumber ke banyak tujuan

8

Kodesemu

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

tempat saya ingin membuat symlink dari sumber ke dua tujuan. Mungkin, moreutilsdan pee.


Bagaimana Anda bisa membuat banyak symlink dari satu sumber?

Léo Léopold Hertz 준영
sumber

Jawaban:

11

Anda tidak dapat melakukan ini dengan satu permintaan ln, tetapi Anda dapat mengulangi semua tujuan yang diperlukan:

$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done
Serge
sumber
2
Anda dapat menghilangkan tanda kutip jika direktori home base Anda tidak mengandung spasi atau karakter lain untuk melarikan diri, misalnya tanda baca. Namun, menggunakan tanda kutip selalu jika memungkinkan membuat kebiasaan yang membuat Anda dari kesalahan dalam kasus lain di mana nama direktori / file dapat dengan mudah berisi karakter khusus
Serge
6

Jika sudah, gnu parallelAnda bisa mencobanya

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

atau, untuk menghubungkan berbagai target ke (yang sama) beberapa tujuan

parallel ln -s {1} {2} ::: /path/file1 /path/file2 ::: /path/dest1 /path/dest2
don_crissti
sumber
2
@Masi Pastikan Anda menjalankan parallelperintah dari parallelpaket dan bukan yang dari moreutils.
Gilles 'SANGAT berhenti menjadi jahat'
5

Ini tidak kurang dari dua ln -sdoa terpisah :

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

tetapi itu hanya berfungsi untuk path absolut (karena tautan simbolik ditafsirkan relatif terhadap direktori induknya, kecuali jika itu absolut).

(Biaya relatif turun tentu saja karena jumlah tautan naik. Juga, cuplikan ini bergantung pada fakta yang $HOMEtidak mengandung spasi, tab, atau baris baru.)

Stephen Kitt
sumber