লিনাক্সে ডিরেক্টরি অনুলিপি করার সময় কেন পুনরুক্তি করা দরকার?


47

আমার প্রশ্ন হ'ল -rডিরেক্টরিটির অনুলিপি তৈরি করার সময় কেন (পুনরাবৃত্ত) পতাকা ব্যবহার করা দরকার ? অর্থাৎ, কেন এটি করুন:

$ cp -r dir1 copyDir1

ডিরেক্টরি কপি করার সময় আমি কখন এই আচরণটি চাইব না?

ডিরেক্টরিটির সত্যিকারের "ডিফল্ট" আচরণের অনুলিপি করা অনুলিপি নয়; আমরা প্রায় সব সময় আচরণ চান?

এটি মনে হয় এটি একটি অতিমাত্রায় পতাকা।


এটিতেও আপনার ফাইল এবং ফোল্ডারটি অনুলিপি করার দরকার নেই?
QuyNguyen2013

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

@ ব্লগার এটি অনেক আগে প্রোগ্রাম করা হয়েছিল, তবে একটি কারণে। অর্থ যদি কেউ কমান্ড লাইনের পরিবেশে প্রাথমিক কাজ করতে চায় তবে তাদের কাজটি কেবল সিস্টেমের ব্যর্থতা এড়ানো যেমন সহজ তত সহজ হওয়া উচিত। মানে কিছু কমান্ড লাইন ব্যবহারকারীর ইন্টারঅ্যাকশন কনভেনশন রয়েছে এমন ভাল কারণ রয়েছে। আমি আমার উত্তরে এই ধারণাটি প্রসারিত করি।
জেকগল্ড

2
এই প্রশ্নটি ইউনিক্স.এসইতে জিজ্ঞাসা করা হয়েছে এবং উত্তর দেওয়া হয়েছে ।
dotancohen

একইrm

উত্তর:


58

যেভাবে ফাইল সিস্টেমগুলি কাজ করে, একটি ডিরেক্টরি আসলে ফাইল যুক্ত একটি ফোল্ডার নয় বরং একটি ডিরেক্টরি এমন একটি ফাইল যা এর সাথে সংযুক্ত "শিশু" ফাইলগুলিতে ইনড পয়েন্টার ধারণ করে। অর্থ, একটি ফাইল সিস্টেমের দৃষ্টিকোণ থেকে, একটি ফাইল একটি ফাইল, তবে ডিরেক্টরি কেবল সংযুক্ত ফাইলগুলির তালিকাযুক্ত একটি ফাইল।

সুতরাং কমান্ড লাইন দৃষ্টিকোণ থেকে, এটি করছেন:

$ cp dir1 copyDir1

মূলত dir1একটি নতুন নামকৃত ফাইলটির নামকরণ করা ফাইলটি অনুলিপি করা উচিত copyDir1। এবং যতদূর ফাইল সিস্টেম সম্পর্কিত, dir1যাইহোক যাইহোক কেবল একটি ফাইল; ফাইল ডিরেক্টরি যখন dir1বিটগুলির স্তূপটি আসলে তা কী তা পরীক্ষা করে দেখবে তখনই এটি একটি "ডিরেক্টরি" উপস্থিত রয়েছে be

-rপতাকা ফাইল / ডিরেক্টরি গাছটা যাও recursively রোলে ফাইল সিস্টেম বলে এবং কোন & সকল বিষয়বস্তু যে একটি নতুন স্থান থেকে একটি ফাইল "শিশু" হতে পারে কপি করুন।

এখন কেন এটি অতিরিক্ত কাজকর্ম বা অপ্রয়োজনীয় মনে হতে পারে, এটি ফাইল সিস্টেমের সাথে ডিল করার historicতিহাসিক পদ্ধতিগুলিতে নেমে আসে। পাশাপাশি এমন একটি সিস্টেম তৈরি করা যা ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত ত্রুটি থেকে নিরাপদ; দুর্ঘটনার পাশাপাশি ইচ্ছাকৃত।

অর্থ, আসুন আমরা বলি যে ~/binআপনার হোম ডিরেক্টরিতে আপনার একটি ফাইল রয়েছে যা আপনি অনুলিপি করতে চান তবে দুর্ঘটনাক্রমে left ~কারণ আপনি একজন মানুষ এবং ভুল করেছেন — তাই ঠিক এটির /binমতো:

cp /bin/ ~/copy_of_bin

