সুতরাং, আমি আমার হোম ফোল্ডারটি মুছে ফেলেছি (বা আরও স্পষ্টভাবে, আমার কাছে সমস্ত লেখার প্রবেশাধিকার রয়েছে)। যা ঘটেছিল তা আমার ছিল
build="build"
...
rm -rf "${build}/"*
...
<do other things with $build>
একটি বাশ স্ক্রিপ্টে এবং, আর প্রয়োজনের পরে $build
, ঘোষণা এবং এর সমস্ত ব্যবহারগুলি সরিয়ে ফেলুন - তবে rm
। বাশ সুখে প্রসারিত rm -rf /*
। হ্যাঁ।
আমি বোকা বোধ করলাম, ব্যাকআপটি ইনস্টল করেছি, আমি যে কাজটি হারিয়েছি তা আবার নতুন করে দিয়েছি। লজ্জার অতীত সরানোর চেষ্টা করা।
এখন, আমি অবাক হই: বাশ স্ক্রিপ্টগুলি লেখার কৌশলগুলি কী কী যাতে এরকম ভুল না ঘটে, বা কমপক্ষে সম্ভাবনা কম থাকে? উদাহরণস্বরূপ, আমি লিখেছিলাম
FileUtils.rm_rf("#{build}/*")
একটি রুবি লিপিতে, দোভাষী দোষী build
না হওয়ার বিষয়ে অভিযোগ করতেন , সুতরাং সেখানে ভাষাটি আমাকে রক্ষা করে।
আমি বাশে কী বিবেচনা করেছি, জরাজীকরণ ছাড়াও rm
(যা সম্পর্কিত প্রশ্নের উত্তর হিসাবে উল্লেখ করা যায় তা অমূলক নয়):
rm -rf "./${build}/"*
এটি আমার বর্তমান কাজ (একটি গিট রেপো) মেরে ফেলত তবে অন্য কিছুই না।rm
বর্তমানের ডিরেক্টরিগুলির বাইরে কাজ করার সময় এর একটি বৈকল্পিক / পরামিতি ইন্টারঅ্যাকশন প্রয়োজন। (কোনও সন্ধান করতে পারেনি)) অনুরূপ প্রভাব।
এটি কি এটি, বা বাশ স্ক্রিপ্টগুলি লেখার অন্যান্য উপায় রয়েছে যা এই অর্থে "মজবুত"?
set -u
প্রায় হিসাবে তেমন frowned না set -e
, কিন্তু এটি এখনও এর getchas আছে।
#! /usr/bin/env ruby
প্রতিটি শেল স্ক্রিপ্টের শীর্ষে রাখুন এবং বাশ সম্পর্কে ভুলে যান;)
rm -rf "${build}/*
উদ্ধৃতি চিহ্নগুলি কোথায় যায় সে বিষয়টি নিয়ে কোনও কারণ নেই।rm -rf "${build}
কারণ একই জিনিস করবেf
।