উত্তর:
ফাইলটি উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখার ঝামেলা করবেন না, কেবল এটি সরাতে চেষ্টা করুন।
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null
নোট করুন যে ফাইলটি উপস্থিত না থাকলে দ্বিতীয় কমান্ড ব্যর্থ হবে (একটি শূন্য-বহির্গমন স্থিতি ফিরিয়ে দেবে) তবে প্রথমটি -f
(সংক্ষিপ্ত --force
) বিকল্পের কারণে সফল হবে । পরিস্থিতির উপর নির্ভর করে এটি একটি গুরুত্বপূর্ণ বিবরণ হতে পারে।
তবে সম্ভবত, আপনি যদি ফাইলটিতে সংযোজন করছেন তবে এটি হ'ল কারণ আপনার স্ক্রিপ্ট >>
ফাইলটিতে কোনও কিছুকে পুনর্নির্দেশ করতে ব্যবহার করছে। শুধু প্রতিস্থাপন >>
সঙ্গে >
। আপনি কোনও কোড সরবরাহ না করায় এটি বলা শক্ত।
নোট আপনি যে পারেন ভালো কিছু করতে test -f /p/a/t/h && rm /p/a/t/h
, কিন্তু এমনটি সম্পূর্ণরূপে অর্থহীন নয়। পরীক্ষাটি সত্য হয়ে উঠবে এটা যথেষ্ট সম্ভব তবে আপনি এটি অপসারণ করার চেষ্টা করার আগে / p / a / t / h এর অস্তিত্ব পাওয়া যাবে না, বা আরও খারাপ পরীক্ষাটি ব্যর্থ হবে এবং / পি / এ / টি / ঘন্টা তৈরি হবে আপনি পরবর্তী কমান্ডটি কার্যকর করার আগে যা এটির উপস্থিতি প্রত্যাশা করে। এটি চেষ্টা করা একটি ধ্রুপদী রেসের শর্ত। এটা করবেন না।
rm /p/a/t/h 2> /dev/null
echo $?
ফাইল বিদ্যমান না থাকলে রিটার্ন কোড ( ) 0 হিসাবে রাখবে না । এটি জেনকিন্সকে বিভিন্ন ধরণের কাজগুলি ব্যর্থ করে দেবে কেবলমাত্র আমরা একটি বিদ্যমান ফাইল মুছে ফেলার চেষ্টা করেছি।
noclobber
ব্যাশের মতো ), বা সম্ভবত উপস্থিত ফাইলটি chmod-ing করতে পারেন তাই যদি ফাইলটি উপস্থিত থাকে তবে পুনর্নির্দেশ ব্যর্থ হয় (রেসের শর্তটি এড়ায় না), তবে যা যা করবে তা হ'ল বাগগুলি আরও সূক্ষ্ম করে তোলা।
আপনি এটি ব্যবহার করতে পারেন:
#!/bin/bash
file="file_you_want_to_delete"
if [ -f $file ] ; then
rm $file
fi
echo $?
ফাইলের অস্তিত্ব না থাকলে 1 টি দেয় না তাও নিশ্চিত করে।
আপনি যদি ফাইলের উপস্থিতি আছে কি না তা পরীক্ষা করার পদক্ষেপটি উপেক্ষা করতে চান, তবে আপনি একটি মোটামুটি সহজ কমান্ড ব্যবহার করতে পারেন, যা উপস্থিত থাকলে ফাইলটি মুছে ফেলবে এবং অস্তিত্বহীন থাকলে কোনও ত্রুটি ছুঁড়ে না ফেলে।
rm -f xyz.csv
-f
এটির সাথে এটি কোনও ত্রুটি ছুঁড়ে না। এই উত্তরটি আমাকে সাহায্য করেছে, আপনাকে ধন্যবাদ।
এরকম কিছু কাজ করবে
#!/bin/sh
if [ -fe FILE ]
then
rm FILE
fi
-এটি নিয়মিত ফাইল কিনা তা পরীক্ষা করে দেখুন
- ফাইলটি উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখি
আরও তথ্যের জন্য পরিচয়
সম্পাদনা: -এফ-এর সাথে ব্যবহার করা নিরর্থক, সুতরাং -f ব্যবহার করেও কাজ করা উচিত
-a
অবচয় করা হয়েছে, -e
পরিবর্তে ব্যবহার করুন।
-f
।
-e
মধ্যে -fe
অপ্রয়োজনীয়, যেমন -f
যতদূর আমি জানি চেক ফাইলের অস্তিত্ব ..
if [ $( ls <file> ) ]; then rm <file>; fi
এছাড়াও, আপনি যদি এর >
পরিবর্তে আপনার আউটপুট পুনর্নির্দেশ করেন >>
তবে পূর্ববর্তী ফাইলটি ওভাররাইট হবে
file
হয় তবে এটি কিছুটা হলেও ভেঙে যায়5 -lt 2
rm $my_file
, তাই না? আপনি কোন শেল ব্যবহার করছেন?