Tạo một liên kết tượng trưng của thư mục trong Ubuntu [đã đóng]


247

Dưới đây là mã của tôi để tạo một liên kết tượng trưng của một thư mục:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Tôi đã tạo thư mục /etc/nginx. Tôi chỉ muốn nội dung của thư mục nguồn ( /usr/local/nginx/conf/) nằm trong nội dung của thư mục đích ( /etc/nginx). Nhưng khi tôi thực thi mã, /etc/nginxchứa một thư mục được gọi conf, thay vì nội dung của conf. Thư mục đó chứa nội dung tôi muốn, nhưng ở vị trí sai.

Tại sao nó lại đặt một thư mục trong thư mục đích, thay vì chỉ đưa nội dung của thư mục vào thư mục đích?


Bạn cũng có thể sử dụng Tệp (trình duyệt tệp mặc định). Nhấp chuột phải vào thư mục bạn muốn liên kết> tùy chọn "Tạo liên kết". Nó sẽ tạo thư mục được liên kết mà bạn có thể di chuyển và đổi tên khi bạn cần.
John Linhart

4
Sử dụng bind mounttính năng linux . ví dụ
gkiko

Câu trả lời:


254

Đây là hành vi của lnnếu đối số thứ hai là một thư mục. Nó đặt một liên kết đến đối số đầu tiên bên trong nó . Nếu bạn muốn /etc/nginxtrở thành symlink, trước tiên bạn nên xóa thư mục đó và chạy lệnh đó.



10
Liên kết Unix.SE đó giải quyết trở lại đây. Có vẻ như chúng ta có một sự phụ thuộc tròn.
kaiser

30

Đó là những gì lnđược ghi lại khi mục tiêu đã tồn tại và là một thư mục. Nếu bạn muốn /etc/nginxtrở thành một liên kết tượng trưng thay vì chứa một liên kết tượng trưng, ​​tốt nhất bạn không nên tạo nó dưới dạng một thư mục trước tiên!


51
Câu trả lời của bạn chỉ có ý nghĩa trong bối cảnh người đọc đã biết câu trả lời. Nó là vô dụng đối với bất cứ ai sẽ đặt câu hỏi
Ricardo Saporta

1
Tôi thực sự có thể tạo một liên kết tượng trưng đến thư mục gốc của thiết bị USB được gắn (do đó tôi không thể xóa thư mục này trước)?
Grigory Kornilov

1
@GrigoryKornilov bạn có thể tạo một liên kết tượng trưng cho bất cứ điều gì bạn muốn, bao gồm cả những thứ không tồn tại. Câu hỏi này là về nơi mà symlink được tạo ra (không phải nơi nó trỏ đến). Một tên đường dẫn cụ thể trong hệ thống tệp là một tệp thông thường hoặc nó là một thư mục hoặc nó là một liên kết tượng trưng (hoặc nó là một ổ cắm hoặc đường ống hoặc thiết bị). Nó không thể được nhiều hơn một trong những điều đó cùng một lúc (tức là bạn không thể có nhiều hơn một tập tin riêng biệt với tên chính xác như nhau).
Celada

10

Trong kịch bản là hữu ích một cái gì đó như thế này:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

nó ngăn chặn trước khi tạo lại liên kết tượng trưng "xấu" sau khi chạy lại tập lệnh


1
Thông minh! Đây là giải pháp chính xác. không cần tạo thư mục nếu nó đã tồn tại. Đó là một tinh chỉnh thực sự tốt cho liên kết cứng và chìm nó vào lỗ đen (/ dev / null)
Cosmo Arun
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.