কীভাবে আমি দুর্ঘটনাজনিত rm -rf / * রোধ করব?


164

আমি কেবল rm -rf /*দুর্ঘটনাক্রমে দৌড়েছি , তবে আমি বলতে চাইছি rm -rf ./*(স্ল্যাশের পরে তারাটি লক্ষ্য করুন)।

alias rm='rm -i'এবং --preserve-rootডিফল্টরূপে আমাকে রক্ষা করেনি, সুতরাং এর জন্য কোনও স্বয়ংক্রিয় সুরক্ষা আছে?


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


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


13
এফওয়াইআই, আপনি যে ডিরেক্টরিতে ছিলেন rm -rf . /mydirতার পরিবর্তে আপনি এটি করতে এবং মারতেও পারেন rm -rf ./mydirI
ব্যবহারকারী 606723

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

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

80
@ স্লিলিব্রি বন্দুকের নিরাপদতা রয়েছে। rmকমান্ডটিতে কীভাবে আরও বেশি সুরক্ষিত রাখা যায় তা জিজ্ঞাসা করা একটি নিখুঁত বৈধ সিসাদমিন প্রশ্ন।
গিলস

21
sudo আরএম / বিন / আরএম প্রস্তাবিত নয়, তবে বেশিরভাগ আরএম এর প্রতিরোধ করবে :-)
পল

উত্তর:


220

আমি অনুসরণ করি এমন একটি কৌশল হ'ল কমান্ডটি #ব্যবহার করার সময় শুরুতে রাখা rm

root@localhost:~# #rm -rf /

এটি rmভুল ফাইল / ডিরেক্টরিতে দুর্ঘটনাজনিত মৃত্যুদন্ড কার্যকর করে। একবার যাচাই হয়ে গেলে #শুরু থেকে সরান । এই কৌশলটি কাজ করে, কারণ বাশ-এ একটি শব্দ #সেই শব্দের সাথে শুরু হয় এবং সেই লাইনে থাকা সমস্ত অক্ষরকে উপেক্ষা করা হয়। সুতরাং কমান্ড সহজভাবে উপেক্ষা করা হয়।

অথবা

আপনি যদি কোনও গুরুত্বপূর্ণ ডিরেক্টরি প্রতিরোধ করতে চান তবে আরও একটি কৌশল আছে।

-iএই ডিরেক্টরিতে একটি ফাইল তৈরি করুন । কীভাবে এমন একটি বিজোড় ফাইল তৈরি করা যায়? ব্যবহার touch -- -iবাtouch ./-i

এখন চেষ্টা করুন rm -rf *:

sachin@sachin-ThinkPad-T420:~$ touch {1..4}
sachin@sachin-ThinkPad-T420:~$ touch -- -i
sachin@sachin-ThinkPad-T420:~$ ls
1  2  3  4  -i
sachin@sachin-ThinkPad-T420:~$ rm -rf *
rm: remove regular empty file `1'? n
rm: remove regular empty file `2'? 

এখানে কমান্ড লাইনে *প্রসারিত হবে -i, সুতরাং আপনার আদেশটি শেষ পর্যন্ত হয়ে যাবে rm -rf -i। সুতরাং কমান্ড অপসারণের আগে অনুরোধ জানানো হবে। তুমি তোমার এই ফাইলটি লাগাতে পারেন /, /home/, /etc/, ইত্যাদি

অথবা

--preserve-rootবিকল্প হিসাবে ব্যবহার করুন rm। ইন rmনতুন অন্তর্ভুক্ত coreutilsপ্যাকেজ, এই বিকল্প পূর্বনির্ধারিত।

--preserve-root
              do not remove `/' (default)

অথবা

নিরাপদ-আরএম ব্যবহার করুন

ওয়েব সাইট থেকে অংশ:

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

ব্যবহারকারীরা এই সুরক্ষিত ফাইল বা ডিরেক্টরিগুলির মধ্যে একটি মুছতে চেষ্টা করেছেন তারা তা করতে পারবেন না এবং পরিবর্তে একটি সতর্কতা বার্তা প্রদর্শিত হবে:

$ rm -rf /usr
Skipping /usr

10
সেফ-আরএম দেখতে খুব সুন্দর দেখাচ্ছে, এখন এটি সন্ধান করছে ...
ভ্যালেন্টিন নেমসেভ

45
নিরাপদ-আরএম ঝরঝরে। -iফাইলটির সাথে এটি একটি নিফটি ট্রিক । Hah। বোকা বাশ
এরিকআর

5
ইউনিক্সে কী কী ধরণের কৌশল করা হয় তা আশ্চর্য।
ওয়ার্নারসিডি

4
-I নামের ফাইল তৈরি করা একেবারে খাঁটি প্রতিভা। আমি প্রায় এক বছর আগে এটি ব্যবহার করতে পেরেছিলাম যখন আমি দুর্ঘটনাক্রমে ভিপিএসে একটি আরএম-আরএফ / ইত্যাদি / * চালাতাম ... (ভাগ্যক্রমে, আমি রাতের স্ন্যাপশট গ্রহণ করি, তাই 45 মিনিটের মধ্যে পুনরুদ্ধার করতে সক্ষম হয়েছি)।
ডেভিড ডাব্লু

9
এটা প্রতিভা। touch -- -rf
যাদু করা

46

তোমার সমস্যা:

আমি দুর্ঘটনাক্রমে কেবল rm -rf / * চালিয়েছি, তবে আমার অর্থ rm -rf ./* (স্ল্যাশের পরে তারাটি লক্ষ্য করুন)।

সমাধান: তা করবেন না! অনুশীলনের বিষয় হিসাবে ./, কোনও পথের শুরুতে ব্যবহার করবেন না । স্ল্যাশগুলি কমান্ডের কোনও মূল্য যুক্ত করে না এবং কেবল বিভ্রান্তি সৃষ্টি করবে।

./*এর অর্থ একই জিনিস *, সুতরাং উপরের আদেশটি আরও ভালভাবে লিখিত হয়েছে:

rm -rf *

এখানে একটি সম্পর্কিত সমস্যা। আমি অভিব্যক্তি নিম্নলিখিত প্রায়ই যেখানে কেউ অধিকৃত দেখতে FOOভালো কিছু করার জন্য সেট করা হয় /home/puppies। আমি আজকে এটি দেখেছি আসলে, একটি প্রধান সফ্টওয়্যার বিক্রেতার কাছ থেকে ডকুমেন্টেশনে।

rm -rf $FOO/

তবে যদি FOOসেট না করা থাকে তবে এটি মূল্যায়ন rm -rf /করবে যা আপনার সিস্টেমে সমস্ত ফাইল সরিয়ে দেওয়ার চেষ্টা করবে। পিছনের স্ল্যাশ অপ্রয়োজনীয়, তাই অনুশীলনের বিষয় হিসাবে এটি ব্যবহার করবেন না।

নিম্নলিখিতগুলি একই কাজ করবে এবং আপনার সিস্টেমকে দূষিত করার সম্ভাবনা কম:

rm -rf $FOO

আমি এই টিপসগুলি হার্ড পদ্ধতিতে শিখেছি। আমার 14 বছর আগে যখন আমার প্রথম সুপারভাইজার অ্যাকাউন্ট ছিল, তখন আমি ঘটনাক্রমে rm -rf $FOO/শেল স্ক্রিপ্টের মধ্যে থেকে ছুটে এসে একটি সিস্টেম নষ্ট করে দিয়েছিলাম। অন্য 4 টি সিসাদমিন এই দিকে তাকিয়ে বলল, 'হ্যাঁ। প্রত্যেকে একবারে তা করে। এখন আপনার ইনস্টল মিডিয়া এখানে (36 ফ্লপি ডিস্ক)। যাও ঠিক করে দাও। '

অন্য লোকেরা এখানকার মত সমাধান সুপারিশ --preserve-rootএবং safe-rm। তবে এই সমাধানগুলি সমস্ত আন * এক্স-ভেরিয়েন্টের জন্য উপস্থিত নেই এবং সোলারিস, ফ্রিবিএসডি এবং ম্যাকোএসএক্সে কাজ নাও করতে পারে। এছাড়াও, safe-rmআপনার ব্যবহৃত প্রতিটি একক লিনাক্স সিস্টেমে অতিরিক্ত প্যাকেজ ইনস্টল করা দরকার। আপনি যদি নির্ভর করে থাকেন safe-rm, আপনি যখন নতুন কাজ শুরু করেন এবং তারা safe-rmইনস্টল না করে তখন কী ঘটে ? এই সরঞ্জামগুলি ক্রাচ এবং এটি পরিচিত ডিফল্টগুলির উপর নির্ভর করা এবং আপনার কাজের অভ্যাসটি উন্নত করা আরও ভাল।


19
আমার বন্ধু আমাকে বলেছিল যে সে কখনই ব্যবহার করে না rm -rf *। তিনি সর্বদা ডিরেক্টরিটি প্রথমে পরিবর্তন করেন এবং একটি নির্দিষ্ট লক্ষ্য ব্যবহার করেন। কারণটি হ'ল তিনি শেলের ইতিহাসটি প্রচুর ব্যবহার করেন এবং তিনি উদ্বিগ্ন যে তাঁর ইতিহাসে এমন একটি আদেশ থাকলে ভুল সময়ে পপ আপ হতে পারে।
হাগাই_ই

@ হাগাই_ ই: ভাল টিপস। আমি যখন ইউনিক্স কাছে নতুন ছিল, আমি একবার একটি বাগ যেখানে গাড়ীতে আঘাত দৌড়ে rm -rf *সরানো .এবং ..। আমি রুট ছিলাম, এবং এটি নীচের দিকের ডিরেক্টরিগুলিতে যেমন পেরিয়েছি ../../..এবং এটি বেশ ধ্বংসাত্মক ছিল। আমি rm -rf *তখন থেকেই খুব সাবধান হওয়ার চেষ্টা করি ।
স্টেফান লাসিউইস্কি

2
rm -rf $FOOআপনার প্রয়োজন হলে সাহায্য করবে না rm -rf $FOO/$BARcd $FOO && rm -rf $BARসাহায্য করবে, যদিও এটি দীর্ঘতর।
ভিক্টর সার্জিইঙ্কো

5
@VictorSergienko, ব্যাশ সঙ্গে, উল্লেখ কীভাবে ${FOO:?}হিসাবে, rm -rf ${FOO:?}/এবং rm -rf ${FOO:?}/${BAR:?}। এটি এটিকে সর্বদা অনুবাদ করতে বাধা দেবে rm -rf /। আমার উত্তর এখানে আমার এই সম্পর্কে আরও কিছু তথ্য আছে
একিউম্যানাস

@ হাগগাই_ ই: আমি এই বিষয়টিতে একটি সেরা পরামর্শ পেয়েছি। আমি rm -rf *একটি লুপ ব্যবহার করে আমার আঙুলটি জ্বালিয়ে দিয়েছিলাম যা ভুল করে ভুল ডিরেক্টরিতে পরিবর্তিত হয়েছিল এবং অন্য কিছু মুছতে শেষ করে। আমি যদি একটি নির্দিষ্ট লক্ষ্য ব্যবহার করতাম তবে ভুল জিনিসটি মুছে ফেলার অনেক ছোট সুযোগ পেতাম।
সমৃদ্ধ

30

যেহেতু এটি "সার্ভারফল্ট" এ রয়েছে, তাই আমি এটি বলতে চাই:

আপনার যদি অ্যাডমিন / ব্যবহারকারীদের একটি দারুণ দল সহ কয়েক ডজন বা তার বেশি সার্ভার থাকে তবে কেউrm -rf বা chownভুল ডিরেক্টরিতে যাচ্ছেন ।

আপনার প্রভাবিত পরিষেবাটি সর্বনিম্ন সম্ভব এমটিটিআর দিয়ে ব্যাক আপ করার জন্য একটি পরিকল্পনা থাকা উচিত।


4
এবং পুনরুদ্ধারের অনুশীলনের জন্য আপনার একটি ভিএম বা খুচরা বাক্স ব্যবহার করা উচিত - কী কাজ করেনি তা খুঁজে বের করুন এবং বলেছিলেন যে পরিকল্পনাটি পরিমার্জন করবে। আমরা একটি পাক্ষিক পুনরায় বুট করতে যাচ্ছি - কারণ আমাদের বিল্ডিংয়ে বিদ্যুৎ চলে গেছে এবং প্রতিবার এটি বেদনাদায়ক হয়ে উঠেছে। সমস্ত র‌্যাকগুলির কয়েকটি পরিকল্পনামূলক শাটডাউন করে, আমরা এখন প্রায় কয়েক ঘন্টা চলার কয়েক দিন থেকে এখন কেটে ফেলেছি - প্রতিবারের মতো আমরা শিখি যে কোন বিটগুলি স্বয়ংক্রিয়ভাবে / অন্যদিকে init.d স্ক্রিপ্টগুলি ঠিক করার জন্য রয়েছে
ড্যানি স্ট্যাপল

এবং এই কমান্ডটি একটি ভিএম-তে চেষ্টা করুন। এটা মজার! তবে প্রথমে একটি স্ন্যাপশট নিন।
স্টিফান লাসিউস্কি

23

সেরা সমাধানগুলি rmসরাসরি ব্যবহার না করার জন্য আপনার অভ্যাস পরিবর্তন করার সাথে জড়িত ।

একটি পন্থা echo rm -rf /stuff/with/wildcards*প্রথম চালানো হয় । ওয়াইল্ডকার্ডগুলি থেকে আউটপুট যুক্তিসঙ্গত মনে হচ্ছে কিনা তা পরীক্ষা করুন, তারপরে পূর্ববর্তী কমান্ডটি কার্যকর না করে শেলের ইতিহাস ব্যবহার করুন echo

আর একটি পদ্ধতি হ'ল echoকমান্ডকে এমন ক্ষেত্রে সীমাবদ্ধ করা যেখানে আপনি কী মুছবেন তা অন্ধভাবেই স্পষ্ট। ডিরেক্টরিতে সমস্ত ফাইল মুছে ফেলার পরিবর্তে ডিরেক্টরিটি সরান এবং একটি নতুন ফাইল তৈরি করুন। একটি ভাল পদ্ধতি হ'ল বিদ্যমান ডিরেক্টরিটির DELETE-fooনতুন নামকরণ করা , তারপরে fooউপযুক্ত অনুমতি সহ একটি নতুন ডিরেক্টরি তৈরি করা এবং অবশেষে অপসারণ করা DELETE-foo। এই পদ্ধতির একটি সুবিধা হ'ল আপনার ইতিহাসে যে আদেশটি প্রবেশ করা হয়েছে তা হ'ল rm -rf DELETE-foo

cd ..
mv somedir DELETE-somedir
mkdir somedir                 # or rsync -dgop DELETE-somedir somedir to preserve permissions
ls DELETE-somedir             # just to make sure we're deleting the right thing
rm -rf DELETE-somedir

আপনি যদি ডিরেক্টরিটি থাকার জন্য (কারণ এটি সর্বদা উপস্থিত থাকতে হবে, বা এটি পুনরায় তৈরি করার অনুমতি না পাওয়ায়) একটি গুচ্ছ ফাইল মুছে ফেলার জন্য যদি আপনি সত্যিই জিদ করেন, তবে ফাইলগুলিকে অন্য ডিরেক্টরিতে সরিয়ে নিয়ে সেই ডিরেক্টরিটি মুছুন ।

mkdir ../DELETE_ME
mv * ../DELETE_ME
ls ../DELETE_ME
rm -rf ../DELETE_ME

(হিট করুন Alt+ .কী।)

ভিতরে থেকে একটি ডিরেক্টরি মুছে ফেলা আকর্ষণীয় হবে, কারণ rm -rf .সংক্ষিপ্ত তাই টাইপসের ঝুঁকি কম। দুর্ভাগ্যক্রমে সাধারণ সিস্টেমগুলি আপনাকে এটি করতে দেয় না। rm -rf -- "$PWD"পরিবর্তে আপনি টাইপসের উচ্চতর ঝুঁকি নিয়ে করতে পারেন তবে তাদের বেশিরভাগ কিছুই অপসারণের দিকে পরিচালিত করে। এটি আপনার শেল ইতিহাসের একটি বিপজ্জনক আদেশ ছেড়ে দেয় সাবধান।

আপনি যখনই পারেন, সংস্করণ নিয়ন্ত্রণ ব্যবহার করুন। আপনি rm, আপনি cvs rmবা যাই হোক না কেন এবং এটি অযোগ্য able

Zsh অপশন চালানোর আগে আপনাকে প্রণোদনা রয়েছে rm: একটি যুক্তি হল যে সব ফাইল একটি ডিরেক্টরির মধ্যে তালিকা সঙ্গে rm_star_silent(ডিফল্টরূপে) চালানোর আগে লেখার অনুরোধ জানানো হবে rm whatever/*, এবং rm_star_wait(বন্ধ ডিফল্টরূপে) একটি 10-সেকেন্ড বিলম্ব সময় আপনি নিশ্চিত করতে পারবেন না যোগ করা হয়েছে। আপনি যদি কিছু ডিরেক্টরিতে সমস্ত ফাইল সরিয়ে ফেলতে চেয়েছিলেন তবে এটি সীমিত ব্যবহারের কারণ আপনি ইতিমধ্যে প্রম্পটটি আশা করবেন। মনে হচ্ছে টাইপস প্রতিরোধ করতে সাহায্য করতে পারেন rm foo *জন্য rm foo*

আরও অনেকগুলি সমাধান রয়েছে যার চারপাশে rmকমান্ড পরিবর্তন করা জড়িত । এই পদ্ধতির একটি সীমাবদ্ধতা হ'ল একদিন আপনি আসল সাথে একটি মেশিনে rmথাকবেন এবং আপনি স্বয়ংক্রিয়ভাবে কল করবেন rm, আপনার নিশ্চিতকরণের প্রত্যাশায় নিরাপদ ... এবং পরবর্তী জিনিস আপনি ব্যাকআপগুলি পুনরুদ্ধার করবেন।


mv -t DELETE_ME -- *কিছুটা বোকা।
তোবু

@ গাইলস rmসরাসরি ব্যবহার না করা ভাল পরামর্শ! এর চেয়েও ভাল বিকল্প হ'ল কমান্ডটি ব্যবহার করাfind
অ্যাকুলিচ

এবং যদি আপনার ডিরেক্টরি থাকার প্রয়োজন হয় তবে আপনি কেবল এটি ব্যবহার করে find somedir -type f -deleteতা করতে পারবেন যা সমস্ত ফাইল মুছে ফেলবে somedirতবে ডিরেক্টরি এবং সমস্ত উপ-ডিরেক্টরি ছেড়ে যাবে।
অ্যাকুলিচ

19

আপনি সর্বদা একটি উপনাম করতে পারতেন, যেমনটি আপনি উল্লেখ করেছেন:

what_the_hell_am_i_thinking() {
   echo "Stop." >&2
   echo "Seriously." >&2
   echo "You almost blew up your computer." >&2
   echo 'WHAT WERE YOU THINKING!?!?!' >&2
   echo "Please provide an excuse for yourself below: " 
   read 
   echo "I'm sorry, that's a pathetic excuse. You're fired."
   sleep 2
   telnet nyancat.dakko.us
}

alias rm -fr /*="what_the_hell_am_i_thinking"

আপনি কীভাবে আপনার হার্ড ডিস্কটিকে rm -fr /*রুট হিসাবে মুছে ফেলে নিজেকে প্রায় অপমান করেছেন সে সম্পর্কে আপনার বন্ধুদের সতর্ক করতে কমান্ডলাইন টুইটার ক্লায়েন্টের সাথে এটিও সংহত করতে পারেন ।


3
+1 টেলনেট miku.acm.uiuc.edu এর জন্য
আলী

1
ওরফে প্রতিধ্বনি = "টেলনেট মিকু.একএম.ইউইক.ইডু"
কুবানচেক

আমার অবশ্যই পুরানো স্কুল হওয়া উচিত নয় ... এর তাত্পর্য কী telnet miku.acm.uiuc.edu?
কাইল স্ট্র্যান্ড

এটি চেষ্টা করে দেখুন। এটি অ-ধ্বংসাত্মক। আপনি যেমন হওয়া উচিত তেমনি অসম্পূর্ণ, একটি ভিএম চালান।
নাফটুলি কে

3
-1 আপনি ফাঁকা জায়গাগুলির সাথে কমান্ড
উরফ

15

হ্যাঁ: রুট হিসাবে কাজ করবেন না এবং অভিনয়ের আগে সবসময় দু'বার ভাবেন।

এছাড়াও, https://launchpad.net/safe-rm এর মতো কিছু দেখুন ।


সম্পাদনায় মূল হিসাবে কাজ করার কথা উল্লেখ করেছেন
ভ্যালেন্টিন নেমসেভ

@ ভ্যালেন্টিন: ও_ও !!
জোনাথন রিউক্স

15

দুর্ঘটনা রোধ করার সহজ উপায় rm -rf /*হ'ল rmকমান্ডের সমস্ত ব্যবহার এড়ানো ! আসলে, আমি সর্বদা rm /bin/rmকমান্ড সম্পূর্ণরূপে মুক্তি পেতে চালানোর জন্য প্রলুব্ধ ছিল ! না, আমি সুন্দরী হয়ে উঠছি না।

পরিবর্তে কমান্ডের -deleteবিকল্পটিfind ব্যবহার করুন , তবে প্রথমে ফাইলগুলি মুছে ফেলার আগে আমি প্রস্তাব দিচ্ছি যে আপনি কোন ফাইলগুলি মুছবেন তা:

find | less

দ্রষ্টব্য, আপনি findযদি কোনও ডিরেক্টরিটির নাম বাদ দেন তবে আধুনিক সংস্করণে এটি স্পষ্টভাবে বর্তমান ডিরেক্টরিটি ব্যবহার করবে, সুতরাং উপরেরটি সমান:

find . | less

একবার নিশ্চিত হয়ে গেলে এই ফাইলগুলি আপনি মুছতে চান আপনি তারপরে -deleteবিকল্পটি যুক্ত করতে পারেন :

find path/to/files -delete

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

find path/to/files -name '*~' | less
find path/to/files -name '*~' -delete

findএকটি নিরাপদ ছাড়াও শেখার এবং ব্যবহার করার অনেকগুলি ভাল কারণ রয়েছে rm, তাই আপনি যদি সময় ব্যবহার করতে শেখেন তবে আপনাকে পরে ধন্যবাদ জানাতে হবে find


খুব আকর্ষণীয় আলোচনা। আমি আপনার পদ্ধতির পছন্দ এবং একটি ছোট স্নিপেট তৈরি। এটা অতি অদক্ষ, কারণ এটা সবচেয়ে 3 বার এটি কল, কিন্তু আমার জন্য এই একটা চমৎকার শুরু হল: github.com/der-Daniel/fdel
ড্যানিয়েল Hitzel

14

এই থ্রেডে কিছু সত্যই খারাপ পরামর্শ রয়েছে, ভাগ্যক্রমে এর বেশিরভাগই নিচে ভোট পড়েছে।

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

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

তৃতীয় - আপনাকে খুব কমই সত্যিই করতে হবে rm -rf- সম্ভবত আপনি চান mv something something.bakবা চানmkdir _trash && mv something _trash/

চতুর্থ - সর্বদা lsআপনার ওয়াইল্ডকার্ড এর আগে rm- চিরতরে ধ্বংস করার আগে কোনও কিছু দেখার জন্য উন্মাদ কিছু নেই।


2
ব্যবহারের জন্য +1 ls
শচীন দিভেকার

@ ইভেন্তি আমি সম্মত হই যে এই থ্রেডে কিছু ভয়ঙ্কর পরামর্শ এবং কুৎসিত হ্যাক রয়েছে। এবং এটি অবশ্যই বিনষ্ট করার আগে এটির দিকে লক্ষ্য করা অবশ্যই একটি ভাল ধারণা, তবে কমান্ডটি ব্যবহার করে এটি করার আরওfind একটি ভাল উপায়
অ্যাকুলিচ

কীভাবে অনুসন্ধান সহজ বা নিরাপদ তা দেখতে আমি ব্যর্থ, তবে আমি আপনার find . -name '*~'উদাহরণটি পছন্দ করি । আমার বক্তব্যটি হ'ল lsএকই গ্লোবটি rmব্যবহার করবে যা ব্যবহার করবে list
eventi

11

এটি আরএম প্রসঙ্গে রেগেক্সপসের জন্য বিশেষত আমার মান, তবে এটি আপনাকে এই ক্ষেত্রে সাশ্রয় করতে পারত।

echo foo*/[0-9]*{bar,baz}*রেজিএক্সএক্স কী মিলছে তা দেখার জন্য আমি সর্বদা প্রথমে করি । একবার ভাবলাম আউটপুট পাওয়া যায়, আমি তখন কম্যান্ড-লাইন সম্পাদনার সঙ্গে ফিরে যান এবং পরিবর্তন echoকরার rm -rf। আমি কখনই, rm -rfএকটি অনির্ধারিত রিজেক্সেপ ব্যবহার করি না


