ওএস এক্স `rm` এর নিরাপদ বিকল্প?


9

rmনিরাপদ কিছু করার জন্য আমার অভ্যস্ত।

আমি ব্যবহার করছি osx-trash, তবে একবার আমি রুবি ১.৯.২ এ আপগ্রেড করলে এটি কাজ করা বন্ধ করে দেয়।

trash-cliপাইথন থেকে আমি জানি , তবে আমি অন্য কোনও ডিরেক্টরিকে না করে ওএস এক্সের ট্র্যাশ ফোল্ডারে ফাইলগুলি স্থানান্তরিত এমন কিছু বিষয়টিকে অনেক বেশি পছন্দ করব।

কারও কি ভাল সমাধান হতে পারে?


9
দয়া করে, এলিয়াসে অভ্যস্ত হয়ে উঠবেন না rm, বরং অভ্যাস করুন mv files/to/be/deleted ~/.Trash। এটি নিরাপদ এবং সিস্টেম জুড়ে ধারাবাহিক।
Asmus

অ্যাসমাস: আপনি দেখতে পাচ্ছেন যে আপনার ম্যাকের কেবলমাত্র 1 টি বিভাজন রয়েছে। আপনার যদি অন্য একটি পার্টিশন থাকে, ~ / .ট্রে ট্র্যাশ করা সত্যিই সঠিক নয় (আমার ~ পার্টিশনটি যথেষ্ট বড় নয়)।
অদৃশ্য হয়ে গেছে

1
আচ্ছা আপনার প্রশ্নে উল্লেখ করা উচিত ছিল যে আপনার একাধিক পার্টিশন রয়েছে!
slhck

1
অদৃশ্য: ভাল, আমি mvএখনও আপনার নিরাপদ বাজি মনে হয়। আপনি সহজেই আপনার অন্য পার্টিশনের নামে একটি নতুন ফোল্ডার তৈরি করতে পারেন Trash(বা তবে এটি আপনি পছন্দ করেন) এবং তারপরে mvফাইলগুলি। একবার নিশ্চিত হয়ে গেলে সেগুলি মুছে ফেলা যায়, মুছুন এবং সেই সম্পূর্ণ ফোল্ডারটি পুনরায় তৈরি করুন।
Asmus

এবং তারপরে আপনার কেবলমাত্র ~ /। ট্র্যাশ থাকতে পারে এমন পার্টিশনের ট্র্যাশ ফোল্ডারের একটি নরম লিঙ্ক হতে পারে যাতে পর্যাপ্ত জায়গা রয়েছে
অ্যালকুবিয়েরেড্রাইভ

উত্তর:


8

ওএসএক্সের জন্য, আপনি ব্যবহার করতে পারেন safe-rm

brew install safe-rm

এটি rmডিফল্টর চেয়ে বেশি পছন্দ করতে আপনাকে একটি অতিরিক্ত পদক্ষেপ করতে হবে - একটি সিমিলিংক যুক্ত করুন।

echo $PATH

আমার জন্য, আমার /usr/local/bin:প্রথম, safe-rmইনস্টলের মতো একই দির আছে

সিলেমিলিং এ যুক্ত করুন safe-rm

ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

ডিফল্ট অপসারণ এবং পুনরুদ্ধার করতে rmআপনি সিমলিংকটি মুছে ফেলতে পারেনrm /usr/local/bin/rm

কনফিগারেশন ফাইলটি এখানে যুক্ত করা যেতে পারে /etc/safe-rm.conf

উদাহরণ:

/private
/Applications
/Developer
/Library
/Network
/System
/Users
/Volumes
/test

rm -rf /testএটির সাথে পরীক্ষাটি মুছে ফেলার বিষয়টি অস্বীকার করবেsafe-rm.conf


/ক্লাসিক rm -fr / রোধ করতে মুছে ফেলা উচিত নয় এমন রাস্তাগুলির তালিকায় আরও যোগ করা ভাল হতে পারে
মিকেল

3

hasseg.org/trash হ'ল অসক্স -ট্র্যাশের মতো একটি উদ্দেশ্য-সি ইউটিলিটি ।

আমি একটি শেল ফাংশন লিখেছি যা mv * ~/.Trashচাইলে ফাইলগুলি ওভাররাইট করে না । এটি সর্বদা আইটেমগুলি প্রারম্ভকৃত পরিমাণে সরিয়ে দেয়।

trash() {
    for f in "$@"; do
        bn=$(basename "$f")
        while [ -e ~/.Trash/"$bn" ]; do
            bn="$bn $(date +%H.%M.%S %p)"
        done
        mv "$f" ~/.Trash/"$bn"
    done
}

হ্যাঁ, আমার 1 টিরও বেশি পার্টিশন রয়েছে এবং আমি মুছে ফেলা ফাইলগুলি সরানোর পরিবর্তে একই পার্টিশনে রাখতে চাই
অদৃশ্য হয়ে গেছে

আমি দুটি অন্যান্য ইউটিলিটি এবং অন্য ফাংশনে লিঙ্ক যুক্ত করেছি। তাদের প্রত্যেকের ফাইল একই পার্টিশনে রাখা উচিত।
ল্রি

2

ভূমিকা (আপনি এড়িয়ে যেতে পারেন)

আমার জন্য rm -iযথেষ্ট হবে, কারণ এটি কোনও ফাইল মোছার আগে আপনাকে অনুরোধ জানায়। তবে সরবরাহ করা কিছু অতিরিক্ত সুরক্ষা safe-rmমোটেই খারাপ ধারণা নয়।

একটি সরল aliasমত যথেষ্ট rm=safe-rm -i হতে পারে, তবে rm -rfকাজ করবে না, কারণ -iএটি ওভার্রাইড হয়ে গেছে -f

সুতরাং, আমাদের নিশ্চিত করতে হবে যে -iসর্বদা পরে আসবে -f!


আমার সমাধান (3 পদক্ষেপ):

  • নিরাপদ-আরএম ইনস্টল করুন: brew install safe-rm

    আপনি এখনও সাথে কাজ করতে পারেন rm, তবে আপনি RM_BINপরবর্তী পদক্ষেপে এটি পরিবর্তন করেছেন

  • আপনার ~/.profile(বা বাশ_প্রোফাইলে বা যা কিছু) সম্পাদনা করুন এবং নীচের কোড স্নিপেট রাখুন (এতে একটি aliasএবং একটি রয়েছে function):

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • অবশেষে , logoutএবং login, তাই .profile আপডেট করা হয়। লগআউট / লগইনের আগে এটি ব্যবহার করবেন না !


মন্তব্য:

  • এটি সামান্য পরিবর্তন সহ কোনও লিনাক্স ডিস্ট্রোতে প্রয়োগ করা যেতে পারে।
  • এটি আপনার কর্মীদের ছুড়ে মারতে সরবে না। এটি প্রতিটি ফাইল মুছে ফেলার আগে আপনাকে জিজ্ঞাসা করে!
  • এটি -rfরেগেক্সগুলির সাথে এবং তার সাথে কাজ করে ।
  • আপনি যদি প্রতিটি একক ফাইল / ফোল্ডারের জন্য জিজ্ঞাসা করা rm -rf ছাড়া সত্যই ব্যবহার করতে চান তবে আপনি এখনও ব্যবহার করতে পারেন /bin/rm -rf(বা safe-rm -rfআপনি এটি ইনস্টল করে থাকলে)।
  • আর অজান্তেই rm -rf বা rm * ;)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.