আরএম-তে কলগুলি বাধা দেওয়া, এবং পরিবর্তে মুছে ফেলা ফাইলগুলি ট্র্যাশে পাঠানো


10

আরএম-তে কল আটকানোর উপায় নেই, এবং পরিবর্তে ফাইলগুলি মুছে ফেলার পরিবর্তে, তাদের পরিবর্তে ট্র্যাসে স্থানান্তরিত করার?


আপনি কিভাবে সর্বজনীন জিজ্ঞাসা করছেন? আপনি কি প্রতিটি ব্যবহারকারী বা প্রক্রিয়া দ্বারা প্রতিটি আরএম কলের অর্থ? বা বাশ ব্যবহার করার সময় কেবল আপনার জন্য? বা ..
djeikyb

উত্তর:


13

এর জন্য ওয়েবআপড 8.org-এ একটি রেসিপি রয়েছে । লিঙ্ক পচা রোধ করতে, এখানে গুরুত্বপূর্ণ তথ্য (কয়েকটি সংযোজন সহ)।

sudo apt-get install trash-cli

এই ইনস্টল করবে trash, empty-trash, list-trashএবং restore-trashকমান্ড, যা আপনি ব্যবহার করতে পারেন হিসাবে নয় অথবা করতে rmএকজন ওরফে trash(নিচে দেখুন)।

শব্দার্থিক trashকমান্ড একটু ভিন্ন তারপর মান rm- এটি প্রয়োজন হয় না -rডিরেক্টরি মুছতে সক্ষম হবেন করার জন্য পতাকা। যদি এটি আপনাকে বিরক্ত করে, webupd8.org নীচের স্ক্রিপ্টটি প্রস্তাব করে, যা আপনি আপনার PATH এ রেখে কল করতে পারেন trash-rm:

#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
    case "$f" in

        (-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
            tmp="${f//[rR]/}"
            if [ -n "$tmp" ]; then
                #echo "\$tmp == $tmp"
                cmd[$i]="$tmp"
                ((i++))
            fi
            recursive=0
        ;;

        (--recursive) recursive=0
        ;;

        (*)
            if [ $recursive != 0   -a  -d "$f" ]; then
                echo "skipping directory: $f"
                continue
            else
                cmd[$i]="$f"
                ((i++))
            fi
        ;;

    esac
done
trash "${cmd[@]}"

উবুন্টু 12.04 এবং তার পরে, স্ক্রিপ্টের শেষ কমান্ডটি trash-put "${cmd[@]}"পরিবর্তে হওয়া উচিত trash "${cmd[@]}"(যেমন কমান্ডটি পরিবর্তিত trashহয়েছে trash-put)।

তারপরে স্ক্রিপ্টটি সম্পাদনযোগ্য করুন:

chmod +x trash-rm

আপনার কোনও ডিরেক্টরিতে এটি হয়ে গেলে PATHআপনার ~ / .bashrc এ একটি উপাধি যুক্ত করুন, যা প্রকৃত rmআদেশের পরিবর্তে আপনার স্ক্রিপ্টটি আহ্বান করতে বাশ তৈরি করবে :

alias rm="trash-rm"

যেমনটি ডিজাইব সঠিকভাবে উল্লেখ করেছেন, .bashrc ওরফে ট্রিকটি কেবল সেই ব্যবহারকারীর জন্য কাজ করবে যার .bashrc পরিবর্তিত এবং কেবল বাশ টার্মিনাল সেশনে।

এবং যে এটি হতে হবে।


এটি একটি ভাল উত্তর, তবে আপনি যদি কোনও নাম ব্যবহারের মূল ধারণার উপর জোর দেওয়ার জন্য পুনর্গঠন করেন তবে এটি আরও ভাল হবে। আমি মনে করি এটি কীভাবে "ইন্টারসেপ্ট" করতে হবে তা বুঝতে সবচেয়ে গুরুত্বপূর্ণ। তার জায়গায় যা ঘটে তা কোনও কোনও উপায়ে কাস্টমাইজ করা যায়।
djeikyb

এছাড়াও, এটি উল্লেখ করা ভাল হবে যে এটি কেবল ব্যবহারকারীর বাশ সেশনের জন্য rm কমান্ডকে প্রভাবিত করে।
djeikyb

@ ডিজেইকিব: সংঘাতের জন্য ধন্যবাদ, আমি উত্তরটি আপডেট করেছি
সের্গেই

এটি আমার জন্য স্ক্রিপ্ট ছাড়াই দুর্দান্ত কাজ করে (সবেমাত্র ইনস্টল করা এবং যুক্ত করা alias="trash")। আপনি কি জানেন স্ক্রিপ্ট থাকার সুবিধা কী?
দেশগুয়া

@ ডেসগুয়া: স্ক্রিপ্টের উদ্দেশ্য হ'ল ডিরেক্টরি মুছে ফেলার ক্ষেত্রে trashআরও বেশি আচরণ করা rm। এটি এমন কিছু স্ক্রিপ্টগুলির জন্য গুরুত্বপূর্ণ হতে পারে যা rmউদাহরণস্বরূপ এটির মতো কাজ করার প্রত্যাশা করে। আমি উত্তর আপডেট।
সের্গেই

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