ইউনিক্স: ডিরেক্টরি নাম পরে স্ল্যাশ বা না


13

নিম্নলিখিত আদেশের মধ্যে পার্থক্য কি?

mv foo bar
mv foo/ bar/
mv foo/ bar
mv foo bar/

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


2
এটি RSSync এর জন্য সত্য। ডিরেক্টরিটি নিজে নিজেই বা তার অধীনে থাকা আইটেমগুলির সাথে অনুলিপি শুরু করে, আপনি যথাক্রমে পিছনে স্ল্যাশ এড়িয়ে যান বা যোগ করার উপর নির্ভর করে।
ম্যাক্সেলোস্ট

@ ম্যাক্সেলোস্ট: আপনি কয়েকটি উদাহরণ দিয়ে একটি উত্তর যুক্ত করতে পারলেন যাতে এটি স্ফটিক পরিষ্কার হয় যা কী করে?
Svish

মাইকেল নীচে এটি পরিষ্কারভাবে উত্তর দিয়েছেন, আমি মনে করি।
ম্যাক্সেলোস্ট

উত্তর:


17

অনেকগুলি ইউনিক্স ইউটিলিটিস ট্রিলিং স্ল্যাশ রয়েছে কিনা তার উপর নির্ভর করে সিমলিংকের সাথে আলাদাভাবে আচরণ করে।

এই আচরণটি পসিক্স সিম্বলিক লিংক ডকুমেন্টেশনে বর্ণিত হয়েছে এবং জিএনইউ কোর্টিলস ডকুমেন্টেশনেও উল্লেখ করা হয়েছে ।

মূলত, পিছনের স্ল্যাশ মানে সিমিলিংক অনুসরণ করা (বা "ডেরিফারেন্স")।

উদাহরণস্বরূপ, নীচের কোডে, এর dirlinkঅর্থ সিমলিংক, তবে এর dirlink/অর্থ সিরামিকটি নির্দেশ করে directory rmআপনি না বললে ডিরেক্টরি সরিয়ে ফেলবেন না rm -r, তবে rmবিকল্পগুলি ছাড়াই আনন্দের সাথে একটি সিমিলিংক মুছে ফেলা হবে।

$ mkdir dir
$ ln -s dir dirlink
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir
lrwxrwxrwx 1 mikel mikel    3 2011-02-02 22:26 dirlink -> dir
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir
lrwxrwxrwx 1 mikel mikel    3 2011-02-02 22:26 dirlink -> dir
$ rm dirlink/
rm: cannot remove `dirlink/': Is a directory
$ rm dirlink
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir

ডিরেক্টরিটি সত্যিকার ডিরেক্টরি বা ডিরেক্টরিতে কেবল একটি সিমলিংক কিনা তা নিয়ে মাথা ঘামাই না করে ডিরেক্টরিটির অনুমতি দেখার জন্য এটি দরকারী।

$ ls -ld dirlink
lrwxrwxrwx 1 mikel mikel 3 2011-02-02 22:46 dirlink -> dir
$ ls -ld dirlink/
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dirlink/

এবং এটি এখনও নিয়মিত ডিরেক্টরিগুলির জন্য কাজ করে:

$ ls -ld dir
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dir
$ ls -ld dir/
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dir/

আর একটি উদাহরণ হ'ল findকমান্ড। আপনি যদি এটি pathঅনুসন্ধান করতে বলেন তবে এটি একটি সিমলিংক, এটি ডিফল্টরূপে সিমলিংকটি অনুসরণ করবে না, যার অর্থ এটি কেবলমাত্র সিমলিংকেই প্রক্রিয়া করে। একটি ট্রেলিং স্ল্যাশ যুক্ত করার ফলে এটি লিঙ্কটি নির্দেশিত ডিরেক্টরি হিসাবে সিমলিংকটিকে বিবেচনা করে।

$ find dir
dir
dir/file
$ find dirlink
dirlink
$ find dirlink/
dirlink/
dirlink/file

(সন্ধানের কয়েকটি সংস্করণে একটি -followবা -Lবিকল্প রয়েছে, তবে এটি কেবল প্রথমটি নয়, সমস্ত প্রতীককে অনুসরণ করে)


ক্ষেত্রে rsync, আপনার স্ল্যাশ সংযোজন করা উচিত কিনা আপনি অনুলিখিত ডিরেক্টরিটি সাব-ডিরেক্টরী হতে চান কিনা তার উপর নির্ভর করে।

$ mkdir dir
$ touch dir/file
$ rsync -r dir dir.bak
$ find .
.
./dir
./dir/file
./dir.bak
./dir.bak/dir
./dir.bak/dir/file
$ rm -r dir.bak
$ rsync -r dir/ dir.bak
$ find .
.
./dir
./dir/file
./dir.bak
./dir.bak/file

অন্য কথায়:

  • rsync dir dir.bakঅনুলিপি dirকরা dir.bak, dirভিতরে তৈরিdir.bak
  • rsync dir/ dir.bakভিতরে dirনা তৈরি করে সমস্ত বিষয়বস্তু অনুলিপি করেdirdir.bak

2

হিসাবে jsalonen ইতিমধ্যে বলেন এসব কমান্ড প্রকৃতপক্ষে অভিন্ন ফলাফল যদি আছে fooএবং barসত্য, ডিরেক্টরি একটি বিষয় হিসাবে করে।

যাইহোক, fooএবং যদি barডিরেক্টরি না হয় তবে ক্রেডিটটি ব্যর্থ হবে যদি আপনি একটি পিছনে স্ল্যাশ যুক্ত করেন এবং আপনি সফল না হন তবে সফল হবে। কথাটি হ'ল, যদি কমান্ডটি সফল হয় তবে এটি সম্ভবত আপনার ইচ্ছা মতো ফলাফল পাবে না। আসলে, আপনি এমনকি ফাইলগুলি হারাতে পারেন fooএবং barফাইলগুলি ( barওভাররাইট করা হবে)।

যদি আপনার উদ্দেশ্য ফাইলগুলি নয় ডিরেক্টরিগুলি নির্দিষ্ট করে তোলা হয় তবে আপনার অবশ্যই একটি অনুসরণীয় স্ল্যাশ ব্যবহার করা উচিত , কারণ এটি কমান্ডটি আরও দৃust় করে তোলে: যদি ডিরেক্টরিগুলি fooবা barডিরেক্টরিগুলি প্রত্যাশা ব্যর্থ হয়, তবে কমান্ডটি অপ্রত্যাশিত ফলাফলের পরিবর্তে কৌতুকপূর্ণভাবে ব্যর্থ হবে।

এছাড়াও, কিছু (বিরল) কমান্ডগুলি ডিরেক্টরিগুলি সহ (এমনকি একটি উদাহরণ হ'ল rsync) একটি পিছনে স্ল্যাশের উপস্থিতির উপর নির্ভর করে আলাদা আচরণ করে ।


হ্যাঁ, আমি যেমন নির্দেশ করেছি তেমনি কমান্ডগুলি ভাল ট্রেলিং স্ল্যাশগুলি পরিচালনা করতে পারে বা নাও করতে পারে। এটি খুব ভাল যে আপনি উদাহরণ হিসাবে আরএসএনসি সরবরাহ করেছেন!
jsalonen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.