2
দয়া করে তুলনা করুন: linuxmanpages.com/man3/regex.3.php linuxmanpages.com/man3/glob.3.php
bukzor

5
ঠিক আছে, আমি কি খুঁজছি? উদাহরণস্বরূপ পার্ল ব্যবহার করা ফাইল থেকে আপনি কী এই ফাইলটি তুলছেন যে ফাইল-ম্যাচিংয়ের জন্য রেজিপ্লেক্স সিনট্যাক্সটি আলাদা (এবং কখনও কখনও আলাদা নামে ডাকা হয়)? বা অন্য কিছু পয়েন্ট যে আমি মিস করেছি? আমি আমার এই চিন্তাভাবনার স্বচ্ছলতার জন্য ক্ষমা চাইছি, শনিবার সকালে এটিই প্রথম জিনিস!
ম্যাডহ্যাটার

9
আপনি যে জিনিসগুলিকে "রেজিএক্সএক্স" বলছেন তা আসলে গ্লোবস। এটি কোনও আলাদা রেজেক্স সিনট্যাক্স নয়; এটি একটি রেজেক্স না।
bukzor

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

1
@ ম্যাডহ্যাটার এছাড়াও, গ্লোব্বিং, যদিও দৃশ্যত কিছুটা অনুরূপ, নিয়মিত প্রকাশের থেকে শব্দার্থগতভাবে খুব আলাদা। একটি রেইজেক্সে ক্লিন স্টার* নামে অর্থটির একটি খুব সুনির্দিষ্ট সংজ্ঞা রয়েছে যা একটি অ্যানারি অপারেটর যা এটি প্রয়োগ করা সেটের শূন্য বা আরও বেশি উপাদানগুলির সাথে মেলে (নিয়মিত সম্প্রসারণের ক্ষেত্রে, অক্ষরের পূর্বে বর্ণ বা অক্ষরের সেট) ক্লেইন স্টার), যেখানে প্যাটার্ন অনুসরণ করা ম্যাচে কিছু মিলিয়ে যায়। তারা শব্দার্থগতভাবে খুব আলাদা যদিও তাদের মনে হয় এটি একটি অনুরূপ বাক্য গঠন রয়েছে। *
অ্যাকুলিচ

