Nếu việc sao chép được thực hiện trong một số thiết bị đầu cuối shell (tức là bash), thì cp
có thể được yêu cầu rõ ràng để sao chép tệp mà một liên kết trỏ tới --dereference
, thay vì chính liên kết đó. Hành vi mặc định của cp
là sao chép các tệp bằng cách theo liên kết của chúng, nhưng nhiều trình duyệt tệp đồ họa dường như có hành vi mặc định cố gắng sao chép liên kết và thường duy trì hầu hết các thuộc tính.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Thí dụ
touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink
Thực tế đó someLink
là một liên kết, được hiển thị bởi l
cờ ở vị trí đầu tiên của đầu ra danh sách (và `d 'chỉ định một thư mục).
ls -l
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
Tệp chứa nội dung và liên kết trỏ đến tệp, nhưng có thể được sử dụng gần như bất kỳ cách nào mà tệp có thể. (Lưu ý kích thước tệp liên kết so với kích thước tệp văn bản: 32 Byte so với 12 byte.)
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Đầu tiên, sao chép liên kết đến một thư mục. Sau đó sao chép tập tin vào thư mục, thông qua liên kết. (Dưới đây cũng cho thấy các liên kết thư mục hoạt động theo cách tương tự như liên kết tệp.):
cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Thận trọng
Liên kết có thể được thực hiện để trỏ đến một đường dẫn đầy đủ hoặc một đường dẫn tương đối. Vì ví dụ này đã sử dụng một liên kết dựa trên đường dẫn tương đối của mục tiêu nằm trong cùng thư mục với liên kết được tạo, liên kết bị phá vỡ khi được sao chép vào một thư mục mới.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.