সিপি-আর সিপি-আর এর মধ্যে পার্থক্য (কপি কমান্ড)


60

cp -rপুনরাবৃত্তভাবে ফাইলগুলি অনুলিপি করা এবং cp -Rডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুলিপি করার উদ্দেশ্যে। তবে আমি চেক করেছি এবং উভয়ই একই ফাইল এবং ডিরেক্টরি উভয়ই অনুলিপি করতে দেখি। তো, আসলে কী পার্থক্য?


2
লিনাক্স ম্যানুয়ালগুলিতে এই বিকল্পগুলির প্রতিটি উল্লেখ বলে যে তারা সমার্থক শব্দ। (তারা অন্য কোনও ইউনিক্স রূপে নেই))
গিলস

উত্তর:


74

যদিও -Rপজিক্সটি সুসংজ্ঞায়িত, -rপোর্টেবল নয়!

লিনাক্স তারিখে, এর গনুহ এবং busybox বাস্তবায়নের মধ্যে cp, -rএবং -Rসমতুল্য।

অন্যদিকে, আপনি যেমন পসিক্স ম্যানুয়াল পৃষ্ঠাতে পড়তে পারেন cp, -rআচরণটি বাস্তবায়ন-সংজ্ঞায়িত

    * If  neither  the  -R  nor  -r  options were specified, cp shall take
      actions based on the type and contents of the file referenced by the
      symbolic link, and not by the symbolic link itself.

    * If the -R option was specified:

       * If  none  of  the  options  -H,  -L, nor -P were specified, it is
         unspecified which of -H, -L, or -P will be used as a default.

       * If the -H option was specified, cp shall take  actions based on
         the type and contents of the file referenced by any symbolic link
         specified as a source_file operand.

       * If the -L option was specified, cp shall take  actions based  on
         the type and contents of the file referenced by any symbolic link
         specified as a source_file operand or any symbolic links encoun-
         tered during traversal of a file hierarchy.

       * If  the  -P option was specified, cp shall copy any symbolic link
         specified as a source_file operand and any symbolic links encoun-
         tered  during traversal of a file hierarchy, and shall not follow
         any symbolic links.

    * If the -r option was  specified,  the  behavior  is implementation-
      defined.

14
পার্থক্যের মধ্যে একটি হ'ল উদাহরণস্বরূপ, ওএসএক্সে -rপ্রতীকী লিঙ্কগুলি দ্বারা নির্দেশিত আসল ফাইলগুলি -Rঅনুলিপি করবে এবং প্রতীকী লিঙ্কটি অনুলিপি করবে যা এটি বেশিরভাগ সময় লক্ষ্য করা যায়।
nacho4d

19

পার্থক্যটি হ'ল একটি ছোট হাতের ব্যবহার করে "আর" এবং অন্যটি মূলধন "আর" ব্যবহার করে। এর বাইরেও কোনও পার্থক্য নেই। আপনি যদি --recursiveদীর্ঘ বিকল্পটি ব্যবহার করেন তবে একই জিনিস ।


4
ম্যান পেজ থেকে: -আর, -আর, - রিচার্জ - ডিরেক্টরিগুলি অনুলিপিভাবে অনুলিপি করুন
ডেভ জেনিংস

6
@ ডেভ জেনিংস: কেবলমাত্র তারা একটি প্ল্যাটফর্মে সমতুল্য হওয়ার অর্থ এই নয় যে তারা সবসময়ে রয়েছে। কিছু বাস্তবায়নের ক্ষেত্রে cpআসলে একটি পার্থক্য রয়েছে। দেখুন Random832 এর উত্তর । @ ইগনাসিওর এই উত্তরে আপনার একটি যোগ্যতা অন্তর্ভুক্ত করা উচিত যা "যদি আপনার cpআধুনিক জিএনইউ বাস্তবায়ন হয়" বা এর মতো কিছু রয়েছে says
কালেব

@ কালেব: প্রশ্নটিকে "লিনাক্স" ট্যাগ করা হয়েছে। এটা আর কি হতে পারে?
Ignacio Vazquez-Abram 20

3
-আর এবং -r আমি ব্যবহার করি এমন কয়েকটি সিস্টেমে আলাদা আচরণ দেয় (ওএস এক্স, ফ্রিবিএসডি, ব্যজিবক্স কোর্টিল; এই মুহূর্তে কোনটি নিশ্চিত নয়)। আমি সিদ্ধান্ত নিয়েছিলাম অনেক আগেই -Rকেবল সর্বদা ব্যবহার করা বুদ্ধিমানের কাজ ছিল এবং বাস্তবে উল্লিখিত সিস্টেমে কিছু ম্যান পৃষ্ঠাগুলিও এটির প্রস্তাব দেয়।
সন্দেহভাজন

17

ছোট হাতের -rএকটি পুরোনো বিকল্প, 4.1BSD চালু, যা কেবল ফাইল হিসেবে সমস্ত অ-ডিরেক্টরি কপি হবে। এটি হ'ল, যদি এটি কোনও ডিভাইস বা ফিফোর মুখোমুখি হয় তবে এটি এটিকে খুলতে, সামগ্রীগুলি পড়তে এবং সামগ্রীগুলির সাথে গন্তব্যে একটি ফাইল তৈরি করতে পারে।

