it-swarm-vi.tech

Làm thế nào để loại bỏ một liên kết tượng trưng đến một thư mục?

Tôi đã tạo một liên kết tượng trưng với lệnh sau:

ln -s ../test5

Tôi muốn xóa nó ngay bây giờ nhưng rm của tôi không thành công:

$ rm -Rf test5/
rm: cannot remove `test5/': Not a directory
$ rm test5/
rm: cannot remove directory `test5/': Is a directory
$ rmdir test5/
rmdir: test5/: Not a directory
$rm -r test5/
rm: cannot remove `test5/': Not a directory

$ls -l
 0 lrwxrwxrwx  1 peter peter    8 Jul 20 15:30 test5 -> ../test5/

Làm thế nào tôi có thể loại bỏ liên kết tượng trưng của tôi? (Ubuntu 8.10, bash)

99
Peter Smit

Xóa dấu gạch chéo:

Với lời nhắc:

$ rm test5

Không cần nhắc nhở:

$ rm -f test5

120
Swanand

Hãy thử rm test5
[.__.] (không có dấu gạch chéo đào tạo).

Dấu gạch chéo chỉ ra rằng 'test5' là một direactory trong khi đó thực sự là một tệp link vào một thư mục.

19
pelms

Bạn có thể chạy loại bỏ dấu gạch chéo:

$ rm test5

Thao tác này sẽ xóa tệp (nghĩa là symlink).

Ngoài ra, bạn có thể sử dụng hủy liên kết:

$ unlink test5

Một lần nữa, bạn phải bỏ qua dấu gạch chéo vì bạn đang cố gắng hủy liên kết symlink không phải thư mục.

12
Callum

Vấn đề trong OP là dấu /, vì vậy test5/ gây ra lỗi nhưng test5 hoạt động.

Tôi thích sử dụng unlink hơn là rm vì ý định của tôi rõ ràng hơn và không có cơ hội xóa nhầm thư mục thực thay vì liên kết. Đảm bảo rằng không có dấu / sau tên thư mục, ví dụ:

unlink test5
0
isapir

Đôi khi, nếu bạn sử dụng tự động hoàn tất để đặt tên cho liên kết mà bạn muốn xóa, bạn có thể không thấy dấu gạch chéo nhưng đó là 'một nửa' và dấu gạch chéo vô hình đó vẫn gây ra lỗi xóa khi cố gắng xóa liên kết đó.

Vì vậy, trong trường hợp đó, hãy gõ ký tự theo ký tự, liên kết sẽ bị xóa là "test5", vd. rm test5.

0
user872812