Mã giả
ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/
nơi tôi muốn tạo một liên kết tượng trưng từ nguồn tới hai đích. Có lẽ, moreutils
và pee
.
Làm thế nào bạn có thể tạo nhiều symlink từ một nguồn?
Mã giả
ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/
nơi tôi muốn tạo một liên kết tượng trưng từ nguồn tới hai đích. Có lẽ, moreutils
và pee
.
Làm thế nào bạn có thể tạo nhiều symlink từ một nguồn?
Câu trả lời:
Bạn không thể làm điều này với một lệnh gọi duy nhất ln
, nhưng bạn có thể lặp qua tất cả các điểm đến cần thiết:
$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done
Nếu bạn có gnu parallel
bạn có thể thử với
parallel ln -s /path/file {} ::: /path/dest1 /path/dest2 /path/dest3
hoặc, để liên kết nhiều mục tiêu đến (giống nhau) nhiều đích
parallel ln -s {1} {2} ::: /path/file1 /path/file2 ::: /path/dest1 /path/dest2
parallel
lệnh từ parallel
gói chứ không phải lệnh từ moreutils
.
Nó dài không kém hai ln -s
lời mời gọi riêng biệt :
echo $HOME/Documents/ $HOME/Desktop/ | xargs -n 1 ln -s $HOME/file
nhưng điều đó chỉ hoạt động đối với các đường dẫn tuyệt đối (vì các liên kết tượng trưng được diễn giải liên quan đến thư mục mẹ của chúng, trừ khi chúng là tuyệt đối).
(Tất nhiên, chi phí giảm tương đối giảm khi số lượng liên kết tăng lên. Ngoài ra, đoạn trích này dựa trên thực tế là $HOME
không chứa bất kỳ khoảng trắng, tab hoặc dòng mới nào.)