কীভাবে সিদ্ধান্ত নেবেন যে এমভি ডিরেক্টরি পরিবর্তনের পরিবর্তে ডিরেক্টরিতে চলে যায়?


18

বলুন আমার একটি ডিরেক্টরি আছে /hello

তাহলে আমি করি mv /hello /hello2

আমি চলন্ত করছি /helloমধ্যে /hello2/hello? নাকি আমি চলন্ত করছি /helloকরার /hello2?

দেখে মনে হয় যে আমি যখন এই জাতীয় কিছু করি তখন আমি বেমানান ফলাফল পাই।


1
কোন ক্ষেত্রে ফলাফলটি বেমানান? মনে হয় যখনই লক্ষ্য ডিরেক্টরি উপস্থিত থাকে এটি লক্ষ্য ডিরেক্টরিতে চলে আসে, অন্যথায় এটির নাম পরিবর্তন হয়।
জামাতেজে

এটি বেমানান। একই কমান্ড একই জিনিস করা উচিত। এর অর্থ হ'ল আদেশটি অস্পষ্ট।
user4951

এটি প্রকৃতপক্ষে অসঙ্গতিপূর্ণ নয় কারণ এটি প্রসঙ্গের মধ্যে ধারাবাহিকভাবে কাজ করে। যদিও আমি দেখতে পাচ্ছি এটি কীভাবে বিভ্রান্তিকর তবে আমি এটির সম্পর্কে যত বেশি চিন্তা করি, সমস্ত পরিস্থিতিতে কাজ করার জন্য কমান্ডটি সেভাবে হওয়া উচিত।
জামাতেজে

আমি বরং এটি বলব যে এটি কীভাবে ডিজাইন করা হয়েছে এবং এটিও যৌক্তিক..আপনি mvফাইলগুলির সাথে একই জিনিস ব্যবহার করেন directories mvডিরেক্টরিতে পুনর্নবীকরণ.বাটকে ঠিকঠাক সহ পুরো ডিরেক্টরিটি মুছে ফেলা ভাল নয় কারণ একটি mvকমান্ডের কারণে সাব-ডিরেক্টরিতে পুরো ডিরেক্টরি মুছে ফেলা যায় না নিরাপদ। সুতরাং এটি হিসাবে সরানো হয় test1/test2। তবে আপনি যদি এখনও এটি অ্যাকাইভ করতে চান তবে একটি লিখুন aliasযা প্রদত্ত প্যারামিটারটি ডিরেক্টরি কিনা তা পরীক্ষা করে এবং তারপর rm -rf ডিরেক্টরিটি করে এবং mvকমান্ডটি ব্যবহার করে তবে এটি নিজের ঝুঁকিতে ব্যবহার করুন।
harish.venkat

আমি সন্দেহ করি যে আপনার উদাহরণটি অতীতে ঘটেছিল এমন কিছুকে ভুলভাবে বোঝার উপর ভিত্তি করে তৈরি হয়েছে "" মনে হচ্ছে আমি এই জাতীয় কিছু করি "on যদি উভয়ই হয় /helloএবং /hello2ডিরেক্টরি হয় তবে আমি লক্ষ্য করেছি যে cp /hello /hello2এটি এক নয়। ট্রেলিং স্ল্যাশের কী সংমিশ্রণের উপর নির্ভর করে, কখনও কখনও এর সামগ্রীগুলি /helloঅনুলিপি করা হয় /hello2এবং কখনও কখনও ডিরেক্টরিটি নিজেই অনুলিপি করা হয়
ইজকাটা

উত্তর:


16

mv a bসরাতে প্রচেষ্টা aমধ্যে bযদি bএকটি ডিরেক্টরি বা ডিরেক্টরিতে অবশ্যই এমন একটি সিমবলিক লিঙ্ক আছে। অন্যথায়, এটি নামান্তর হবে (বা কপি এবং বিভিন্ন ফাইল-সিস্টেমের উপর যদি মোছা) aথেকে b

ডিরেক্টরিতে কোনও ফাইল স্থানান্তরিত করার জন্য ধারাবাহিক ফলাফল পেতে, আপনি এটি করতে পারেন:

mv file dir/

অথবা

mv file dir/.

যদি dirবিদ্যমান নয়, আপনি একটি ত্রুটি পাবেন, এবং এটি নামান্তর করা হবে না fileকরতে dir

অন্যদিকে, renameগন্তব্য ফাইলটি ডিরেক্টরি হিসাবে উপস্থিত রয়েছে কিনা তা চিন্তা না করেই আপনি একটি কাজ করতে চান , জিএনইউ এমভি সহ, আপনি এটি করতে পারেন:

mv -T file dest

সেক্ষেত্রে, fileমধ্যে সরানো হবে না destযদি destএকটি ডিরেক্টরি। তবে, উভয় fileএবং destডিরেক্টরি যদি হয় এবং destখালি থাকে fileতবে এর নামকরণ করা হবে dest(এবং মূল destমুছে ফেলা)। যদি উভয় ডিরেক্টরি হয় এবং destখালি না থাকে mv -Tতবে অভিযোগ করবে।

একই, যদি fileএবং destহয় না ডিরেক্টরি (এবং যে ডিরেক্টরি থেকে symlinks সহ symlinks অন্তর্ভুক্ত), fileনাম পালটে করা হবে dest(যদি তোমাদের কাছে লিখলাম অনুমতি নেই যদিও আপনি একটি প্রম্পট পাবেন dest), এবং মূল destসরানো হবে। যে কোনও mv file destক্ষেত্রে destডিরেক্টরিতে একটি সিমিলিংক রয়েছে তার ক্ষেত্রে পার্থক্য রয়েছে । এর সাথে -T, fileনামকরণ করা হয় dest, তবে ছাড়াই -T, fileনির্দেশিত ডিরেক্টরিতে সরানো হয় dest

সুতরাং সংক্ষেপে, এর পরে mv -T file dest, হয় আবার fileনামকরণ করা হবে destঅথবা আপনি একটি ত্রুটি বার্তা (বা একটি প্রম্পট) পাবেন। যদি কমান্ডটি সফল হয় তবে আসলটি destযদি এটি বিদ্যমান ছিল তবে আগেই সরিয়ে ফেলা হবে।


14

এটি ইতিমধ্যে যদি '/ হ্যালো 2' নামে একটি ডিরেক্টরি ইতিমধ্যে বিদ্যমান ছিল বা না থাকে তার উপর নির্ভর করে।

যদি / হ্যালো 2 বিদ্যমান থাকে এবং ডিরেক্টরি হয় তবে সর্বদা সরানো / হ্যালো / হ্যালো / হ্যালো 2 তে সরানো হবে

যদি / হ্যালো 2 বিদ্যমান না থাকে তবে সরানো সর্বদা / হ্যালো / হ্যালো 2-এর নাম পরিবর্তন করবে

যদি / হ্যালো 2 বিদ্যমান থাকে এবং একটি ফাইল হয় তবে আপনি একটি ত্রুটি পাবেন, "ডিরেক্টরি 'হ্যালো' দিয়ে অ-ডিরেক্টরি 'হ্যালো 2' ওভাররাইট করতে পারবেন না।


3

আমি এই চেষ্টা করেছিলাম

mkdir test1
mv -v test1 test2
output:`test1' -> `test2'
mkdir test1
mv -v test2 test1
output: `test2' -> `test1/test2'
touch test2
output:mv: cannot overwrite non-directory `test2' with directory `test1'

আশা করি এটি সবকিছু ব্যাখ্যা করে। -vভার্জোজ মোড।

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