সিপি-এল বনাম সিপি-এইচ


45

সমস্যা

cp -Hবা এর সাথে ফাইলগুলি অনুলিপি করার সময় cp -L, আমি একই ফলাফল পাই:

$ ls -l fileA
  fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
  fileA     # fileA is a copy of fileB, only renamed, with same properties!

এই উত্তরটি এখানে উভয় বিকল্পের সাথে মিলিত ইউএনএলএসএস হিসাবে ব্যবহৃত হিসাবে বর্ণনা করে -R। আমার জন্য না. সফট - হার্ডলিঙ্কযুক্ত ফাইলগুলি উত্সকে দেখানো ফাইলগুলির নতুন কপি হয়ে যায়।
 

প্রশ্ন :

এর সঠিক ব্যবহার কী cp -Hএবং cp -L? এটা কি প্রত্যাশিত আচরণ?


  সমাধানের জন্য আমার প্রয়াস : man cpআমাকে বেশ উভয় অপশন জন্য একই বলে, কিন্তু info cpএর বাক্যে কথন এটি আরও বেশি আমার জন্য বিভ্রান্তিকর তোলে। সম্ভবত কেউ আমাকে এটি কিছুটা ভাঙ্গতে সহায়তা করতে পারে:

-H যদি কোনও কমান্ড লাইনের যুক্তি একটি প্রতীকী লিঙ্ক নির্দিষ্ট করে, তবে এটি যে ফাইলটি নির্দেশ করে তা অনুলিপিযুক্ত লিঙ্কের চেয়ে কপি করুন । তবে পুনরাবৃত্তির ট্র্যাভারসালের মাধ্যমে যে কোনও প্রতীকী লিঙ্কের মুখোমুখি হওয়া অনুলিপি করুন (তার প্রকৃতি সংরক্ষণ করে)

এটি আমার কাছে দ্বন্দ্বের মতো শোনাচ্ছে: আমার ধারণা » একটি প্রতীকী লিঙ্কের প্রকৃতি it এটি কোথাও উল্লেখ করেছে ...

-L, --dereference প্রতীকী লিঙ্কগুলি তাদের থেকে অনুলিপি করার সময় অনুসরণ করুন। এই বিকল্পের cpসাহায্যে একটি প্রতীকী লিঙ্ক তৈরি করতে পারে না। উদাহরণস্বরূপ, উত্স গাছের একটি সিমিলিংক (নিয়মিত ফাইলের কাছে) গন্তব্য বৃক্ষের একটি নিয়মিত ফাইলে অনুলিপি করা হবে।

আমি জানি যে একটি সিমিলিংক কোনও নিয়মিত ফাইল নয়, তবে… আমি স্বীকার করি যে আমি এখানে এই ব্যাখ্যাটি দিয়ে আচ্ছন্ন।


চালান info cp, অনুসন্ধান করুন -R। এটি বলেছে Copy directories recursively. তবে আপনি নন-ডিরেক্টরি দিয়ে পরীক্ষা করছেন। পার্থক্য কি সম্পর্কে ভিতরে ডিরেক্টরি আপনি অনুলিপি করা হয়, না কমান্ড লাইন আর্গুমেন্ট।
মাইকেল

@ মাইকেল আমি ডিরেক্টরিগুলির বিষয়বস্তু অনুলিপি করার চেষ্টা করেছি এবং ডিরেক্টরিগুলি কন্টেন্টের সাথে অনুলিপি করেছি এবং বেশিরভাগ একই ফলাফল পেয়েছি। এছাড়াও: আমি সামনে বেশ দীর্ঘ সময় বসেছিলাম info cpএবং এই বিকল্পের শব্দের পছন্দটি আসলে কী বোঝায় তা বোঝার জন্য কঠোর চেষ্টা করেছি & ndash; এবং যা এই পোস্টিং সম্পর্কে। পোস্টিংটিতে আসল info cp
শব্দটিও

উত্তর:


55

সিমলিংকের সাহায্যে, সরঞ্জামগুলিতে দুটি জিনিস তারা করতে পারে:

  1. সিমলিংককে একটি সিমিলিংক ("এর প্রকৃতি সংরক্ষণ করে"), বা হিসাবে ব্যবহার করুন
  2. সিমলিংকটিকে ফাইলের ধরণের হিসাবে বিবেচনা করে যা এটি নির্দেশ করে।

এই বলে যে -H"তার প্রকৃতি অপরিবর্তিত" একটি অসঙ্গতি নয়। বিকল্প বিবেচনা করুন। আপনি যদি ব্যবহার করেন তবে যে -Lকোনও সিমলিংক cpখুঁজে পাওয়া যাবে তা খোলা হবে এবং তাদের বিষয়বস্তুগুলি লক্ষ্য ফাইলের নামের সাথে অনুলিপি করা হবে। সুতরাং উত্সটি একটি সিমিলিংক ছিল, তবে এর অনুলিপিটি কোনও সিমিলিংক নয়। সুতরাং এটি "সিমলিংকের মতো প্রকৃতি হারিয়েছে"।

বিবেচনা

$ mkdir subdir
$ echo "some contents" > subdir/file
$ ln -s file subdir/link

# definition of "list", the abbreviated ls -l output used below
$ list() { ls -l "$@" | \
    awk '$0 !~ /^total/ { printf "%s %s\t%s %s %s\n", $1, $5, $9, $10, $11 }' ; }

$ list subdir
-rw-rw-r-- 14   file  
lrwxrwxrwx 4    link -> file

$ cp -rH subdir subdir-with-H
$ list subdir-with-H
-rw-rw-r-- 14   file  
lrwxrwxrwx 4    link -> file

$ cp -rL subdir subdir-with-L
$ list subdir-with-L
-rw-rw-r-- 14   file  
-rw-rw-r-- 14   link  

দুর্দান্ত উত্তর options বিকল্পগুলি কী করে আপনার চিত্রিত করার পদ্ধতিটি আমি পছন্দ করি। এটি আমার প্রশ্নের পুরোপুরি উত্তর দেয় না , যা ভাইবাল ডিরেক্টরিতে সিমলিংকগুলি অনুলিপি করার বিষয়ে, তবে আপনি কীভাবে কীভাবে তাড়াতাড়ি অনুসন্ধান করতে পারবেন তা স্পষ্ট করে দিয়েছি। 😉
মাইকেল শ্যাপার 21

1
আহ, আমি যা জানতে চেয়েছিলাম তা হ'ল: superuser.com/a/138594/219388
মাইকেল শেপার

19

আচরণের পার্থক্য -Lএবং -Hযখন আসে -rপাশাপাশি উল্লেখ করা হয়। cpসাব-ডাইরেক্টরিগুলিতে সিমলিঙ্কগুলি তৈরি করে না -L -rতবে এটি ব্যবহার করা হয় -H -r


সিপি: -H, -L, এবং -P বিকল্পগুলি -r বিকল্পের সাথে নির্দিষ্ট করা যাবে না।
3z33etm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.