cp -r
পুনরাবৃত্তভাবে ফাইলগুলি অনুলিপি করা এবং cp -R
ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুলিপি করার উদ্দেশ্যে। তবে আমি চেক করেছি এবং উভয়ই একই ফাইল এবং ডিরেক্টরি উভয়ই অনুলিপি করতে দেখি। তো, আসলে কী পার্থক্য?
cp -r
পুনরাবৃত্তভাবে ফাইলগুলি অনুলিপি করা এবং cp -R
ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুলিপি করার উদ্দেশ্যে। তবে আমি চেক করেছি এবং উভয়ই একই ফাইল এবং ডিরেক্টরি উভয়ই অনুলিপি করতে দেখি। তো, আসলে কী পার্থক্য?
উত্তর:
যদিও -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.
-r
প্রতীকী লিঙ্কগুলি দ্বারা নির্দেশিত আসল ফাইলগুলি -R
অনুলিপি করবে এবং প্রতীকী লিঙ্কটি অনুলিপি করবে যা এটি বেশিরভাগ সময় লক্ষ্য করা যায়।
পার্থক্যটি হ'ল একটি ছোট হাতের ব্যবহার করে "আর" এবং অন্যটি মূলধন "আর" ব্যবহার করে। এর বাইরেও কোনও পার্থক্য নেই। আপনি যদি --recursive
দীর্ঘ বিকল্পটি ব্যবহার করেন তবে একই জিনিস ।
cp
আসলে একটি পার্থক্য রয়েছে। দেখুন Random832 এর উত্তর । @ ইগনাসিওর এই উত্তরে আপনার একটি যোগ্যতা অন্তর্ভুক্ত করা উচিত যা "যদি আপনার cp
আধুনিক জিএনইউ বাস্তবায়ন হয়" বা এর মতো কিছু রয়েছে says
-R
কেবল সর্বদা ব্যবহার করা বুদ্ধিমানের কাজ ছিল এবং বাস্তবে উল্লিখিত সিস্টেমে কিছু ম্যান পৃষ্ঠাগুলিও এটির প্রস্তাব দেয়।
ছোট হাতের -r
একটি পুরোনো বিকল্প, 4.1BSD চালু, যা কেবল ফাইল হিসেবে সমস্ত অ-ডিরেক্টরি কপি হবে। এটি হ'ল, যদি এটি কোনও ডিভাইস বা ফিফোর মুখোমুখি হয় তবে এটি এটিকে খুলতে, সামগ্রীগুলি পড়তে এবং সামগ্রীগুলির সাথে গন্তব্যে একটি ফাইল তৈরি করতে পারে।
বড় হাতের -R
স্ট্যান্ডার্ডাইজড অপশন ছিল (৪.৪ বিএসডি তে বিএসডির সাথে পরিচিত, যদিও এর আগের সংস্করণগুলির প্রতিশব্দ হিসাবে এটি ছিল -r
) যা কোনও ডিভাইস, ফিফো বা অন্যান্য বিশেষ ফাইলের মুখোমুখি হয়ে গন্তব্যস্থলে একটি সমতুল্য বিশেষ ফাইল তৈরি করবে।
অনেকগুলি বাস্তবায়ন এখনও এই পার্থক্য বজায় রাখে, তবে কিছু (লিনাক্সের জন্য সাধারণত জিএনইউ সংস্করণ সহ) প্রতিশব্দ হিসাবে কেবল -R
শব্দার্থবিদ্যা সরবরাহ করে -r
।
ওএস এক্স এবং ফ্রিবিএসডি-র পুরাতন সংস্করণগুলি কোর্টিলগুলির -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-contents
FIFOs এবং যেমন বিশেষ ফাইলগুলি থেকে পড়ার চেষ্টা করে অনির্দিষ্টকালের জন্য স্তব্ধ হয়ে যায় এবং/dev/console
আপনি যদি এটি অনুলিপি করতে ব্যবহার করেন তবে এটি আপনার গন্তব্য ডিস্ক পূরণ করবে/dev/zero
। পুনরাবৃত্তভাবে অনুলিপি না করা পর্যন্ত এই বিকল্পটির কোনও প্রভাব নেই এবং এটি প্রতীকী লিঙ্কগুলির অনুলিপিটিকে প্রভাবিত করে না।
আমি যে পার্থক্যটি পেয়েছি তার মধ্যে একটি হ'ল - লুকানো ডিরেক্টরিগুলি অনুলিপি করবেন না -আর লুকানো ডিরেক্টরিগুলি অনুলিপি করে।
আমি লক্ষ্য ডিরেক্টরিতে এটি .git ডিরেক্টরিটি পরীক্ষা করেছি এবং উপরের উপসংহারে এসেছি। আমি বর্তমানে সেন্টস ব্যবহার করছি।
আমি ভুল হতে পারি তবে এটি আলোচনার জন্য উন্মুক্ত।
-r
এবং -R
উভয় গোপন ডিরেক্টরি কপি