9

এই সমস্যার সমাধান হ'ল নিয়মিত ব্যাকআপ নেওয়া। যে কোনও সময় আপনি এমন কিছু উত্পাদন করেন যা আপনি হারানোর ঝুঁকি নিতে চান না, এটি ব্যাক আপ করুন। আপনি যদি নিয়মিত ব্যাক আপ পাওয়া বেদনাদায়ক মনে করেন তবে প্রক্রিয়াটি সহজ করুন যাতে এটি বেদনাদায়ক না হয়।

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


অনুলিপি-র লিখিত ফাইল সিস্টেম যেমন বিটিআরএফও সহায়তা করতে পারে। আপনি সহজেই একটি সাধারণ স্বয়ংক্রিয় স্ন্যাপশট রোটেশন সেট আপ করতে পারেন যা স্থানীয়ভাবে চালিত হয় (বাহ্যিক ব্যাকআপের পাশাপাশি)।
মলতে

6

দেখে মনে হচ্ছে এই ঝুঁকি হ্রাস করার সর্বোত্তম উপায় হ'ল বেশিরভাগ জিইআইআই-এর মতো দ্বি-পর্যায়ের মোছা। এটি হল, আরএমকে এমন কিছু দিয়ে প্রতিস্থাপন করুন যা জিনিসগুলিকে ট্র্যাশ ডিরেক্টরিতে (একই ভলিউমে) স্থানান্তরিত করে। তারপরে কোনও ভুল লক্ষ্য করার জন্য পর্যাপ্ত সময় পার হওয়ার পরে সেই আবর্জনা পরিষ্কার করুন।

