ডিরেক্টরি উপস্থিত আছে কিনা তা পরীক্ষা করে দেখুন এবং একটি কমান্ড ইউনিক্সে মুছে ফেলুন


106

ইউনিক্সে একটি কমান্ড ব্যবহার করে কোনও ডিরেক্টরি উপস্থিত রয়েছে কিনা তা মুছে ফেলা এবং মুছে ফেলা সম্ভব? আমার পরিস্থিতি রয়েছে যেখানে আমি এএনটি 'শেসেক্সেক' টাস্কটি ব্যবহার করি যেখানে আমি রিমোট মেশিনে কেবল একটি কমান্ড চালাতে পারি। এবং আমাকে ডিরেক্টরি আছে কিনা তা পরীক্ষা করে এটি মুছতে হবে ...


কেন শুধু আরএমডির ব্যবহার করবেন না? ডিরেক্টরি উপস্থিত না থাকলে এটি ব্যর্থ হবে।
ফেরুক্সিও

4
এটা ব্যর্থ হবে। এবং আমার এএনটি স্ক্রিপ্টে ত্রুটি। এটি আমার বিল্ডটিকে ক্রাশ করবে।
রিমো

mkdir -pইতিমধ্যে বিদ্যমান থাকলে ব্যবহার ত্রুটিগুলি উপেক্ষা করবে।
user562374

2
@ ফের্রুসিও- rm -rf / dir_name ব্যবহার করে ত্রুটি হয় না তবে rm -rf / dir_name নিক্ষেপ করে বলে যে এরকম কোনও ফাইল বা ডিরেক্টরি পাওয়া যায় নি। (
সবেমাত্র

3
@ রেমো ভাই আপনি ঠিক একই কমান্ড দু'বার পোস্ট করেছেন
মার্কোস পেরেইরা

উত্তর:


149

ধারনাটি $WORKING_DIRডিরেক্টরিতে সেট করা আছে ... এই ওয়ান-লাইনারটি এটি করা উচিত:

if [ -d "$WORKING_DIR" ]; then rm -Rf $WORKING_DIR; fi

(অন্যথায় কেবল আপনার ডিরেক্টরিতে প্রতিস্থাপন করুন)


161

শুধু ব্যবহার rm -rf /some/dirকরবেন না কেন ? ডিরেক্টরি উপস্থিত থাকলে এটি সরিয়ে ফেলবে, অন্যথায় কিছুই করবেন না। ভিন্ন rm -r /some/dirকমান্ডের এই গন্ধ যদি ফোল্ডারের অস্তিত্ব নেই বিপর্যস্ত করা হবে না।


13
আমি মনে করি মূল প্রশ্নটি বোঝানো হয়েছিল: ফাইল / ডিরেক্টরি উপস্থিত থাকলে বা না থাকলেই মুছুন perform এই কমান্ডটি একই রকমের কাজ করতে পারে এবং ফলাফল তৈরি করতে পারে তবে কমান্ডটি আরও বোধগম্য হওয়ার আগে একটি পরীক্ষা করছে।
অঙ্কুর চৌহান

5
অংকুরচৌহান +1, আমি সতর্কতা পেয়েছি যদি দিরের অস্তিত্ব না থাকে।
inf3rno

12
এটি প্রশ্নের উত্তর নয়।
xpto

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

8
আমি মনে করি এটি সঠিক উত্তর। এটি @ রেমোর যা প্রয়োজন তা করে, যেমন কোনও ডিরেক্টরি উপস্থিত থাকলে কেবল মুছে ফেলা এবং যদি তা না দেয় তবে ত্রুটি না দেয়। সম্ভবত প্রশ্নটি খুব একটা ভালভাবে রাখা হয়নি কারণ এই আদেশটি যখন যত্ন নেবে না তখন কেন আপনার অস্তিত্ব পরীক্ষা করতে হবে ?!
পেদরাম বাশিরি

32

চেষ্টা করুন:

bash -c '[ -d my_mystery_dirname ] && run_this_command'

সম্পাদনা : আপনি যদি রিমোট মেশিনে ব্যাশ চালাতে পারেন তবে এটি কাজ করবে ....

সম্পাদনা 2 : ব্যাশে, [ -d something ]'কিছু' নামক ডিরেক্টরি রয়েছে কিনা তা পরীক্ষা করে, যদি এটি উপস্থিত থাকে এবং একটি ডিরেক্টরি হয় তবে একটি সাফল্য কোড ফেরত দেয়। && এর সাথে শৃঙ্খলাবদ্ধ কমান্ড কেবল দ্বিতীয় কমান্ডটি চালিত হয় যদি প্রথমটি সফল হয়। সুতরাং [ -d somedir ] && commandডিরেক্টরি উপস্থিত থাকলে কমান্ডটি চালায়।


হ্যাঁ, এবং এটি আপনি যা চান তা নিশ্চিত করার জন্য এটি শেলের মধ্যে দিয়ে দেখুন।
sinelaw

প্রথমে আমি দেখতে চাই যে এটি স্থানীয়ভাবে কাজ করে এবং সেগুলি আমি দূরবর্তী থেকে কমান্ডটি প্রেরণ করতে পারি। আমি কি "/ টেস্ট" ডিরেক্টরিটি পরীক্ষা করতে বলছি?
রিমো

1
এটি উপস্থিত থাকলে একটি ত্রুটি দেওয়া উচিত, কারণ এটি ডিরেক্টরিটি বিদ্যমান কিনা তা পরীক্ষা করে এবং হ্যাঁ এটি এটি তৈরি করার চেষ্টা করে। এটি আমার পক্ষে যা করে (কেবলমাত্র পরীক্ষিত)। এটি কোনও ডিরেক্টরি তৈরি করা উচিত নয়। যেহেতু আপনি মুছে ফেলতে চান আপনার সম্ভবত: [ -d /test ] && rmdir /test(অথবা আরএম -আরএফ / পরীক্ষাটি যদি এটি খালি হয় না এবং আপনি সমস্ত বিষয়বস্তু মুছতে চান)
সিনিলাও

@ সাইনলও: দ্রষ্টব্য - আমার পক্ষে ডিরেক্টরি উপস্থিত থাকার সময় এবং ডিরেক্টরি তৈরি করার চেষ্টা করার সময় ত্রুটি হয়নি! (এটি আবার পরীক্ষা করা হয়েছে)। কিন্তু মোছার জন্য এটি কাজ করে। দয়া করে
এটিতে

শর্মা: আপনি কি ব্যাশ ব্যবহার করছেন? 'ইকো EL শেল' কী বলে?
sinelaw

0

এখানে অন্য একটি লাইনার রয়েছে:

[[ -d /tmp/test ]] && rm -r /tmp/test
  • && এর অর্থ হল পূর্ববর্তী বিবৃতিটি সফলভাবে কার্যকর করা হলে (বিবৃতিতে প্রস্থান কোড শূন্য) কেবলমাত্র বিবৃতিটি কার্যকর করা হয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.