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


12

আমি ভাবছিলাম যে বাশ শেলের মধ্যে সম্পাদিত আদেশটি পুনরায় / বিপরীত করার কোনও (সহজ) সম্ভাবনা আছে কি? (এটিকে পূর্বাবস্থায় ফেরাতে)

কোনও ক্রিয়া পুনরায় করতে উদাহরণস্বরূপ কি ctrl+ zসংমিশ্রণের মতো কিছু রয়েছে (উদাহরণস্বরূপ শব্দ বা লিব্রেঅফিসে)?


8
সংক্ষিপ্ত উত্তর হয়। কিছু কমান্ড প্রত্যাবর্তিত হতে পারে তবে জেনেরিক পূর্বাবস্থায় ফিরে আসার মতো জিনিস নেই।
আর্চেমার

3
যেমনটি অন্যরা বলেছেন, কোনও undoসম্পূর্ণ অপারেটিং সিস্টেমের একটি আধুনিকতম ব্যাকআপ থাকা কোনও আদেশ সত্যই কার্যকর নয়। কিছু ভুল হয়ে গেলে আপনি কেবল পূর্বের অবস্থাটি পুনরুদ্ধার করুন। উদাহরণস্বরূপ আরএসডিএপশটটি দেখুন
দ্রবকিজিক

1
আমি
হলট

3
@ জোশুয়া কোনও কমান্ডের সাথে একটি মন্তব্য পোস্ট করা যা কোনও ব্যবহারকারীর ডেটা ধ্বংস করতে পারে এবং কোনও ব্যাখ্যা গ্রহণযোগ্য আচরণ নয় is এটি মজাদার নয়, এটি সাইটটিকে বিশৃঙ্খল করে তোলে এবং সবচেয়ে গুরুত্বপূর্ণ এটি বিপজ্জনক। আবার তা করবেন না।
টেরডন

2
আমি shutdownকমান্ডটি পূর্বাবস্থায় ফিরিয়ে আনতে চাই lol .. এই জাতীয় প্রশ্নগুলি একদিনে 8 টি upvotes পেতে পারে বিশ্বাস করতে পারে না !!
ম্যাজেক্সট

উত্তর:


33

আপনার বুঝতে হবে bashএটি কেবলমাত্র কার্যকর করার পরিবেশ। এটি যে কমান্ডগুলি কল করে তা কার্যকর করে - কমান্ডটি কী করে তা জানার জন্যও এটি শেলের ব্যবসা নয়, আপনি যে কোনও এক্সিকিউটেবলকে কল করতে পারেন। বেশিরভাগ ক্ষেত্রে, এটি পূর্বাবস্থায় কী করবে তাও পরিষ্কার নয় - উদাহরণস্বরূপ, আপনি কোনও চলচ্চিত্রকে "আনপ্লে" করতে পারেন? আপনি কি একটি ই-মেইল "অপসারণ" করতে পারেন? উদাহরণস্বরূপ, "দৌড়ানো ফায়ারফক্সকে পূর্বাবস্থায় ফিরিয়ে আনার" অর্থ কী? আপনি এটি বন্ধ করতে পারেন, তবে বুকমার্ক, ডাউনলোড এবং ইতিহাস এক হবে না।

আপনি যদি কোনও কমান্ড চালনা করেন তবে এটি কার্যকর হয়, যা কিছু তা করে। আপনি কী করছেন তা জানা আপনার উপর নির্ভর করে। মনে রাখবেন এর অর্থ পৃথক কমান্ডগুলির "পূর্বাবস্থা" নেই ... তারা পারবেন - আপনি এমন একটি মোড়ক ফাংশনও লিখতে পারেন যা আপনাকে বোকা ভুল থেকে রক্ষা করার জন্য কিছু করে।