এ জাতীয় একটি ইউটিলিটি, ট্র্যাশ-ক্লাইটি ইউনিক্স স্ট্যাকএক্সচেঞ্জে এখানে আলোচনা করা হয়েছে


এটি প্রত্যেকটি মেশিনে আমি প্রথম ইনস্টল করি। এটি ডিফল্ট অপসারণ সরঞ্জাম হওয়া উচিত, যখন তখনই আপনাকে কিছুটা অপসারণ করতে হবে কেবল তখনই rm ব্যবহার করা হয়। আমি দুঃখিত যে এটি এখনও বন্ধ হয়নি, তবে একদিন এটি শেষ হবে it সম্ভবত আরএম এর খুব জনসাধারণের পরে একটি বিশাল সমস্যা সৃষ্টি হয়েছে যা ব্যাকআপের মাধ্যমে সমাধান করা সম্ভব হয়নি। সম্ভবত এমন কিছু যেখানে পুনরুদ্ধার করতে নেওয়া সময়টি একটি বিশাল ফ্যাক্টর খেলে।
গেরি

+1 20 বছর ধরে লিনাক্স ব্যবহার করার পরে, আমি এখনও ভাবি যে কোনও ধরণের ট্র্যাশ-ক্যান আচরণ করা উচিত rm
শোভাস