পতাকার /binপ্রয়োজনীয়তার সাথে ডিরেক্টরি হিসাবে যুক্ত ডিরেক্টরি হওয়ার "সুরক্ষা জাল" দিয়ে -rআপনি নিজের হোম ডিরেক্টরিতে যে সিস্টেমটি চালু করছেন তার পুরো বাইনারি রুটটি ঘটনাক্রমে অনুলিপি করা এড়াতে পারবেন। যদি সেই সুরক্ষা জালটি না উপস্থিত থাকে তবে একটি ছোটখাটো বা সম্ভবত বড়-বড় বিপর্যয় ঘটত।

এখানে যুক্তিটি হ'ল যে দিনগুলিতে প্রাক-জিইউআই (গ্রাফিকাল ইউজার ইন্টারফেস) লজিক্যাল / আচরণগত কনভেনশনগুলি সেট করা দরকার যাতে ব্যবহারকারী তৈরি হওয়া দুর্ঘটনাগুলি এড়ায় যা সম্ভাব্যত কোনও সিস্টেমকে হত্যা করতে পারে। এবং -rপতাকা ব্যবহার করা এখন তাদের মধ্যে একটি।

যদি এটি অতিরিক্ত ব্যবহারের মতো মনে হয় তবে আধুনিক জিইউআই সিস্টেমের চেয়ে লিনাক্স ফাইল সিস্টেমের উপরের যেটি স্থাপন করা যেতে পারে তার চেয়ে বেশি দেখার দরকার নেই। একটি জিইউআই সহজেই ফাইল এবং ডিরেক্টরিগুলি ড্র্যাগ এবং ড্রপ করার অনুমতি দিয়ে এর মতো বেসিক ব্যবহারকারী সমস্যাগুলিকে সম্বোধন করে।

তবে পাঠ্য-ভিত্তিক ইন্টারফেসের ক্ষেত্রের ক্ষেত্রে, এই পৃথিবীর মধ্যে প্রচুর "ব্যবহারকারীর অভিজ্ঞতা" মূলত কেবল যুক্তিযুক্ত এবং হিউরিস্টিক-ভিত্তিক রাস্তাঘাট যা ব্যবহারকারীকে সম্ভাব্য বিপর্যয় এড়াতে সক্ষম করে রাখতে সাহায্য করে।

একইভাবে এই কারণেই লিনাক্স / ইউনিক্স ফাইল সিস্টেমে ডিফল্টরূপে নির্ধারিত 777অনুমতি এবং sudoঅধিকার নেই এবং যখন ব্যবহারকারী 777অনুমতি নির্ধারণ করে বা প্রত্যেকের sudoঅধিকার মঞ্জুর করে তখন প্রকৃত সিস্টেম প্রশাসকরা কীভাবে ঝাঁকুনি দেয় । সিস্টেমটি স্থিতিশীল এবং সম্ভব হিসাবে "ব্যবহারকারীর প্রমাণ" হিসাবে নিশ্চিত করতে এটি করা প্রাথমিক কাজগুলি; এই সম্মেলনগুলি শর্ট-সার্কিটে ছুটে আসা যে কেউ সম্ভবত এটি না জেনেও তাদের সিস্টেমের ক্ষতি করতে পারে।

অতিরিক্ত তথ্য: ইউনিক্স স্ট্যাক এক্সচেঞ্জ সাইটে এখানে আরও একটি উত্তর একটি ডিরেক্টরিটির পুনরাবৃত্তিযোগ্য অনুলিপি কেন সমস্যাযুক্ত তার একটি ভাল ব্যাখ্যা দেয়; জোর আমার।

ঠিক আছে, -আর পতাকা ব্যতীত কেবল ফাইলগুলি অনুলিপি করা সম্ভব, কারণ এটি অস্বাভাবিক যে কেউ পুনরুতরিতভাবে একটি ডিরেক্টরি অনুলিপি করতে চান: একটি নন-रिकर्सিভ অনুলিপি কেবল ডিরেক্টরিটির দিকে ইঙ্গিত করে ডিরেক্টরিটির দ্বিতীয় নাম হিসাবে প্রদর্শিত হবে একই ডিরেক্টরি কাঠামো। কারণ এটি খুব কমই লোকেরা যা চায়, এবং সেখানে একটি পৃথক প্রোগ্রাম রয়েছে যা এটি (এলএন) করে, ডিরেক্টরিগুলির একটি পুনরাবৃত্তির অনুলিপি অনুমোদিত নয়।