উদাহরণস্বরূপ, mvকেবলমাত্র কোনও ফাইল ওভাররাইট না করে কেবল ফাইলটি যেখানে ফিরে এসেছে সেখান থেকে সরিয়ে নিয়ে যাওয়া সহজেই পরিবর্তনযোগ্য। যে কেন -iসুইচ, বিদ্যমান overwrite করার আগে আপনি জিজ্ঞাসা করতে। প্রযুক্তিগতভাবে, বিপরীতটি cpহ'ল rm, যদি না কোনও কিছু ওভাররাইট করা হয় (আবার -iআপনাকে এটি সম্পর্কে জিজ্ঞাসা না করে)। rmআরও স্থায়ী, ফাইলগুলি ফিরে পাওয়ার চেষ্টা করার জন্য আপনাকে আসলে কিছু নিম্ন-স্তরের হ্যাকিং করতে হবে (এর জন্য সরঞ্জাম রয়েছে)। যদি আপনি ফাইল-সিস্টেমটিকে একটি ব্ল্যাক-বাক্স হিসাবে বিবেচনা করেন তবে প্রযুক্তিগতভাবে এটি মোটেও সম্ভব হবে না (কেবলমাত্র তথ্যগুলির লজিক্যাল এবং শারীরিক বিন্যাসের বিশদই আপনাকে কিছু ক্ষতি নিয়ন্ত্রণ করতে দেয়)। rmএর অর্থ rm, যদি আপনি "ট্র্যাশ" কার্যকারিতা চান তবে এটি আসলেই সঠিকmvকিছু প্রাক-ব্যবস্থাযুক্ত ডিরেক্টরিতে (এবং সম্ভবত এটি বজায় রাখতে বা খালি করার জন্য একটি নির্ধারিত পরিষেবা) - এটি সম্পর্কে বিশেষ কিছু নয়। তবে আপনি -iমোছার আগে আপনাকে অনুরোধ করতে ব্যবহার করতে পারেন । আপনি সর্বদা -iএই কমান্ডগুলিতে অন্তর্ভুক্ত করতে কোনও ফাংশন বা একটি উপনাম ব্যবহার করতে পারেন ।

নোট করুন যে বেশিরভাগ অ্যাপ্লিকেশন আপনাকে বিভিন্ন উপায়ে ডেটা ক্ষতি থেকে রক্ষা করছে। ~আপনি যদি পুরানো সংস্করণটি ফিরিয়ে আনতে চান তবে বেশিরভাগ (~ সব) পাঠ্য সম্পাদকরা ব্যাকআপ ফাইলগুলি তৈরি করে । কিছু ডিস্ট্রোজে lsডিফল্টরূপে এলিয়াস করা হয় যাতে এটি তাদের ( -B) লুকিয়ে রাখে তবে তারা সেখানে থাকে। অনুমতিগুলি সঠিকভাবে পরিচালনা করে প্রচুর সুরক্ষা দেওয়া হয়: আপনার দরকার না হলে রুট হবেন না, ফাইলগুলি পরিবর্তন করতে চান না তবে কেবল পঠনযোগ্য ফাইলগুলি তৈরি করুন। কখনও কখনও এটি "স্যান্ডবক্স" পরিবেশের জন্য দরকারী - আপনি একটি অনুলিপিগুলিতে জিনিস চালান, দেখুন এটি ঠিক আছে কিনা, এবং তারপরে পরিবর্তনগুলি মার্জ করুন (বা পরিবর্তনগুলি ত্যাগ করুন)। chrootবা lxcআপনার স্ক্রিপ্টগুলি ডিরেক্টরি থেকে পালাতে এবং ক্ষতি করতে বাধা দিতে পারে।

যখন আপনি বাল্কগুলিতে জিনিসগুলি নির্বাহ করার চেষ্টা করেন - উদাহরণস্বরূপ, আপনার কাছে যদি একটি জটিল ফাইন্ড কমান্ড থাকে, যখন লুপ, একটি দীর্ঘ পাইপলাইন বা এর মতো কিছু থাকে তবে প্রথমে কেবলমাত্র echoআদেশগুলি কার্যকর করা হবে তা ভাল ধারণা । তারপরে, যদি কমান্ডগুলি যুক্তিসঙ্গত মনে হয়, তবে এটি বাস্তবের echoজন্য অপসারণ এবং চালনা করুন। এবং অবশ্যই, আপনি কী করছেন সে সম্পর্কে সত্যই যদি আপনি নিশ্চিত না হন তবে প্রথমে একটি অনুলিপি তৈরি করুন। আমি মাঝে মাঝে কেবল বর্তমান ডিরেক্টরিটির একটি টারবাল তৈরি করি।