বড় হাতের -Rস্ট্যান্ডার্ডাইজড অপশন ছিল (৪.৪ বিএসডি তে বিএসডির সাথে পরিচিত, যদিও এর আগের সংস্করণগুলির প্রতিশব্দ হিসাবে এটি ছিল -r) যা কোনও ডিভাইস, ফিফো বা অন্যান্য বিশেষ ফাইলের মুখোমুখি হয়ে গন্তব্যস্থলে একটি সমতুল্য বিশেষ ফাইল তৈরি করবে।

অনেকগুলি বাস্তবায়ন এখনও এই পার্থক্য বজায় রাখে, তবে কিছু (লিনাক্সের জন্য সাধারণত জিএনইউ সংস্করণ সহ) প্রতিশব্দ হিসাবে কেবল -Rশব্দার্থবিদ্যা সরবরাহ করে -r


3

ওএস এক্স এবং ফ্রিবিএসডি-র পুরাতন সংস্করণগুলি কোর্টিলগুলির -rমতো -R -L --copy-contents, বা এটি প্রতিলিঙ্কগুলি অনুসরণ করে এবং বিশেষ ফাইল এবং এফআইএফওগুলির বিষয়বস্তু পড়ে।

mkdir a;touch b;ln -s $PWD/b a;cp -r a cওএস এক্স-তে লক্ষ্য ফাইলের সাথে সিমলিংকটি প্রতিস্থাপন করে, mkdir a;mkfifo a/b;cp -r a cফিফো পড়তে অবরুদ্ধ হয়ে যায় এবং জিরো mkdir a;ln -s /dev/zero a;cp -r a bদিয়ে ভরাট শুরু করে b/zero

cpওএস এক্সের ম্যান পৃষ্ঠা থেকে এবং ফ্রিবিএসডি-র পুরানো সংস্করণগুলি থেকে:

Historic versions of the cp utility had a -r option.  This implementation
supports that option; however, its use is strongly discouraged, as it
does not correctly copy special files, symbolic links, or fifo's.

ফ্রিবিএসডি-র নতুন সংস্করণগুলির -rসমতুল্য -RL:

Historic versions of the cp utility had a -r option.  This  implementation
supports that option, however, its  behavior is different from historical
FreeBSD behavior.   Use of this option is strongly discouraged as the
behavior is implementation-dependent.  In FreeBSD,  -r is a synonym for
-RL and works the same unless modified by other flags.  Historical  imple-
mentations  of -r differ as they copy special files as normal files while
recreating  a hierarchy.

http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html :

--copy-contents

যদি পুনরাবৃত্তভাবে অনুলিপি করা হয় তবে কোনও বিশেষ ফাইলের সামগ্রী (যেমন, এফআইএফও এবং ডিভাইস ফাইল) অনুলিপি করুন যেন সেগুলি নিয়মিত ফাইল। এর অর্থ প্রতিটি উত্স ফাইলে ডেটা পড়ার চেষ্টা করা এবং এটি গন্তব্যে লেখা। সাধারণত এই বিকল্পটি ব্যবহার করা ভুল হয়, কারণ এটি সাধারণত ফিফস এবং /devডিরেক্টরিতে সাধারণত পাওয়া যায় এমন বিশেষ ফাইলগুলিতে অনাকাঙ্ক্ষিত প্রভাব ফেলে । বেশিরভাগ ক্ষেত্রে, cp -R --copy-contentsFIFOs এবং যেমন বিশেষ ফাইলগুলি থেকে পড়ার চেষ্টা করে অনির্দিষ্টকালের জন্য স্তব্ধ হয়ে যায় এবং /dev/consoleআপনি যদি এটি অনুলিপি করতে ব্যবহার করেন তবে এটি আপনার গন্তব্য ডিস্ক পূরণ করবে /dev/zero। পুনরাবৃত্তভাবে অনুলিপি না করা পর্যন্ত এই বিকল্পটির কোনও প্রভাব নেই এবং এটি প্রতীকী লিঙ্কগুলির অনুলিপিটিকে প্রভাবিত করে না।


-1

আমি যে পার্থক্যটি পেয়েছি তার মধ্যে একটি হ'ল - লুকানো ডিরেক্টরিগুলি অনুলিপি করবেন না -আর লুকানো ডিরেক্টরিগুলি অনুলিপি করে।

আমি লক্ষ্য ডিরেক্টরিতে এটি .git ডিরেক্টরিটি পরীক্ষা করেছি এবং উপরের উপসংহারে এসেছি। আমি বর্তমানে সেন্টস ব্যবহার করছি।

আমি ভুল হতে পারি তবে এটি আলোচনার জন্য উন্মুক্ত।


4
আমি এটি সেন্টোস 5 এ দেখছি না; -rএবং -Rউভয় গোপন ডিরেক্টরি কপি
মাইকেল Mrozek
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.