সুতরাং যদি কোনও ডিরেক্টরি হ'ল সত্যিকার অর্থে কোনও ফাইল এর ভিতরে ইনোড আইটেম থাকে তবে সেই ফাইলটির একটি সরল অনুলিপি তৈরি করা ঠিক কিভাবে হার্ড লিঙ্কে কাজ করবে তার সমতুল্য। যা কেউ চায় তা নয়।


19
আমি ব্যক্তিগতভাবে মনে করি এর "সুরক্ষা" দিকটি গন্ধ পরীক্ষায় উত্তীর্ণ হয় না। কিছু মানুষের ঠিক যেমন সহজে টাইপ করতে পারে cp -r /binযেমন cp-r ~/bin। পতাকাটি নিজেই ভুলগুলি প্রতিরোধ করে না বা অগত্যা কাউকে সতর্ক হওয়ার ক্ষেত্রে আরও ভাল করে তোলে। আপনি যদি ভুলগুলি প্রতিরোধ করতে চেয়েছিলেন, সিপি কমান্ডটি সহজেই প্রশ্নযুক্ত নোডের দিকে নজর দিতে পারে এবং একটি প্রম্পট সরবরাহ করতে পারে, "এটি একটি ডিরেক্টরি, আপনি কি সমস্ত বিষয়বস্তুকে নির্দিষ্ট স্থানে অনুলিপি করতে চান? / ঢ)? " যে হবে নিরাপত্তা জাল । ডিরেক্টরিগুলির জন্য -r প্রয়োজনের চেয়ে কোডের ব্লাটকে কিছুটা কম রাখে down
জেডিএল

12
ম্যানহোলের সাথে খারাপ সাদৃশ্য। @ জেডিএল যেমন বলেছে, প্রশ্নে থাকা পতাকাটি পথে কোনও টাইপো রোধ করতে কিছুই করে না। আমি কারণ হিসাবে অন্যান্য আদেশের সাথে সামঞ্জস্যতা গ্রহণ করতে আরও খুশি হব, তবে আমার আসল কারণটি অনুভূত হয়েছে যে "এটিই প্রথম এটি লেখা হয়েছিল এবং এখন অনেক কিছুই সেই আচরণের উপর নির্ভর করে, এটি পরিবর্তন করা অসম্ভব"।
বেসিক

7
আমরা যখন একটি ডিরেক্টরি সরিয়ে ফেলি তখন আমাদের দরকার হয় না- আর। আমি মনে করি unix.stackexchange.com এ লিঙ্কযুক্ত উত্তরটি বিন্দুতে অনেক বেশি। অপরিবর্তনীয় অনুলিপিটির সমতুল্য দ্বিতীয় ডিরেক্টরি থাকতে হবে এবং ডিরেক্টরি গাছের ভিতরে থাকা সমস্ত ফাইলের জন্য হার্ড-লিঙ্ক থাকতে হবে।
অঙ্কিত

2
যদি আমি ভুল না হলে, -r একটি গনুহ এক্সটেনশন ছিল - আমি মনে করি না ঐতিহাসিক ইউনিক্স CP ছিল একটি recursive কপি - এবং কমান্ড জন্য কারণ অংশ ছিল rsync
মেই

2
@ জ্যাকগল্ড আমি বেসিক ধারণাটি বুঝতে পারি। আমি তবে এই ধারণার বিরুদ্ধে তর্ক করছি যে প্রশ্নে থাকা কমান্ডের একটি -r পতাকাটি কোনও অতিরিক্ত সুরক্ষা সরবরাহ করে। আমার অভিজ্ঞতা থেকে, কমান্ড লাইন লিনাক্স কমান্ডগুলি historতিহাসিকভাবে সহজাতভাবে অনিরাপদ। সুরক্ষা অতিরিক্ত সময়ে যোগ করা হয়েছে, যদি না হয়। লিনাক্স ডিজাইনের অন্তর্নিহিত সুরক্ষা অনুমতি সিস্টেম থেকে আসে এবং মূল হিসাবে চলতে চলেছে। রুট হিসাবে চালানো নয় এমন একটি বিষয় যা ডিজাইনের চেয়েও অনেক বেশি একটি কনভেনশন। কনভেনশনটি বেশিরভাগ নতুন লিনাক্স ইনস্টলারগুলিতে সমর্থিত তবে এটি সর্বদা ছিল না।
জেডিএল

19