টার্বলগুলির কথা বলা - টার্বম্বস এবং জিপবম্বগুলি দুর্ভাগ্যক্রমে (সাধারণত লোকেরা যথাযথ উপ-ডিরেক্টরি ছাড়াই একটি সংরক্ষণাগার তৈরি করে এবং আনপ্যাকিং করে ফাইলগুলি চারপাশে ছড়িয়ে দেয়, একটি বিশাল গোলযোগ সৃষ্টি করে) quite আনপ্যাক করার আগে নিজেকে কেবল একটি সাব-ডাইরেক্টরি তৈরি করতে অভ্যস্ত হয়েছি (আমি বিষয়বস্তুগুলি তালিকাবদ্ধ করতে পারি , তবে আমি অলস)। আমি এমন একটি স্ক্রিপ্ট তৈরি করার কথা ভাবছি যা কেবল উপ-ডিরেক্টরি ছাড়াই বিষয়বস্তু সংরক্ষণাগারভুক্ত থাকলে একটি উপ-ডিরেক্টরি তৈরি করবে। তবে যখন এটি ঘটে ls -lrtতখন সর্বাধিক সাম্প্রতিক ফাইলগুলি কোথায় রয়েছে সেগুলি সন্ধান করতে সহায়তা করে। আমি কেবল এটি উদাহরণ হিসাবে দিয়েছি - একটি প্রোগ্রামের অনেকগুলি পার্শ্ব প্রতিক্রিয়া থাকতে পারে যা শেল সম্পর্কে জানার কোনও উপায় নেই (এটি কীভাবে হতে পারে? এটি একটি ভিন্ন প্রোগ্রাম বলা হচ্ছে!) ভুলগুলি এড়ানোর একমাত্র নিশ্চিত উপায় হ'ল সতর্কতা অবলম্বন করা (মনে করুন দুবার, একবার চালান)।

সম্ভবত সবচেয়ে বিপজ্জনক কমান্ডগুলি হ'ল ফাইল সিস্টেমের সাথে ডিল করে: এমকেএফএস, এফডিস্ক / জিডিস্ক এবং আরও কিছু। তারা সম্পূর্ণরূপে ফাইল সিস্টেমটি ধ্বংস করতে পারে (যদিও যথাযথ ফরেনসিক সফ্টওয়্যার দ্বারা, কমপক্ষে আংশিক বিপরীত প্রকৌশল সম্ভব)। কমান্ডটি চালানোর আগে আপনি যে ডিভাইসটি ফর্ম্যাট করছেন এবং পার্টিশন করছেন তা সর্বদা ডাবল-চেক করুন।


14

না, বাশ-এ "পূর্বাবস্থায় ফিরে আসার মতো কিছু নেই, দুঃখিত। এজন্য আপনাকে আপনার আদেশগুলি ডাবল-চেক করতে হবে বা প্রথমে গুরুত্বহীন ফাইলগুলিতে তাদের পরীক্ষা করা উচিত (যদি এটি সম্ভব হয়)। এবং আপনি রুট হিসাবে জিনিসগুলি করছেন কিনা ট্রিপল-চেক করুন;)


1
সিটিআর + / ব্যাশ টার্মিনালে কিছু নির্দিষ্ট কমান্ড কমান্ডের জন্য একটি পূর্বাবস্থায় সম্পাদন করে তবে সমস্ত কমান্ড পূর্বাবস্থায় ফিরে যায় না।
এরিক লেসচিনস্কি

@ এরিকলিশচিনস্কি আপনি কোনও রেফারেন্স দিতে পারেন?
ইরথিল

এটি এই পৃষ্ঠার উত্তর-মন্তব্যে সমাহিত হয়েছে: skorks.com/2009/09/bash-shortcuts-for-maximum- Productivity এটিকে দেখার জন্য, টার্মিনালে কিছু শব্দ লিখুন। একটি অক্ষরের উপর বাম কার্সারটি সরান, অক্ষরের নীচে মুছে ফেলার জন্য Ctrl-d টিপুন, তারপরে Ctrl + / টিপুন যা মুছে ফেলা হয় না।
এরিক লেসচিনস্কি

