আরএম কমান্ডের নামকরণ এবং এটি নিরাপদ করার সর্বোত্তম অনুশীলন


21

কিছু সময় আগে আমি ভুল করে আমার হোম ফোল্ডারটি মুছে ফেলেছিলাম কারণ আমি rm -rf *ভুল টার্মিনালটিতে দৌড়েছিলাম , যার ওয়ার্কিং ডিরেক্টরি হ'ল ফোল্ডার!

আমি আশা করি rmকমান্ডটির জন্য আমার একটি নাম ছিল , তবে এটি ছিল না।

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

আপনার কি পরামর্শ দেওয়ার মতো সেরা অনুশীলন আছে?

ধন্যবাদ।


7
এমন নয় যে আমার সহানুভূতি নেই, তবে আমি মনে করি না যে rmএকটি বিপজ্জনক আদেশ হ'ল সুরক্ষার জন্য একটি উলামের প্রয়োজন। ব্যবহারের rএবং fবিকল্প, আপনি শেল বলছ আমি জানি এই বিপজ্জনক, এবং আমি এটা সম্পর্কে সাবধানে চিন্তা করেছি, এবং এটা _really_ কি আমি কি করতে চান । আপনি যদি এই বিকল্পগুলি ব্যবহার না করেন তবে আপনি এটির সাহায্যে আপনার পুরো হোম ফোল্ডারটি মুছতে পারবেন না।
ব্যবহারকারী26512

এই প্রশ্নটি কি স্ট্যাকওভারফ্লো . com/ জিজ্ঞাসা / 73৩15১1566 / এর মতো একই তথ্যকে কভার করে ?
ডেভিড হ্যারিস

1
@ গ্রেসভোভেল কোন অপরাধ নেওয়া হয়নি :)! তবে, এই আদেশটি অ্যালিজ করা একটি সাধারণ অভ্যাস। প্রতিটি মুছে ফেলা নিশ্চিত হওয়া এড়াতে প্রচুর লোকেরা -f বিকল্পটি ব্যবহার করে।

23
মনে রাখবেন যে আপনি যদি কোনও উপাধ ব্যবহার করেন তবে আপনার rmসেই উপন্যাসটি অভ্যস্ত হয়ে যাবে। তারপরে একদিন, আপনি এমন একটি সিস্টেমে থাকবেন যেখানে উপনামটির অস্তিত্ব নেই, এবং আপনি যখন কমপক্ষে এটির প্রত্যাশা করছেন তখন আপনি ভুল কাজটি করবেন। এবং এটি সম্ভবত আপনার সিস্টেম হবে না।
স্টিফান লাসিউইস্কি

2
@ ফুলার কেবল আরএইচইএলের মতো সিস্টেমে যে বোকামিভাবে উপনাম rmহয় rm -i
ড্যানিয়েল বেক

উত্তর:


30

আপনি যদি একটি কাস্টমাইজড চান rm, এটা কল না rmকিন্তু পুলিশের একটি নাম, myrm, deleteবা যাই হোক না কেন।

rm='rm -i'ওরফে একটি ভয়াবহ কারণ পরে কিছুদিনের এটি ব্যবহার, আপনি আশা করতে হবে rmফাইল মুছে ফেলার পূর্বে ডিফল্ট ভাবে আপনার অনুরোধ জানানো। অবশ্যই, একদিন আপনি এটিকে এমন এক অ্যাকাউন্ট দিয়ে চালাবেন যার কোনও নাম নেই এবং এটি কী হবে তা বোঝার আগে অনেক দেরি হয়ে গেছে।

যাইহোক, ফাইল হ্রাস বা দুর্নীতির জন্য প্রস্তুত হওয়ার একটি ভাল উপায় ব্যাকআপ করছে।

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


3
আমি সেই ভৌতিক গল্পটি ব্যক্তিগতভাবে শুনেছি যাঁরা এর মধ্যে পড়েছিল তাদের মধ্যে একটির কাছ থেকে।
ড্যান ডি

আমি সম্মত তবে বেশিরভাগ লোক সম্পূর্ণ ভিন্ন ফাইল সিস্টেমে স্যুইচ করার স্বাধীনতায় নেই।
পিয়ন