3

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


4
আমি বিশ্বাস করি না সুডো এরকম কিছু প্রতিরোধ করবে। আপনি "আরএম" এর আগে "সুডো" টাইপ করলেও আপনি ওপি হিসাবে একই টাইপো তৈরি করতে পারেন।
সিজেসি

1
সম্পাদনায় মূল হিসাবে কাজ করার কথা উল্লেখ করেছেন
ভ্যালেন্টিন নেমসেভ

আপনি যদি এখনও ব্যবহার sudoএবং ব্যাকআপ সম্পর্কে নিশ্চিত হন না । এই পৃষ্ঠাটি দেখুন: ফোরাম.সাইনোলজি . com / wiki / index.php/… । এটি একটি পুনর্ব্যবহারযোগ্য বিন তৈরির বিষয়ে কথা বলছে। আশাকরি এটা সাহায্য করবে!
খালেদ

1
@ খালেদ আমি সুডো এবং ব্যাকআপগুলি ব্যবহার করছি, আমি এই নির্দিষ্ট সমস্যার জন্য আরও ভাল কিছু চাই
ভ্যালেন্টিন নেমসেভ

3

আমি যখন কোনও ডিরেক্টরি পুনরাবৃত্তভাবে মুছব, আমি কমান্ডের শেষে-r , এবং -fপ্রযোজ্য হলে , যেমন রেখেছি । এইভাবে, যদি আমি দুর্ঘটনাক্রমে পুরো পাথটি এখনও টাইপ না করে খুব তাড়াতাড়ি এন্টার টিপুন, কমান্ডটি পুনরাবৃত্ত হয় না সুতরাং এটি সম্ভবত নির্দোষ। পরে যদি স্ল্যাশ টাইপ করার চেষ্টা করার সময় আমি এন্টারটিকে ঘুরাঘুরি করি , আমি বরং লিখেছি ।rm /foo/bar -rf/foorm /foorm -rf /foo