এটি খুব সত্য যে আমরা প্রায় সব সময় চাই আচরণ এটি। যদিও এর অর্থ এই নয় যে পুনরাবৃত্তভাবে অনুলিপি করা ডিফল্ট আচরণ হওয়া উচিত।

আমি মনে করি কারণগুলি ইউনিক্স দর্শনেরcp শিকড় যেমন আছে তেমন কাজ করে । ইউনিক্স এমন একটি প্রোগ্রামকে সমর্থন করে যা একটি কাজ করে এবং এটি ভাল করে , পাশাপাশি ইন্টারফেস এবং বাস্তবায়ন উভয়ই সহজ প্রোগ্রাম (কখনও কখনও খারাপ হিসাবে ভাল বলেও ভাল হয় )।

ধাঁধাটির মূল অংশটি অনুধাবন করা হচ্ছে যে cpডিরেক্টরিগুলি অনুলিপি করে না - cpফাইলগুলি (এবং কেবলমাত্র ফাইলগুলি) অনুলিপি করে । আপনি যদি কোনও ডিরেক্টরি অনুলিপি করতে চান তবে প্রতিটি ডিরেক্টরিতে ফাইলগুলি অনুলিপি cp করতে পুনরাবৃত্তভাবে নিজেকে কল করে

অবশ্যই, "অনুলিপি ডিরেক্টরিগুলি" এবং "পুনরাবৃত্তভাবে ফাইলগুলি অনুলিপি করা" এর মধ্যে পার্থক্য কোনও ব্যবহারকারীর দৃষ্টিকোণ থেকে একেবারেই কিছুই নয়, তবে এই ইন্টারফেসটি থাকা বাস্তবায়নটিকে সহজ রাখতে সহায়তা করে

আপনি যদি cpডিরেক্টরিগুলি অনুলিপি করতে সক্ষম হন তবে আপনাকে শীঘ্রই আরও বেশি বৈশিষ্ট্য যুক্ত করার জন্য প্রলুব্ধ করতে পারেন যা কেবলমাত্র ডিরেক্টরিগুলির জন্য বোধগম্য - উদাহরণস্বরূপ, আপনি কেবল ফাইলের নামগুলি অনুলিপি করতে চাইবেন .sh। অনিবার্যভাবে, এটি স্নিগ্ধ , জটিল এবং ত্রুটি-প্রবণ সফ্টওয়্যার তৈরি করে - অন্যান্য অপারেটিং সিস্টেমগুলিতে আমরা অভ্যস্ত যে স্ফীত এবং বৈশিষ্ট্য স্খলন বাড়ে leads

আর একটি সুবিধা হ'ল -rব্যবহারকারীকে ইন্টারফেসের নীচে কী ঘটছে তা বুঝতে সহায়তা করে। এর একটি দুর্দান্ত পার্শ্ব প্রতিক্রিয়া হ'ল পুনরাবৃত্ত অপারেশনের ধারণাটি শিখলে আপনি এটিকে সমর্থনকারী অন্যান্য সরঞ্জামগুলি সম্পর্কে শিখলে আপনার কিছু কাজ বাড়াতে পারে (যেমন grep, উদাহরণস্বরূপ)


কিছু মানুষ অবশ্যই আপনাকে বলবে যে ব্যবহারকারীকে বাস্তবায়ন বিবরণ প্রকাশক হয় খারাপ , এবং আরও বৈশিষ্ট্য হচ্ছে যে ভাল । আমার উদ্দেশ্য এখানে কেবল এই আচরণের যুক্তি ব্যাখ্যা করছে, তাই আমি কোনওভাবেই তর্ক করার চেষ্টা করব না।


2
+1 "... একটি কাজ করুন এবং এটি ভালভাবে করুন ..." এটি উল্লেখ করার জন্য আপনাকে ধন্যবাদ!
জেকগল্ড

5

ডিরেক্টরিগুলির সাথে ইন্টারঅ্যাকশনগুলি নিশ্চিত করে যে আপনি জানেন যে আপনি কোনও ডিরেক্টরিতে ইন্ট্যারাক্ট করছেন এবং কেবল একটি ফাইল নয়।

এই ক্ষেত্রে:

$ tree
.
└── folder1
    └── sub1
        └── subsub1

3 directories, 0 files
$
$ cp folder1/ folder2
cp: folder1/ is a directory (not copied).
$
$ mkdir blah
$ cp blah/ blah2
cp: blah/ is a directory (not copied).
$ rm blah/
rm: blah/: is a directory

