Làm cách nào để chuyển đổi các liên kết tượng trưng tương đối thành các liên kết tượng trưng tuyệt đối trong bash?chuyển đổi các liên kết tượng trưng tương đối thành các liên kết tượng trưng tuyệt đối
Trả lời
ln -sf "$(readlink -f "$link")" "$link"
+1, không biết về các tùy chọn chuẩn hóa cho readlink! – Flexo
Bạn có thể thực hiện việc này cho tất cả các liên kết tượng trưng trong thư mục làm việc hiện tại bằng cách sử dụng: 'find ./ -type l -execdir bash -c 'ln -sfn' $ (readlink -f" $ 0 ")" "$ 0" '{} \ ; ' –
Đối với các liên kết tượng trưng trỏ đến các thư mục không thành công: nó tạo các liên kết mới có cùng tên trong thư mục (ví dụ: foo -> ../foo bạn nhận foo/foo ->/abs/path/to/foo) . –
Chỉ trong trường hợp ai đó tìm kiếm hoạt động ngược lại: chuyển đổi từ các liên kết tuyệt đối tương đối:
Sử dụng python:
find . -lname "`pwd`*" -exec sh -c 'ln -snvf `python -c "from os.path import *; print relpath(\"$(readlink {})\",dirname(\"{}\"))"` {}' \;
Chỉ sử dụng bash và sed:
find . -lname "`pwd`/*" -depth 1 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|.|"` {}' \;
find . -lname "`pwd`/*" -depth 2 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|..|"` {}' \;
find . -lname "`pwd`/*" -depth 3 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|../..|"` {}' \;
etc....
Điều này sẽ chuyển đổi tất cả các liên kết tuyệt đối trong các thư mục con thành các liên kết tương đối.
Ngoài ra còn có một gói symlink có sẵn: 'symlinks -a/path/to/modify' http://linux.die.net/man/8/symlinks – pztrick
Thật không may nó không có sẵn trên một số hệ điều hành. ; ( –
Bạn có thể tải xuống tệp nguồn Debian và chỉ chạy 'gcc symlinks.c -o/usr/local/bin/symlinks'. Có vẻ như không phụ thuộc vào bất kỳ điều gì khác. Http://http.debian.net/ debian/pool/main/s/symlinks/symlinks_1.4.orig.tar.gz – pztrick
Dựa trên câu trả lời @ thkala, tôi bổ sung này để .bashrc của tôi:
function lnabs {
#http://stackoverflow.com/questions/4187210/convert-relative-symbolic-links-to-absolute-symbolic-links
ln -sf "$(readlink -f "$1")" "$*"
}
- 1. Emacs và các liên kết tượng trưng
- 2. Tạo liên kết tượng trưng với Java
- 3. Liên kết tượng trưng trong windows XP
- 4. .htaccess hoặc liên kết tượng trưng (symlink)
- 5. Làm cách nào để di chuyển liên kết tượng trưng tương đối?
- 6. File.Copy() và Liên kết tượng trưng
- 7. android: xác định liên kết tượng trưng
- 8. Liên kết cứng và liên kết tượng trưng trong Unix
- 9. Kiểm tra liên kết tượng trưng
- 10. Nginx không theo các liên kết tượng trưng
- 11. cách lấy Đường dẫn tuyệt đối cho tệp liên kết tượng trưng?
- 12. Bỏ qua các liên kết tượng trưng trong .gitignore
- 13. Xóa các liên kết tượng trưng trong PHP
- 14. Tìm thư viện tương đối khi sử dụng liên kết tượng trưng đến ruby thực thi
- 15. Sửa đổi một liên kết tượng trưng trong python
- 16. Tạo một liên kết tượng trưng tương đối trong python mà không sử dụng os.chdir()
- 17. Phát hiện một liên kết tượng trưng trong Java
- 18. tập tin quy tắc debian tạo liên kết tượng trưng
- 19. Liên kết tượng trưng đến một cái móc trong git
- 20. Thay thế liên kết tượng trưng quan trọng ‘an toàn’
- 21. có thể liên kết tượng trưng tấn công
- 22. làm thế nào để tìm thấy đầy đủ (đường dẫn tuyệt đối) các tập tin mục tiêu của liên kết tượng trưng hoặc liên kết mềm trong python
- 23. java sẽ không liên tục giải quyết các liên kết tượng trưng trên Linux
- 24. Có gì đằng sau một liên kết tượng trưng?
- 25. Một đối tượng trong Google Cloud Storage hoạt động như một "chuyển hướng" hoặc "liên kết tượng trưng"
- 26. Làm cách nào để xóa liên kết tượng trưng?
- 27. tạo liên kết tượng trưng: Lỗi giao thức
- 28. Có phiên bản nào của os.getcwd() không liên quan đến các liên kết tượng trưng không?
- 29. Làm thế nào tôi có thể bãi bỏ các liên kết tượng trưng trong bash?
- 30. listFiles() của Tệp không hoạt động trên các liên kết tượng trưng?
Ý anh là gì bởi "đệ quy"? – thkala