আসলে, এই কারণেই আমি প্রথমে ব্যাকআপগুলি করার পরামর্শ দিই, এমন কোনও বৈশিষ্ট্য যা কোনও ফাইল সিস্টেম নিষিদ্ধ করে।
jlliagre

12

আপনি alias লেখা সংরক্ষণ চাই, কিন্তু তা করেন তাহলে নিষ্ক্রিয় করতে অন্যদের চেয়ে আপনার সিস্টেমে ভিন্নভাবে কাজ কমান্ড ব্যবহার করা হচ্ছে ঝুঁকি করতে চান, আপনি পারবেন rmভালো

alias rm='echo "rm is disabled, use remove or trash or /bin/rm instead."'

তারপরে আপনি নিজের সুরক্ষিত উপন্যাস তৈরি করতে পারেন, যেমন

alias remove='/bin/rm -irv'

বা trashপরিবর্তে ব্যবহার করুন।


2
নোট করুন (কমপক্ষে কয়েকটি সংস্করণে) আপনাকে অবশ্যই অন্যান্য ক্রমে উপস্বত্ত্বগুলি সংজ্ঞায়িত করতে হবে। আপনি যে ক্রমটি উপস্থাপন করেন removeসেভাবে এটি করা হিসাবে সংজ্ঞায়িত হয় echo "rm is disabled, use trash or /bin/rm instead." -irv। এবং, কেবল সাধারণ জ্ঞানের বিষয় হিসাবে, আপনি কি বার্তাটি rmআপনার সুরক্ষা removeআদেশটি উল্লেখ করতে চান না ?
স্কট

আপনি ঠিক বলেছেন, আমি সেই অনুযায়ী উত্তর আপডেট করব।
দারিও সিডল

5

trashপরিবর্তে আপনি চেষ্টা করতে পারেন । একবারে একবারে খালি মনে রাখবেন ...


3

প্রত্যেকের প্রোফাইল পরিবর্তন না করে আপনি যা করতে পারেন তা হ'ল ডিরেক্টরিতে -i নামক ফাইল স্থাপন করুন।