সুতরাং, আপনি যদি কোনও ফোল্ডার সফলভাবে অনুলিপি করতে চান, যেহেতু এটি ফোল্ডারটি এবং ফোল্ডারটিকে রেফারেন্স সম্পর্কিত বিষয়গুলি উভয়ই বোঝায়, আপনি এটির সাথে এটি আচরণ করতে হবে যেন এটি কোনও ফাইলের সংকলন:

$ cp -r folder1/ folder2
$ rm -rf folder1

3

ডিফল্ট পরিবর্তনের পরিণতিটি হ'ল হাজার হাজার শেল স্ক্রিপ্টগুলি ভেঙে যায়। এটি সুপরিচিত ডিফল্ট আচরণের জন্য POSIX এবং SUS প্রয়োজনীয়তার দিকে নিয়ে যায়।

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

থেকে ওপেন গ্রুপ বেজ উল্লেখ ইস্যু 7 :

এই স্ট্যান্ডার্ডের পূর্ববর্তী সংস্করণগুলিতে ফাইলের স্তরক্রমের কপি করার জন্য -r বিকল্পের জন্য সমর্থন অন্তর্ভুক্ত ছিল। -R বিকল্পটি BSD এবং BSD- উদ্ভূত সিস্টেমগুলির onতিহাসিক অনুশীলন। এই বিকল্পটি আর পসিক্স ১.২-২০০৮ দ্বারা নির্দিষ্ট করা হয়নি তবে কিছু প্রয়োগে উপস্থিত থাকতে পারে। -R বিকল্পটি -r বিকল্পের ঘনিষ্ঠ প্রতিশব্দ হিসাবে যুক্ত হয়েছিল, POSIX.1-2008 এর এই ভলিউমের অন্যান্য বিকল্পগুলির সাথে সামঞ্জস্যতার জন্য নির্বাচিত যা পুনরাবৃত্ত ডিরেক্টরি বংশোদ্ভূত করে।

-আর এবং অপসারণ -r বিকল্পের মধ্যে পার্থক্য হ'ল নিয়মিত এবং ডিরেক্টরি বাদে ফাইল প্রকারের সিপি দ্বারা চিকিত্সার ক্ষেত্রে। এটি প্রয়োগ-সংজ্ঞায়িত হয়েছিল যে কীভাবে - বিকল্পটি উভয় historicalতিহাসিক বাস্তবায়ন এবং যেগুলি -R হিসাবে একই ক্ষমতা সহকারে -আর সমর্থন করতে বেছে নিয়েছিল - POSIX.1-2-2008 এর এই ভলিউম দ্বারা সংজ্ঞায়িত করার জন্য বিশেষ ফাইলগুলিকে কীভাবে আচরণ করেছে। মূল-আর পতাকা, Theতিহাসিক কারণে, বিশেষ ফাইলগুলিকে নিয়মিত ফাইলগুলি থেকে আলাদাভাবে পরিচালনা করে না, তবে সর্বদা ফাইলটি পড়ে এবং এর সামগ্রীগুলি অনুলিপি করে। বিশেষ ফাইল টাইপের উপস্থিতিতে এটির স্পষ্ট সমস্যা ছিল; উদাহরণস্বরূপ, অক্ষর ডিভাইস, FIFOs এবং সকেট।

বাস্তবে আপনি এখনও কিছু লোককে নিয়মিত ব্যবহার করতে দেখবেন:

cd dir1 ; tar -cf - . | (cd dir2 ; tar -xpf -)

কারণ তারা বিশ্বাস করে না যে cp -rবাস্তবায়ন কোনও স্বেচ্ছাচারী মেশিনে তারা অভ্যস্ত হয়; বা কারণ তারা tarআচরণ চান ।


3

এটি আজ সাবঅস্টিমাল ইউআই হতে পারে তবে ইউএনআইএক্স এর নকশাকালীন সময়ে ডিস্কটি বেশ ব্যয়বহুল হয়ে ওঠার সময় এটি 1970 সালের কিছুটা সময় নেওয়া সিদ্ধান্ত ছিল। লক্ষ লক্ষ শেল স্ক্রিপ্টগুলি সেভাবে কাজ করে এটির উপর নির্ভর করে এবং এটি পরিবর্তন করতে অনেক দেরি হয়ে গেছে।

মূল নকশা তথ্যের জন্য এই নিবন্ধটি দেখুন ।


3