1
ওহ, তবে এটি একটি আদেশকে পূর্বাবস্থায় ফেলার থেকে মূলত আলাদা ally আপনি যদি কোনও ফাইল মুছে ফেলেন rm, ফাইলটি চলে গেছে, এটি চলে গেছে, মরে গেছে, এটি আর নেই, এটি একটি প্রাক্তন ফাইল (মন্টি পাইথন সতর্কতা)। এখন এর আত্মীয়রা দুঃখে কাঁদে এবং আপনি নিজের কাজটি পূর্বাবস্থায় ফিরিয়ে নিতে পারবেন না। আপনি যে বিষয়ে কথা বলছেন তা হ'ল টাইপ করা বা অক্ষর মুছে ফেলা এবং আমি সন্দেহ করি এটি আপনার টার্মিনাল এমুলেটরটির একটি বৈশিষ্ট্য। আমি এটি টার্মিনেটরে চেষ্টা করেছি এবং এটি কাজ করে। আলাদা কনসোলে স্যুইচ করা (আমার ক্ষেত্রে Ctrl + Alt + F1) এটি কাজ করার অনুমতি দেয় না।
ইরেটিল

এখানে টার্মিনাল কমান্ড এন্ট্রি পূর্বাবস্থায় ফিরে আছে, এবং এক্সিকিউশন পূর্বাবস্থার পরে টার্মিনাল কমান্ড রয়েছে। আমি প্রাক্তন সন্ধানে এখানে এসেছি।
এরিক লেসচিনস্কি

11

না, কোনও জেনেরিক পূর্বাবস্থা নেই, তবে কিছু পরিণতি অন্যদের তুলনায় আরও বিপরীত। উদাহরণস্বরূপ নিন rm: এটি মূলত দুটি উদ্দেশ্যে ব্যবহৃত হয় - নড়বড়ে এড়ানো এবং নতুন ফাইলগুলির জন্য জায়গা খালি করা। কিছুটা ভাগ্যের সাহায্যে আপনি এই জাতীয় সরঞ্জামগুলি ব্যবহার করে ফাইলের বিষয়বস্তুগুলি পুনরুদ্ধার করতে পারেন extundelete, কারণ আপনি চালনার সময় কেবল ফাইলের শুরুতে পয়েন্টারটি ওভাররাইট করা হয় rm; বিষয়বস্তু যখন অপারেটিং সিস্টেম যে স্থান (যা মিলিসেকেন্ড বা বছর পরে ঘটতে পারে) reuses মুছে ফেলা হবে। এই কার্যকারিতাটির কারণে, সিস্টেমগুলি কমবেশি ধ্বংসাত্মক হওয়ার স্কেলের মাঝে rmপড়ে । একদিকে আবর্জনা আছেসিস্টেমগুলি, যা তাত্ক্ষণিকভাবে ডেটা হারানোর কোনও ঝুঁকি ছাড়াই বিশৃঙ্খলা এড়ানোর জন্য একটি উপায় সরবরাহ করে (কারণ পূর্ববর্তীটি তুচ্ছ হয়) is এমনকি আরও রক্ষণশীলরা একবার লেখেন, অনেকগুলি ("WORM") সিস্টেম পড়ুন, যেখানে ডেটা মুছে ফেলা যায় না বা ইচ্ছায় ওভাররাইট করা যায় না এটির মাধ্যমে সিস্টেম লিখে এটি। স্কেলের অন্য প্রান্তে রয়েছে শ্রেডিং সিস্টেমগুলি, যা পয়েন্টার ছাড়াও ফাইল সামগ্রীতে (সাধারণত একাধিক বার) ওভাররাইট করে। সেই সময়ে আপনার ডেটা পুনরুদ্ধার করার প্রযুক্তি সম্ভবত এখনও উপস্থিত নেই (এবং সম্ভবত কখনও থাকতে পারে না)।

সুতরাং আপনি দেখতে পাচ্ছেন যে সর্বাধিক ব্যবহারে সুনির্দিষ্ট সরঞ্জামটি ( rm) কীভাবে একমাত্র বিকল্প নয়, তবে এটি এমন একটি বাণিজ্য-বাণিজ্য সরবরাহ করে যা বেশিরভাগ লোকেরা এতে স্বাচ্ছন্দ্য বোধ করে:

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

আপনার সরঞ্জামগুলি বানানো ট্রেড-অফগুলি যদি আপনার কাছে অগ্রহণযোগ্য হয়, তবে একবার ঘুরে দেখুন। সম্ভাবনা আছে আউট সরঞ্জাম যা সিদ্ধান্ত, যার জন্য ঠিক করা হয় আপনি


3
এই উত্তরটি একটি অংশ মাত্র যে ঠিকানাগুলি প্রশ্ন প্রথম লাইন
আলভারো