এটি জিএনইউ কোর্টিলগুলি ব্যবহার করে সিস্টেমে দুর্দান্তভাবে কাজ করে, তবে কিছু অন্যান্য ইউনিক্সের ইউটিলিটিগুলি সেই বিকল্পগুলি শেষের দিকে রাখার অনুমতি দেয় না। ভাগ্যক্রমে, আমি এই জাতীয় সিস্টেমগুলি প্রায়শই ব্যবহার করি না।


2

এটি জটিল হতে পারে তবে আপনি সেলইনক্সের মধ্যে ভূমিকা সেটআপ করতে পারেন যাতে ব্যবহারকারী সুডো সু - (বা স্লেইন সু) এর মাধ্যমে রুট হয়ে গেলেও ফাইলগুলি মুছে ফেলার ক্ষমতা সীমাবদ্ধ করা যায় (অপসারণ করতে আপনাকে সরাসরি রুট হিসাবে লগইন করতে হবে) নথি পত্র). আপনি AppArmor ব্যবহার করে থাকেন, আপনি কিছু করতে হতে পারে অনুরূপ

অবশ্যই, অন্য সমাধানটি হ'ল আপনার ব্যাকআপ রয়েছে কিনা তা নিশ্চিত করা। :)


2

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

ফাইলগুলি noclobberরোধ করতে mvএবং cpধ্বংস করতে সেট করুন ।

মোছার জন্য একটি ফাইল ব্রাউজার ব্যবহার করুন। কিছু ফাইল ব্রাউজার একটি ট্র্যাশকেন প্রস্তাব দেয় (উদাহরণস্বরূপ, কনকোভার )।

গ্লোব্বিং এড়ানোর আর একটি উপায় নিম্নলিখিত। কমান্ড লাইনে, আমি echo filenamepattern >> xxx। তারপরে কোন ফাইলটি মুছে ফেলা হবে তা পরীক্ষা করতে, (ফাইলনেটগুলিতে ফাইলের নাম প্যাটার্ন অক্ষরের জন্য লক্ষ্য রাখি to) এবং আমি %s/^/rm -f/প্রতিটি লাইনটিকে মুছুন কমান্ডে রূপান্তর করার জন্য ফাইলটি ভিএম বা vi এর মাধ্যমে সম্পাদনা করি । উত্স এক্সএক্সএক্সএক্স। আপনি যে ফাইলটি করার আগে তা মুছে ফেলা হবে তা এই ভাবেই দেখবেন।

ফাইলগুলিকে একটি 'অ্যাটিক' ডিরেক্টরি বা টার্বল এ সরান। অথবা সংস্করণ নিয়ন্ত্রণ (যেমন আমার আগে বলা হয়েছে) ব্যবহার করুন।


আপনার ফাইলগুলি মুছে ফেলার আগে প্রাকদর্শন করার কিছু পদ্ধতি ব্যবহার করার জন্য +1, তবে কমান্ডটি ব্যবহার করে এটি করার সহজতর এবং নিরাপদ উপায় রয়েছেfind
অ্যাকুলিচ

2

জেডএসএইচ একটি সম্পাদন করার আগে আমাকে জিজ্ঞাসা করে (ডিফল্ট হিসাবে) rm -rf *


1

এর বাইরে chattr, রুটকে এমন একটি কমান্ড চালাতে দেওয়া থেকে শুরু করে কোনও সুরক্ষা নেই। এজন্য সুবিধাভোগী চলার সময় যথাযথ গোষ্ঠী এবং সাবধানী কমান্ড গুরুত্বপূর্ণ।

পরের বার; আপনি মুছে ফেলার পরিকল্পনার ফাইলগুলি স্কোপ করুন - থেকে 'চ' বাদ দিন rm -rf, বা এটি ব্যবহার করুন findএবং এতে পাস করুনxargs rm


আপনি ব্যবহার করার পরামর্শ দিচ্ছেন এটি ভাল find, তবে আমি আমার উত্তরে এটি ব্যবহারের একটি নিরাপদ উপায়ের পরামর্শ দিচ্ছি । ব্যবহার করতে কোন প্রয়োজন নেই xargs rmসব আধুনিক সংস্করণ থেকে findআছে -deleteবিকল্প । এছাড়াও, নিরাপদে ব্যবহারের জন্য আপনাকেও ব্যবহার xargs rmকরতে হবে find -print0এবং xargs -0 rmঅন্যথায় যখন আপনার ফাঁকা স্থানের ফাইল নামগুলির মতো জিনিসগুলির মুখোমুখি হয় তখন আপনার সমস্যা হবে।
অ্যাকুলিচ

আমার বক্তব্যটি xargs সম্পর্কে সংক্ষিপ্তসার সম্পর্কে নয় বরং ফাইলগুলি মুছে ফেলা এবং তারপরে অবিরত না করে প্রথমে সন্ধান করা ব্যবহার করা ছিল
২২

হ্যাঁ, আমি মনে করি যে ফাইলগুলি ব্যবহার করে স্কোপ findকরা একটি ভাল পরামর্শ, তবে xargsআপনি এটি ব্যবহার করার পরামর্শ দিলে এর সংক্ষিপ্ততাগুলি গুরুত্বপূর্ণ, অন্যথায় স্পেসগুলির সাথে ফাইলগুলির মুখোমুখি হওয়ার সময় এটি বিভ্রান্তি এবং হতাশার দিকে পরিচালিত করে (যা -deleteবিকল্পটি ব্যবহার করে এড়ানো হয় )।
অ্যাকুলিচ

1

অন্যান্য কমান্ডের অনুরূপ বিপর্যয় রোধে কিছু সুরক্ষা উপকরণ এখানে পাওয়া গেছে :