-rপতাকাটির একটি সুস্পষ্ট সুবিধা হ'ল আপনি cp * /target/dirকেবলমাত্র উত্স ডিরেক্টরিতে থাকা সমস্ত ফাইলকে লক্ষ্য ডিরেক্টরিতে অনুলিপি করতে পারবেন , এতে অন্তর্ভুক্ত সমস্ত ডিরেক্টরি বাদ দিয়ে (একটি সতর্কতা দিয়েও)। cp -r * /target/dirএর পরিবর্তে সাব-ডাইরেক্টরিগুলি সহ সমস্ত কিছু অনুলিপি করবে।


2

আপনার কেবলমাত্র এই পতাকাটি তখনই দরকার যখন কেবলমাত্র ফাইলগুলি এবং ডিরেক্টরিগুলিcp অনুলিপি করার জন্য একটি আদেশ থাকে ।

ডিরেক্টরি কপির জন্য যদি একটি বিশেষ কমান্ড থাকত, তবে "ডিফল্ট" আচরণ অবশ্যই পুনরাবৃত্তির অনুলিপি হত।


1
ইন্দ্রিয় তোলে। তবে কেউ কেন এমন কোনও ডিরেক্টরি অনুলিপি করবেন যেখানে এতে কমপক্ষে একটি ফাইল নেই? তাহলে শুধু ব্যবহার mkdirকরবেন না কেন ?
জ্যাকগল্ড

1
@ জ্যাকগল্ড সম্ভবত তাদের কারণ মালিকানা এবং অনুমতি সংরক্ষণের প্রয়োজন হতে পারে?
Ruslan

1

অন্যরা যেমন উল্লেখ করেছে, একটি ডিরেক্টরি হ'ল মূলত অন্য ধরণের ফাইল (নিয়মিত ফাইলের বিপরীতে) হয়, যা সাধারণত অন্যান্য ফাইলগুলিতে "থাকে" (পয়েন্ট) করে। এটিতে উপ-ডিরেক্টরি থাকতে পারে, যার জন্য একই প্রযোজ্য ...

সুতরাং আপনি যদি কোনও ডিরেক্টরি (ব্যবহারকারীর দৃষ্টিকোণ) অনুলিপি করেন তবে আপনি সত্যিই একগুচ্ছ ফাইলগুলি (ফাইল সিস্টেমের দৃষ্টিকোণ) অনুলিপি করছেন (নিয়মিত ফাইল, ডিরেক্টরি ফাইল, প্রতীকী লিঙ্কগুলি ...) এবং প্রতিটি ডিরেক্টরি ফাইলের জন্য, আপনি পুনরাবৃত্তি করে পুনরাবৃত্তি করছেন যে প্রক্রিয়া। যেহেতু একটি ডিরেক্টরি অনুলিপি করা হয় সংজ্ঞা অনুসারে একটি পুনরাবৃত্ত প্রক্রিয়া, সিপির আর্গুমেন্ট বলা হয় --recursive

এটি অবশ্যই আপনার ব্যবহারকারীর পরিবেশে একটি কমান্ড শর্টকাট তৈরি করা খুব সহজ (এটি স্থায়ীভাবে উপলভ্য করার জন্য এটি আপনার প্রোফাইলে / .bashrc ফাইলে রাখুন):

alias cpr='cp -r'

বা সম্ভবত আরও ভাল:

alias cpa='cp -av'

এইভাবে, আপনি ব্যবহার করে একটি ডিরেক্টরি অনুলিপি করতে পারেন cpa dir1 copyDir1এবং এটি কেবল যা অনুলিপি করা হচ্ছে তা মুদ্রণ করবে না তবে ফাইল অনুমতিও প্রয়োগ করবে।

এবং যেহেতু কেউ উল্লেখ করেছেন যে সিপি তাত্ত্বিকভাবে উত্স ফাইলটি একটি ডিরেক্টরি তা সনাক্ত করতে পারে এবং জিজ্ঞাসা করতে পারে এটির পুনরাবৃত্তভাবে এটি অনুলিপি করা উচিত কিনা, তাই এখানে একটি দ্রুত পরামর্শ দেওয়া হয়েছে:

cp()
{
    if [ ! -e "$1" ]; then
        echo missing source file
        return 1
    fi
    arg="-d --preserve=all -v"
    if [ -d "$1" ]; then
        read -p "Copy directory recursively? " -n 1 -r
        if [ "$REPLY" == "y" ]; then
            arg="$arg -r"
        fi
        echo
    fi
    /usr/bin/cp $arg "$@"
}

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

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