সিসাদমিন দৃষ্টিকোণ থেকে জিনিসগুলি কেন সেভাবে রয়েছে তা কেবল ব্যাখ্যা করার চেষ্টা করছি।
l0b0

9

যে অ্যাপ্লিকেশনগুলি 'পূর্বাবস্থায় ফিচার' সরবরাহ করে সেগুলি গৃহীত পদক্ষেপের ইতিহাস বজায় রেখে এবং হয় পদক্ষেপের বিপরীত পদ্ধতি বা কোনও পূর্ববর্তী অবস্থা পুনরুদ্ধার করার জন্য কোনও বস্তুর অবস্থার স্ন্যাপশট। শেলের মধ্যে সম্পাদিত কমান্ডগুলি সরাসরি ক্রিয়া সম্পাদন করে বা ক্রিয়া সম্পাদনের জন্য আদেশগুলি কার্যকর করে।

শেল নিজেই কোনও চালানো কমান্ড বা প্রোগ্রামের ফলে কর্মগুলি পূর্বাবস্থায় ফিরিয়ে আনার ক্ষমতা রাখে না। যদি কমান্ড বা প্রোগ্রামটি কোনও ইতিহাস বজায় রাখে এবং পূর্বাবস্থায় ফাংশন থাকে, তবে সম্ভবত এটি ব্যবহার করা যেতে পারে, তবে শেল নিজেই তা করতে পারে না।

উদাহরণস্বরূপ, আপনি যদি চালনা করেন rm important_file.txtতবে ফাইলসীম ড্রাইভারটিকে ফাইল সিস্টেমে ফাইলটিকে "লিঙ্কমুক্ত" করতে বলবে। শেলটি ক্রিয়াটি সম্পাদন করে না, এটি কেবল কল করে rmযা করে।

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


1

না, নেই, তবে যদি বলে যে আপনি কোনও রুট সুবিধাযুক্ত ডিরেক্টরিটি নিয়ে কোনও গোলমাল করেছেন এবং কোনওরকম কিছু ভুল করেছেন, তবে আপনার সেরা বাজিটি হ'ল ইউএসবি ড্রাইভ বা এসডি কার্ডে আপনি পারবেন এমন সমস্ত ফাইল সংরক্ষণ করা এবং আপনার অপারেটিং সিস্টেমটি পুনরায় সেট করা থেকে আইএসও ফাইল (যদি এখনও এটি থাকে তবে না থাকলে আপনি অন্য একটি অফলাইন পেতে পারেন ...)। যদি আপনি যা কিছু মুছতে পারেন, যেমন মোড়ক বলেছেন, ফাইলের নাম ফাইল ফাইলের সাথে রিঙ্ক করার জন্য একটি অ্যাপ্লিকেশন ডাউনলোড করুন এবং ফাইলগুলি সংরক্ষণ করুন (এই প্রশ্নটি এখানে দেখুন )। গভীরতর উত্তরের জন্য, আপনি কী ভুল করেছেন তা আমাদের বলতে পারেন?


1

অন্যরা যা বলেছিল তা আমি পুনরায় বলব না, তবে আপনি কোথায় আসছেন তা আমি দেখতে পাচ্ছি। "বিপজ্জনক" কমান্ডগুলি কার্যকর করার ক্ষেত্রে আমার স্ট্যান্ডার্ড পদ্ধতিটি সর্বদা তাদের ভেরিয়েবলগুলি সঠিকভাবে প্রসারিত হয় কিনা তা দেখার জন্য তাদের প্রতিধ্বনি করে। আপনি যদি কিছু নির্দিষ্ট উদাহরণ উদ্ধৃত করতে পারেন তবে আমরা আরও সাহায্য করতে পারি might

উদাহরণস্বরূপ, একটি পরিস্থিতিতে যেমন:

for i in $(cat /my/file); 
do 
   echo "Now removing file $i using rm -f $i"
done

1

অন্যান্য ভাল উত্তরের মতোই বলেছেন: শেলের মধ্যে কোনও "পূর্বাবস্থা" নেই। তবে আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে, এটিকে পূর্বাবস্থায় shutdownফেলার জন্য আপনি শাটডাউন প্রক্রিয়াটি মেরে ফেলতে পারেন: /programming//a/526330 দেখুন

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