ln -s: từ một nguồn đến nhiều điểm đến


8

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ẽ, moreutilspee.


Làm thế nào bạn có thể tạo nhiều symlink từ một nguồn?

Câu trả lời:


11

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

2
Bạn có thể bỏ qua các trích dẫn nếu thư mục cơ sở nhà của bạn không chứa dấu cách hoặc các ký tự khác được thoát, ví dụ: dấu chấm câu. Tuy nhiên, việc sử dụng dấu ngoặc kép luôn ở nơi thích hợp sẽ tạo thói quen giúp bạn không mắc lỗi trong các trường hợp khác trong đó tên thư mục / tệp có thể dễ dàng chứa các ký tự đặc biệt
Serge

6

Nếu bạn có gnu parallelbạ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

2
@Masi Hãy chắc chắn rằng bạn chạy parallellệnh từ parallelgói chứ không phải lệnh từ moreutils.
Gilles 'SO- đừng trở nên xấu xa'

5

Nó dài không kém hai ln -slờ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à $HOMEkhông chứa bất kỳ khoảng trắng, tab hoặc dòng mới nào.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.