# touch -- -i
# ll
total 0
-rw-r--r-- 1 root users  0 Jan 26 19:24 files
drwxr-xr-x 2 root users 40 Jan 26 19:24 folder_of_power
-rw-r--r-- 1 root root   0 Jan 26 19:25 -i
-rw-r--r-- 1 root users  0 Jan 26 19:24 important
-rw-r--r-- 1 root users  0 Jan 26 19:24 very
# rm -rf *
rm: remove regular empty file `files'? 

ব্যবহারকারী * ব্যবহার করার সিদ্ধান্ত নিলে কাজ করবে না। * শুধু * এর পরিবর্তে। কিন্তু এখনও একটি ঝরঝরে কৌশল।
পিওন

1
আফাইক আরএম-আরএফ আরএমএমআরএফ .. সফল হতে পারে না কারণ আপনি বর্তমানে ডিরেক্টরিতে রয়েছেন।
পিওন

@ পিওন: আমি বিশ্বাস করি যে আপনি (যা আমি বেশি সাধারণ বলে বিশ্বাস করি) বা (যা আপনি বলেছিলেন) এর .* *চেয়ে আপনার অর্থ বোঝানো । ……………… ...……………………………………………………………… এই কৌশলটি সত্যিকারের, বিশ্বব্যাপী কার্যকর হওয়ার জন্য, আপনার প্রতিটি লেখায় যেখানে লেখার অনুমতি রয়েছে সেখানে এটি করা দরকার । তবে আমি একমত, এটি একটি ঝরঝরে কৌশল। * .** . *
স্কট

1

আমি নিম্নলিখিত স্ক্রিপ্ট ব্যবহার।

#!/bin/sh

trash=$HOME/tmp
mv "$@" $trash
nohup find "$trash" -type f -atime +7 -exec /bin/rm '{}' \; 2>&1 &

আপনি যদি দুর্ঘটনাক্রমে কোনও ফাইল মুছে ফেলেন তবে এটি থেকে পুনরুদ্ধার করুন $HOME/tmp

স্ক্রিপ্টটি মুছে ফেলা ফাইলগুলিকে একটি tmpডিরেক্টরিতে সরিয়ে দেয় এবং অ্যাক্সেসের সময়টি days দিন পরে থাকলে (ডিরেক্টরিটির আধা-স্বয়ংক্রিয় ক্লিনআপ $HOME/tmp) মুছলে স্ক্রিপ্টটি চালানো হলে পরের বার মুছুন script


-2

আপনার প্রোফাইলে,

alias rm="rm -i"

3
আমার মতে আলিয়াজিং আরএম হ'ল বেশ খারাপ পরামর্শ এবং এটি চালকের ক্ষেত্রে কোনওভাবেই সহায়তা করবে না।
jlliagre

rm -I@jlliagre উভয় বিশ্বের সেরা দেয়।
তমারা উইজসম্যান

@ টম উইজসম্যান, আংশিক সত্যই। একটি সমালোচিত মানক ইউনিক্স কমান্ডের আচরণ পরিবর্তন করা এখানে এখনও একটি সম্ভাব্য ঝুঁকি। আপনি যদি এটি ইন্টারেক্টিভ হতে চান তবে উপনামটির একটি আলাদা নাম দিন।
jlliagre

@ জেলিয়াগ্রে: হুম, সুতরাং আপনার অর্থ স্ক্রিপ্টগুলি কী এই পরিবর্তনটি ধরা দেয়?
তামারা উইজসম্যান

আমার বক্তব্য পেতে অনুগ্রহ করে আমার উত্তরটি পড়ুন superuser.com/a/382498/19279
jlliagre

-2

একটি লিপি বলা হয় d, বিষয়বস্তু সহ mv $* /tmp

সম্পাদনা: এটি একটি খারাপ ধারণা; নিচে দেখ. আমি বর্তমানে alias d='mv -t /tmp'আমার .profileপরিবর্তে আছে।


2
এই পরামর্শটি বিপজ্জনক এবং ক) ইতিমধ্যে একই নামযুক্ত ট্র্যাশযুক্ত ফাইলগুলিকে ওভাররাইড করতে পারে বা খ) সম্পূর্ণ ভুল ফাইলগুলি d "foo bar"মুছবে (ফাইলগুলি মুছবে fooএবং bar)। কিছু নিরাপদ সম্ভবত #!/bin/bash TRASH="$( mktemp -d -t trashed.XXX )"; echo "Moving to trash $TRASH"; mv -v -- "$@" "$TRASH"( mktempএবং mvসিনট্যাক্স আপনার সিস্টেমের উপর নির্ভর করে এটি লিনাক্সের জন্য কাজ করে)।
ড্যানিয়েল বেক

2
ব্যাখ্যা করার জন্য ধন্যবাদ. আমি ইস্যু এ ভাল আছি) তবে ইস্যু খ) একটি বড় সমস্যা। আমি আমার dআদেশ alias d='mv -t /tmp'আমার মধ্যে পরিবর্তন .profile; আমি মনে করি এটি সহজ সমাধান যা আমি সন্ধান করছিলাম।
গরুর মাংস

-2

এই বাশ কোডটি rmআপনার ~/.bash_profileকনফিগারেশন ফাইলটিতে ফাংশন যুক্ত করে । এটি চালানোর পরে rm file, আপনি যদি লিখেন তবে আপনি ফাইলটি সরিয়ে ফেলবেন/tmp

cat << EOF >> ~/.bash_profile
rm () {
  mv $1 /tmp
}
EOF

1
এই স্ক্রিপ্ট / কোড কি করে? দয়া করে ব্যাখ্যা করুন যাতে কম প্রযুক্তিগত ব্যবহারকারীরা আপনার উত্তর বুঝতে পারে।
ভিলিক্স

2
যদিও এটি প্রশ্নের উত্তর দিতে পারে, আপনি কেন এটি করেন তার কিছু ব্যাখ্যা দিতে পারলে এটি আরও ভাল উত্তর হবে।
ডেভিডপস্টিল

1
এটি প্রশ্নের উত্তর সরবরাহ করে তবে এটি অত্যন্ত দরিদ্র। এই উত্তরের দুটি আরও ভাল সংস্করণ ইতিমধ্যে পোস্ট করা হয়েছে।
স্কট

এই বাশ কোডটি rmআপনার ~/.bash_profileকনফিগারেশন ফাইলটিতে ফাংশন যুক্ত করে । এই ফাইলটি চালানোর পরে rm file, আপনি যদি লিখেন তবে আপনি ফাইলটি সরান /tmp
ভিসেন্টে গঞ্জালেজ

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