আপনার বুঝতে হবে bash
এটি কেবলমাত্র কার্যকর করার পরিবেশ। এটি যে কমান্ডগুলি কল করে তা কার্যকর করে - কমান্ডটি কী করে তা জানার জন্যও এটি শেলের ব্যবসা নয়, আপনি যে কোনও এক্সিকিউটেবলকে কল করতে পারেন। বেশিরভাগ ক্ষেত্রে, এটি পূর্বাবস্থায় কী করবে তাও পরিষ্কার নয় - উদাহরণস্বরূপ, আপনি কোনও চলচ্চিত্রকে "আনপ্লে" করতে পারেন? আপনি কি একটি ই-মেইল "অপসারণ" করতে পারেন? উদাহরণস্বরূপ, "দৌড়ানো ফায়ারফক্সকে পূর্বাবস্থায় ফিরিয়ে আনার" অর্থ কী? আপনি এটি বন্ধ করতে পারেন, তবে বুকমার্ক, ডাউনলোড এবং ইতিহাস এক হবে না।
আপনি যদি কোনও কমান্ড চালনা করেন তবে এটি কার্যকর হয়, যা কিছু তা করে। আপনি কী করছেন তা জানা আপনার উপর নির্ভর করে। মনে রাখবেন এর অর্থ পৃথক কমান্ডগুলির "পূর্বাবস্থা" নেই ... তারা পারবেন - আপনি এমন একটি মোড়ক ফাংশনও লিখতে পারেন যা আপনাকে বোকা ভুল থেকে রক্ষা করার জন্য কিছু করে।
উদাহরণস্বরূপ, mv
কেবলমাত্র কোনও ফাইল ওভাররাইট না করে কেবল ফাইলটি যেখানে ফিরে এসেছে সেখান থেকে সরিয়ে নিয়ে যাওয়া সহজেই পরিবর্তনযোগ্য। যে কেন -i
সুইচ, বিদ্যমান overwrite করার আগে আপনি জিজ্ঞাসা করতে। প্রযুক্তিগতভাবে, বিপরীতটি cp
হ'ল rm
, যদি না কোনও কিছু ওভাররাইট করা হয় (আবার -i
আপনাকে এটি সম্পর্কে জিজ্ঞাসা না করে)। rm
আরও স্থায়ী, ফাইলগুলি ফিরে পাওয়ার চেষ্টা করার জন্য আপনাকে আসলে কিছু নিম্ন-স্তরের হ্যাকিং করতে হবে (এর জন্য সরঞ্জাম রয়েছে)। যদি আপনি ফাইল-সিস্টেমটিকে একটি ব্ল্যাক-বাক্স হিসাবে বিবেচনা করেন তবে প্রযুক্তিগতভাবে এটি মোটেও সম্ভব হবে না (কেবলমাত্র তথ্যগুলির লজিক্যাল এবং শারীরিক বিন্যাসের বিশদই আপনাকে কিছু ক্ষতি নিয়ন্ত্রণ করতে দেয়)। rm
এর অর্থ rm
, যদি আপনি "ট্র্যাশ" কার্যকারিতা চান তবে এটি আসলেই সঠিকmv
কিছু প্রাক-ব্যবস্থাযুক্ত ডিরেক্টরিতে (এবং সম্ভবত এটি বজায় রাখতে বা খালি করার জন্য একটি নির্ধারিত পরিষেবা) - এটি সম্পর্কে বিশেষ কিছু নয়। তবে আপনি -i
মোছার আগে আপনাকে অনুরোধ করতে ব্যবহার করতে পারেন । আপনি সর্বদা -i
এই কমান্ডগুলিতে অন্তর্ভুক্ত করতে কোনও ফাংশন বা একটি উপনাম ব্যবহার করতে পারেন ।
নোট করুন যে বেশিরভাগ অ্যাপ্লিকেশন আপনাকে বিভিন্ন উপায়ে ডেটা ক্ষতি থেকে রক্ষা করছে। ~
আপনি যদি পুরানো সংস্করণটি ফিরিয়ে আনতে চান তবে বেশিরভাগ (~ সব) পাঠ্য সম্পাদকরা ব্যাকআপ ফাইলগুলি তৈরি করে । কিছু ডিস্ট্রোজে ls
ডিফল্টরূপে এলিয়াস করা হয় যাতে এটি তাদের ( -B
) লুকিয়ে রাখে তবে তারা সেখানে থাকে। অনুমতিগুলি সঠিকভাবে পরিচালনা করে প্রচুর সুরক্ষা দেওয়া হয়: আপনার দরকার না হলে রুট হবেন না, ফাইলগুলি পরিবর্তন করতে চান না তবে কেবল পঠনযোগ্য ফাইলগুলি তৈরি করুন। কখনও কখনও এটি "স্যান্ডবক্স" পরিবেশের জন্য দরকারী - আপনি একটি অনুলিপিগুলিতে জিনিস চালান, দেখুন এটি ঠিক আছে কিনা, এবং তারপরে পরিবর্তনগুলি মার্জ করুন (বা পরিবর্তনগুলি ত্যাগ করুন)। chroot
বা lxc
আপনার স্ক্রিপ্টগুলি ডিরেক্টরি থেকে পালাতে এবং ক্ষতি করতে বাধা দিতে পারে।
যখন আপনি বাল্কগুলিতে জিনিসগুলি নির্বাহ করার চেষ্টা করেন - উদাহরণস্বরূপ, আপনার কাছে যদি একটি জটিল ফাইন্ড কমান্ড থাকে, যখন লুপ, একটি দীর্ঘ পাইপলাইন বা এর মতো কিছু থাকে তবে প্রথমে কেবলমাত্র echo
আদেশগুলি কার্যকর করা হবে তা ভাল ধারণা । তারপরে, যদি কমান্ডগুলি যুক্তিসঙ্গত মনে হয়, তবে এটি বাস্তবের echo
জন্য অপসারণ এবং চালনা করুন। এবং অবশ্যই, আপনি কী করছেন সে সম্পর্কে সত্যই যদি আপনি নিশ্চিত না হন তবে প্রথমে একটি অনুলিপি তৈরি করুন। আমি মাঝে মাঝে কেবল বর্তমান ডিরেক্টরিটির একটি টারবাল তৈরি করি।
টার্বলগুলির কথা বলা - টার্বম্বস এবং জিপবম্বগুলি দুর্ভাগ্যক্রমে (সাধারণত লোকেরা যথাযথ উপ-ডিরেক্টরি ছাড়াই একটি সংরক্ষণাগার তৈরি করে এবং আনপ্যাকিং করে ফাইলগুলি চারপাশে ছড়িয়ে দেয়, একটি বিশাল গোলযোগ সৃষ্টি করে) quite আনপ্যাক করার আগে নিজেকে কেবল একটি সাব-ডাইরেক্টরি তৈরি করতে অভ্যস্ত হয়েছি (আমি বিষয়বস্তুগুলি তালিকাবদ্ধ করতে পারি , তবে আমি অলস)। আমি এমন একটি স্ক্রিপ্ট তৈরি করার কথা ভাবছি যা কেবল উপ-ডিরেক্টরি ছাড়াই বিষয়বস্তু সংরক্ষণাগারভুক্ত থাকলে একটি উপ-ডিরেক্টরি তৈরি করবে। তবে যখন এটি ঘটে ls -lrt
তখন সর্বাধিক সাম্প্রতিক ফাইলগুলি কোথায় রয়েছে সেগুলি সন্ধান করতে সহায়তা করে। আমি কেবল এটি উদাহরণ হিসাবে দিয়েছি - একটি প্রোগ্রামের অনেকগুলি পার্শ্ব প্রতিক্রিয়া থাকতে পারে যা শেল সম্পর্কে জানার কোনও উপায় নেই (এটি কীভাবে হতে পারে? এটি একটি ভিন্ন প্রোগ্রাম বলা হচ্ছে!) ভুলগুলি এড়ানোর একমাত্র নিশ্চিত উপায় হ'ল সতর্কতা অবলম্বন করা (মনে করুন দুবার, একবার চালান)।
সম্ভবত সবচেয়ে বিপজ্জনক কমান্ডগুলি হ'ল ফাইল সিস্টেমের সাথে ডিল করে: এমকেএফএস, এফডিস্ক / জিডিস্ক এবং আরও কিছু। তারা সম্পূর্ণরূপে ফাইল সিস্টেমটি ধ্বংস করতে পারে (যদিও যথাযথ ফরেনসিক সফ্টওয়্যার দ্বারা, কমপক্ষে আংশিক বিপরীত প্রকৌশল সম্ভব)। কমান্ডটি চালানোর আগে আপনি যে ডিভাইসটি ফর্ম্যাট করছেন এবং পার্টিশন করছেন তা সর্বদা ডাবল-চেক করুন।