Rm -rf কি প্রতীকী লিঙ্কগুলি অনুসরণ করে?


72

আমার এইরকম একটি ডিরেক্টরি আছে:

$ ls -l
total 899166
drwxr-xr-x 12 me scicomp       324 Jan 24 13:47 data
-rw-r--r--  1 me scicomp     84188 Jan 24 13:47 lod-thin-1.000000-0.010000-0.030000.rda
drwxr-xr-x  2 me scicomp       808 Jan 24 13:47 log
lrwxrwxrwx  1 me scicomp        17 Jan 25 09:41 msg -> /home/me/msg

এবং আমি এটি ব্যবহার করে মুছে ফেলতে চাই rm -r

তবে আমি ভীত হয়েছি rm -rসিমলিংকটি অনুসরণ করবে এবং সেই ডিরেক্টরিতে থাকা সমস্ত কিছু মুছে ফেলবে (যা খুব খারাপ)।

ম্যান পৃষ্ঠাগুলিতে আমি এ সম্পর্কে কিছুই খুঁজে পাচ্ছি না। এটির rm -rfউপরে ডিরেক্টরি থেকে চালানোর সঠিক আচরণটি কী হবে ?


16
একটি ডামি ফাইলের দিকে ইঙ্গিত করে একটি সিমিলিংক দিয়ে একটি ডামি দির তৈরি করা এবং দৃশ্যের সম্পাদন করা কতটা শক্ত? তাহলে আপনি কীভাবে এটি কাজ করে তা নিশ্চিতভাবে জানতে পারবেন!

উত্তর:


57

উদাহরণ 1: অন্য ডিরেক্টরিতে নরম লিঙ্কযুক্ত ডিরেক্টরি মুছে ফেলা হচ্ছে।

susam@nifty:~/so$ mkdir foo bar
susam@nifty:~/so$ touch bar/a.txt
susam@nifty:~/so$ ln -s /home/susam/so/bar/ foo/baz
susam@nifty:~/so$ tree
.
├── bar
   └── a.txt
└── foo
    └── baz -> /home/susam/so/bar/

3 directories, 1 file
susam@nifty:~/so$ rm -r foo
susam@nifty:~/so$ tree
.
└── bar
    └── a.txt

1 directory, 1 file
susam@nifty:~/so$

সুতরাং, আমরা দেখতে পাচ্ছি যে সফট লিঙ্কের লক্ষ্য বেঁচে আছে।

উদাহরণ 2: একটি ডিরেক্টরিতে একটি সফট লিঙ্ক মোছা

susam@nifty:~/so$ ln -s /home/susam/so/bar baz
susam@nifty:~/so$ tree
.
├── bar
   └── a.txt
└── baz -> /home/susam/so/bar

2 directories, 1 file
susam@nifty:~/so$ rm -r baz
susam@nifty:~/so$ tree
.
└── bar
    └── a.txt

1 directory, 1 file
susam@nifty:~/so$

শুধুমাত্র, নরম লিঙ্কটি মোছা হয়েছে। সফট লিঙ্কের লক্ষ্য বেঁচে থাকে।

উদাহরণ 3: একটি সফট-লিঙ্কের লক্ষ্য মুছে ফেলার চেষ্টা করা হচ্ছে

susam@nifty:~/so$ ln -s /home/susam/so/bar baz
susam@nifty:~/so$ tree
.
├── bar
   └── a.txt
└── baz -> /home/susam/so/bar

2 directories, 1 file
susam@nifty:~/so$ rm -r baz/
rm: cannot remove 'baz/': Not a directory
susam@nifty:~/so$ tree
.
├── bar
└── baz -> /home/susam/so/bar

2 directories, 0 files

প্রতীকী লিঙ্কের টার্গেটে থাকা ফাইলটি বেঁচে নেই।

উপরের পরীক্ষাগুলি একটি ডেবিয়ান জিএনইউ / লিনাক্স 9.0 (প্রসারিত) সিস্টেমে করা হয়েছিল।


12
আরএম
আরএফ

2
হ্যাঁ, আপনি যদি rm -rf [syMLink] করেন তবে মূল ডিরেক্টরিটির বিষয়বস্তুগুলি বিলুপ্ত হয়ে যাবে! খুব সতর্ক হও.
বাটল বাটকাস

@frnknstn আপনি ঠিক বলেছেন আপনি আমার সর্বশেষতম দেবিয়ান সিস্টেমে উল্লিখিত একই আচরণটি দেখছি। আমি মনে করি না যে পূর্ববর্তী পরীক্ষাগুলি আমি দেবিয়ানর কোন সংস্করণে সম্পাদন করেছি। ডিবানের একটি পুরানো সংস্করণে আমার পূর্ববর্তী পরীক্ষায়, a.txt অবশ্যই তৃতীয় উদাহরণে বেঁচে থাকতে পারে বা আমার পরীক্ষায় অবশ্যই একটি ত্রুটি ঘটেছে। আমি ডেবিয়ান 9-তে পালন করা বর্তমান আচরণের সাথে উত্তরটি আপডেট করেছি এবং এই আচরণটি আপনি যা উল্লেখ করেছেন তার সাথে সামঞ্জস্যপূর্ণ।
সুসম পাল

19

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

আমি কেবল সতর্ক থাকব, আপনি যদি "আরএম-আরএফ @ /" (পেছনের স্ল্যাশ সহ) নামে কিছু ডাকেন তবে এটি করবেন না কারণ এটি সেই চিহ্নটি সিমিঙ্কের পরিবর্তে যে নির্দেশনাটি নির্দেশ করে সেই ডিরেক্টরিটি মুছে ফেলবে it নিজেই।


3
"কেবলমাত্র আমি সাবধান থাকব, তা হ'ল যদি আপনি" rm -rf msg / "(পেছনের স্ল্যাশ সহ কিছু) বলে থাকেন তবে এটি করবেন না কারণ এটি সেই নির্দেশকে যে নির্দেশনাটি নির্দেশ করে তার পরিবর্তে এই চিত্রটি মুছে দেবে নিজেই sylink। " - আমি এটি সত্য বলে মনে করি না। নীচে আমার প্রতিক্রিয়া তৃতীয় উদাহরণ দেখুন।

1
আমি @ সুসামের মতো একই ফলাফল পেয়েছি ('rm -r syMLink /' সিমলিংকের লক্ষ্য মুছে না), যা আমি খুব খুশী কারণ এটি করা খুব সহজ একটি ভুল হবে।
অ্যান্ড্রু ক্র্যাব

5

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

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