# safety features
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -I'                    # 'rm -i' prompts for every file
alias ln='ln -i'
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'

বড় হাতের দিকে খেয়াল করুন -I, এটির থেকে পৃথক -i:

তিনটির বেশি ফাইল সরানোর আগে একবার জিজ্ঞাসা করুন, বা পুনরাবৃত্তভাবে অপসারণ করার সময়। -I এর চেয়ে কম চক্রান্তকারী, এখনও বেশিরভাগ ভুলের বিরুদ্ধে সুরক্ষা দেওয়ার সময়


যদিও আই বিকল্পটি আপনি কী মুছতে চলেছেন তা আবার প্রতিধ্বনিত করবে না।
কলমারিয়াস

1

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


1

ইউনিক্স ভিত্তিক মেশিনে আমার মোছার প্রক্রিয়াটি নিম্নরূপ।

  • ls /path/to/intented/file_or_directoryটার্মিনাল উইন্ডোতে টাইপ করুন এবং তারপরে ফাইলগুলির তালিকা দেখতে return(বা Tabপছন্দসইভাবে) টিপুন ।

যদি সবকিছু দেখতে ভাল লাগে,

  • টার্মিনালের ইতিহাস থেকে আবার up arrowআনতে কীতে ক্লিক করুন ls /path/to/intented/file_or_directory

  • প্রতিস্থাপন lsসঙ্গে rmবা rm -rবা rm -rfপ্রয়োজনীয়। আমি ব্যক্তিগতভাবে -fপতাকা ব্যবহার করতে পছন্দ করি না ।

বৈধতার rmএই প্রক্রিয়াটি এই প্রক্রিয়াটি অনুসরণ করা শুরু করার আগে, কমান্ডের অকালিক বাস্তবায়নকে বাধা দেয় , যা আমার কাছে ঘটেছিল।


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

1

আপনি এখনই নতুন অভ্যাস অর্জনের মুডে না .bashrc/.profileথাকলে আপনি বোকা কিছু করতে চলেছেন কিনা তা পরীক্ষা করার জন্য কিছু পরীক্ষা যুক্ত করার জন্য ভাল জায়গা place আমি একটি বাশ ফাংশনটিতে বুঝতে পেরেছিলাম এমন একটি প্যাটার্নের জন্য আমি গ্রেপ করতে পারি যা আমার দিনকে নষ্ট করে দিতে পারে এবং এটি নিয়ে এসেছিল:

alias rm='set -f; myrm' #set -f turns off wildcard expansion need to do it outside of           
                        #the function so that we get the "raw" string.
myrm() {
    ARGV="$*"
    set +f #opposite of set -f
    if echo "$ARGV" | grep -e '-rf /*' \
                           -e 'another scary pattern'
    then
        echo "Do Not Operate Heavy Machinery while under the influence of this medication"
        return 1
    else
        /bin/rm $@
    fi
}

এটি সম্পর্কে ভাল জিনিস এটি কেবল বাশ।

এটি ফর্মটিতে স্পষ্টতই যথেষ্ট জেনেরিক নয়, তবে আমি মনে করি এটির সম্ভাবনা রয়েছে, সুতরাং দয়া করে কিছু ধারণা বা মন্তব্য পোস্ট করুন।


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

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

আমি বুঝতে পারি যে আপনি set -fযা করতে চাইছেন যা সমানভাবে set -o noglobবাশের সাথে রয়েছে, কিন্তু এটি এখনও আপনার বক্তব্যটি ব্যাখ্যা করে না যে "এটি সম্পর্কে ভাল জিনিসটি এটি কেবলমাত্র বাশ"। এর পরিবর্তে আপনি কোনও শেল ব্যবহার না করে rmবরং কমান্ডটি ব্যবহার করেfind পুরোপুরি এবং জেনেরিক উপায়ে সমস্যাটি দূর করতে পারেন । আপনি এখানে পরামর্শের সাথে তুলনা করে কীভাবে দেখুন সেই পরামর্শটি দেখার চেষ্টা করেছেন?
অ্যাকুলিচ

কেবলমাত্র বাশ দ্বারা অ্যাকুলিচ বলতে আমি বোঝাতে চাইছি অজগর বা পার্ল নির্ভরতা নয়, সব কিছু ব্যাশে করা যায়। একবার আমি আমার .bashrc সংশোধন করে আমি পুরানো অভ্যাস না ভেঙে কাজ চালিয়ে যেতে পারি। প্রতিবার আমি আরএম বাশকে অনুরোধ করলে নিশ্চিত হবে যে আমি বোকা কিছু করব না। আমাকে কেবল কিছু নিদর্শনগুলি সংজ্ঞায়িত করতে হবে যা আমি সতর্ক হতে চাই। "*" এর মতো যা বর্তমান ফোল্ডারে থাকা সমস্ত কিছু মুছে ফেলবে now প্রতিবার এবং প্রতিটি ক্ষেত্রেই এটি ঠিক তাই হবে তবে কিছুটা কাজের আন্তঃব্যবহারের সাথে "মাইর্ম" এ যুক্ত হতে পারে।
kln

@ কুলিচ ঠিক আছে, আমি চেষ্টা করে দেখিনি I আমার মনে হয় এটির কার্যপ্রবাহে উল্লেখযোগ্য পরিবর্তন দরকার। স্রেফ এখানে ম্যাক ওএস এক্স-এ পরীক্ষা করা হয়েছে আমার .bash_history 500 এবং commands কমান্ডগুলির মধ্যে 27 টি আরএম are এবং এই দিনগুলিতে আমি প্রায়শই টার্মিনাল ব্যবহার করি না।
kln

1

দুর্ভাগ্যক্রমে, অপর্যাপ্ত কর্মের কারণে আমি উপরের কোনও মন্তব্য রাখতে পারি না, তবে অন্যকে সতর্ক করতে চেয়েছিলাম যে নিরাপদ-আরএম দুর্ঘটনাজনিত গণ-অপসারণের দুঃস্বপ্নের নিরাময়ের উপায় নয়।

লিনাক্স মিন্টের ১.1.১ ভার্চুয়াল মেশিনে নিম্নলিখিতটি পরীক্ষা করা হয়েছিল (এই কমান্ডগুলির সাথে অপরিচিত যারা তাদের সতর্ক করে: এটি করবেন না! বাস্তবে, এই কমান্ডগুলির সাথে পরিচিত ব্যক্তিরাও সম্ভবত বিপর্যয়কর ডেটা ক্ষতি এড়াতে কখনও এটি করবেন না):

পাঠ্য সংস্করণ (ঘনীভূত):

$ cd /
$ sudo safe-rm -rf *
$ ls
bash: /bin/ls: No such file or directory

চিত্র সংস্করণ (পূর্ণ):

এখানে চিত্র বর্ণনা লিখুন


1

আমি রিসাইকেল বিনের উইন্ডোজ পদ্ধতির পছন্দ করি।

আমার মুছে ফেলার জন্য প্রয়োজনীয় কিছু জন্য আমি সাধারণত "/ tmp / রিসাইকিন" নামে একটি ডিরেক্টরি তৈরি করি:

mkdir /tmp/recyclebin

এবং কখনই আরএম-আরএফ ব্যবহার করি না, আমি সর্বদা ব্যবহার করি:

mv target_folder /tmp/recyclebin

তারপরে পরে, আমি আ স্ক্রিপ্ট বা ম্যানুয়ালি ব্যবহার করে রিসাইক্লিনটি খালি করি।


0

Hehe (অরক্ষিত এবং কিছুটা উত্সাহী!):

$ cat /usr/local/bin/saferm

#! /bin/bash

/bin/ls -- "$@"

echo "Those be the files you're about to delete."
echo "Do you want to proceed (y/N)?"

read userresponse

if [ "$userresponse" -eq "y" ]; then

  echo "Executing...."
  /bin/rm -- "$@"

fi

এবং তারপর:

alias rm="/usr/local/bin/saferm"

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

এবং আপনার ভাল ব্যাকআপ রয়েছে তা নিশ্চিত করুন!


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

0

এছাড়াও, কোনও সুরক্ষাকারী হিসাবে নয়, আপনি ডিগ্রি সেন্টিগ্রেড হিট করার আগে কোন ফাইলগুলি মুছে ফেলা হয়েছে তার উপায় হিসাবে, আপনি locateডাটাবেস ব্যবহার করতে পারেন (অবশ্যই এটি ইনস্টল করা এবং বেঁচে থাকলে কেবল rm)

আমি এই ব্লগ পোস্ট থেকে এটি সম্পর্কে শিখেছি


0

আপনার দুর্ঘটনাজনিত অপসারণ প্রতিরোধের জন্য প্রয়োজনীয় ফাইলগুলি সংরক্ষণ করার জন্য জেডএফএস ব্যবহার করুন এবং এমন একটি ডেমন রয়েছে যা:

  • নিয়মিত এই ফাইল সিস্টেমের স্ন্যাপশট তৈরি করে
  • পুরানো / অপ্রয়োজনীয় স্ন্যাপশটগুলি সরিয়ে দেয়।

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


0

এতটা উত্তর নয় তবে একটি টিপ, আমি সর্বদা এটি করি rm (dir) -rfনা rm -rf (dir): শেষ সম্ভাব্য মুহুর্ত পর্যন্ত পারমাণবিক পদে যাবেন না।

এটি পরিস্থিতি প্রশমিত করতে সহায়তা করে যেখানে আপনি দির নামটি এমনভাবে ফ্যাট করে যা এটি এখনও একটি বৈধ মুছে ফেলা, যেমন পিছলে যাওয়া এবং প্রবেশ কীটি চাপানো।


স্মার্ট, তবে বিএসডি-তে কাজ করবে না rm, যেখানে ফাইলের নামের আগে বিকল্পগুলি আসতে হবে।
স্মিভেন

হাঁ। আমি সম্প্রতি অ্যাপলের ব্যবহার খুঁজে পেয়েছি। সমাধানটি হ'ল gnu সরঞ্জামগুলি ইনস্টল করা এবং প্রতিটি কিছুর জন্য উপকরণ সেট করা :) এবং / অথবা সম্ভবত অ্যাপলটিকে ট্র্যাশকেলে ফেলে দেওয়া উচিত। :)
সাইরেক্স


1
যদি আমাকে অনুমতি দেওয়া হত, একটি ন্যানোসেকেন্ডে। এটি লিনাক্সের তুলনায় আবর্জনা।
সাইরেক্স

0

আমি মনে করি এটি শেলটিতে * এক্সটেনশন শর্টকাট সহ একটি শক্তিশালী প্রতিরোধের টিপ:

প্রথমে টাইপ করুন rm -rf *বা rm -rf your/path/*, Enterকী টাইপ করবেন না । (অবশ্যই, আপনার যত্ন নেওয়ার অভ্যাস থাকা উচিত যখন ব্যবহার করার সময় দ্রুত / দুর্ঘটনাক্রমে এন্টার টিপবেন না rm -rf)

তারপরে, বাশ-এ "*" ওয়াইল্ডকার্ডকে সুস্পষ্টভাবে প্রসারিত করতে Alt-Shift-8(ie Alt-Shift-*) টিপুন । এটি ইতিহাস নেভিগেট করার সময় "rm -rf *" কমান্ড পুনরায় প্রবেশ করা এড়াতে পারে।

পরিশেষে, প্রসারণের সঠিক ফাইল / ডিরেক্টরি রয়েছে যাচাই করার পরে, এন্টার টিপুন।

সম্পন্ন.


0

যদি এটি কাউকে তাদের নিজস্ব ক্ষেত্রে সাহায্য করে:

1. ব্যবহার করুন rmsafe:

এটি ফাইলগুলিকে একটি "আবর্জনা" ফোল্ডারে নিয়ে যায় এবং আপনার সর্বদা একটি সাধারণ দিয়ে এগুলি ফিরিয়ে আনার সুযোগ থাকে mv:

$ rmsafe /path/to/important/files

সূত্র: https://github.com/pendashteh/rmsafe

2. ব্যবহার করুন safe:

rmনিরাপদ ব্যবহারের জন্য আপনি একটি নাম সেট করতে পারেন :

$ alias rm="safe rm"

এখন আপনি যদি চালনা rm /*করেন তবে প্রতিক্রিয়াতে এটি পান:

$ rm /*
Are you sure you want to 'rm /bin /boot /data /dev /etc /home /initrd.img /lib /lib64 /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var'? [y/n]

এবং আমি বিশ্বাস করি আপনি টাইপ করবেন না y!

সূত্র: https://github.com/pendashteh/safe

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