আর-আর এর মধ্যে পার্থক্য


32

এটি প্রায়শই ঘটে যে আমি পুনরাবৃত্তভাবে একটি অপারেশন প্রয়োগ করতে চাই। কিছু কমান্ড, যেমন গ্রেপ, পুনরাবৃত্তি নির্দেশ করতে একটি ছোট হাতের ব্যবহার করে। উদাহরণ স্বরূপ

grep -r foo .

অন্যান্য কমান্ডগুলি বড় হাতের আর পছন্দ করে বলে মনে হচ্ছে:

chmod -R 755 .

আমি ক্রমাগত এইগুলি ভুল পথে পেয়ে যাচ্ছি এবং কোনটি ভুলে যাচ্ছি। এই যুক্তিগুলির জন্য মামলা নির্বাচন করার পিছনে কোনও যুক্তি আছে কি?


1
"কারণ কোডাররা এটি বোধগম্য বলে মনে করেছিল।" (এটি একটি ভাল কারণ না বলা, তবে এটি সম্ভবত সত্য)
HalosGhost

1
এটির জন্য মূল্যবান, যদিও অনেকগুলি কমান্ড বুঝতে পারে না, যদিও --recursiveতারা ভুল কাজটি করার সম্ভাবনা নেই।
ট্যানার সোয়েট

উত্তর:


37

সর্বাধিক POSIX কমান্ড আছে রিকার্সিভ ডিরেক্টরির ট্র্যাভেরসাল বিকল্প ( ls, chmod, chgrp, chmod, cp, rm) থাকতে -Rযে জন্য।

rmএছাড়াও আছে -rকারণ কি এটি প্রাথমিকভাবে ছিল যে, দীর্ঘ POSIX আগে।

গাছের নিচে চলাচল করার সময় সিমলিংকগুলি পাওয়া গেলে এখন আচরণটি পরিবর্তিত হয়। POSIX -L/ -H/ Pঅপশনগুলি যুক্ত করে ব্যবহারকারীদের যখন সিডলিংকগুলি ডিফল্ট রেখে কোনটি অপ্রকাশিত না দেওয়া হয় তখন কী করবেন তা সিদ্ধান্ত নেওয়ার সুযোগ দেওয়ার জন্য বিষয়গুলিকে সামঞ্জস্য করার চেষ্টা করেছিলেন ।

পসিক্সের grepনেই -rবা আছে -R

জিএনইউর grepপ্রাথমিকভাবে ছিল না। -r1998 সালে যুক্ত করা হয়েছিল That

-Rঅন্যান্য ইউটিলিটিগুলির সাথে সামঞ্জস্য করার জন্য 2001 সালে প্রতিশব্দ হিসাবে যুক্ত হয়েছিল। এটি এখনও প্রতীকগুলি অনুসরণ করছিল।

২০১২ সালে (গ্রেপ ২.১২), -rপরিবর্তন করা হয়েছিল যাতে এটি আর প্রতীক অনুসরণ করে না, সম্ভবত কারণ -L, -Hইতিমধ্যে অন্য কোনও কিছুর জন্য ব্যবহৃত হয়েছিল।

বিএসডিগুলি grepদীর্ঘ সময়ের জন্য জিএনইউ গ্রেপের উপর ভিত্তি করে ছিল। তাদের মধ্যে কিছু নিজস্ব লিখিত এবং কমপক্ষে জিএনইউয়ের সাথে সামঞ্জস্য রেখেছেন grep। অ্যাপল ওএস / এক্স সিমলিংক ইস্যুকে আলাদাভাবে সম্বোধন করেছে। -rএবং -Rএকই রকম এবং প্রতিলিঙ্কগুলি অনুসরণ করবেন না। সিমলিংকগুলি অনুসরণ করার জন্য / / 'র বিকল্প হিসাবে -Sকাজ করে এমন একটি বিকল্প রয়েছে ।chmodcpfind-L


13
টিএল; ডিআর : ইতিহাস।
সম্মিত

10
প্রাথমিক ইতিহাস: rmঅন্যদের সামনে পুনরাবৃত্তির বিকল্প ছিল। এটা ছিল -r। তারপরে cpএকটি মিলছে -r। তারপরে lsএকটি পুনরাবৃত্তির বিকল্পটি চেয়েছিল, তবে ls -rইতিমধ্যে এটি "বিপরীত সাজান" এর অর্থ তাই এটি হওয়া উচিত -R। সেখানে মধ্যে উত্তেজনা -Rএবং -rশুরু হয়। -Rএকমাত্র এটি ছিল যা প্রতিটি প্রাসঙ্গিক ইউটিলিটিতে ধারাবাহিকভাবে যুক্ত হতে পারে তবে rm -rএটি ইতিমধ্যে সুপরিচিত traditionalতিহ্যবাহী ব্যবহার ছিল। তারপরে জিএনইউ এসে বলল "ধারাবাহিকতা এবং traditionতিহ্য স্কোয়ারের জন্য, মানুষ!"

8

কেউ কিছু. এটি কেবল বিকাশকারীরা কী বেছে নিয়েছিল তার উপর নির্ভর করে। এটা প্রায়ই কারণ উভয় -rএবং -Rবৈধ অপশন আছে। আপনি যে প্রোগ্রামগুলি উদ্ধৃত করেছেন, উদাহরণস্বরূপ:

  • GNU এর সাম্প্রতিক সংস্করণ grep:

    -r, --recursive
          Read all files  under  each  directory,  recursively,  following
          symbolic  links  only  if they are on the command line.  This is
          equivalent to the -d recurse option.
    
    -R, --dereference-recursive
          Read all files under each directory,  recursively.   Follow  all
          symbolic links, unlike -r.
    
  • chmodকোনও -rবিকল্প নেই তাই সম্ভবত, ডেভস পছন্দ করে -R। তবে, অবশ্যই, -rএকটি বৈধ অনুমতি স্ট্রিং (হিসাবে নির্দিষ্ট @Arkadiusz Drabczykso দ্বারা) তাই এটা সত্যিই সেখানে ব্যবহার করা যাবে না।


আপনার grepসংস্করণ কি? জিএনইউ গ্রেপ 2.12, -rএবং -Rএকই রকম are Chmod সহ, -RPOSIX দ্বারা সংজ্ঞায়িত করা হয়।
cuonglm

@ জ্ঞাক grep (GNU grep) 2.15এবং আমার মনে আছে এটি পূর্ববর্তী সংস্করণগুলিতে দেখেছি। আপনি কি নিশ্চিত যে এটি আপনার ক্ষেত্রে নেই? তারা বেশিরভাগ ক্ষেত্রে মূলত একই ফলাফল সরবরাহ করে, তারা কেবল লিঙ্কগুলির সাথে আলাদা আচরণ করে। হিসাবে chmod, এটি পসিক্স দ্বারা ভাল সংজ্ঞায়িত করা যেতে পারে তবে এটি এখনও সম্ভবত, সম্ভবত আসল chmodদেবগুলি বেছে Rনিয়েছে r
টেরডন

2
@ জ্ঞাক ডি'হোহ! স্পষ্টতই, তারা এটি ব্যবহার করতে পারে না -rকারণ এটি ইতিমধ্যে একটি বৈধ অনুমতিগুলির স্ট্রিং।
টেরডন

3

বেশিরভাগ ক্ষেত্রে, এটি বিকাশকারীর ব্যক্তিগত পছন্দকে নেমে আসে। কখনও কখনও, তবে, একটি ছোট ছোট বিকল্প নির্বাচন করা হয় যদি বিকাশকারীরা বিশ্বাস করেন যে অন্য কিছুর জন্য পছন্দসই ছোট ছোট বিকল্প ব্যবহার করা হয়, উদাহরণস্বরূপ, পুনরাবৃত্তির সাথে অপারেশন করা। Chmod -rক্ষেত্রে একটি বৈধ মোড। উদাহরণ স্বরূপ:

$ ll FILE
-rw-r--r-- 1 ja ja 0 Sep  9 16:42 FILE
$ chmod -r FILE
$ ll FILE
--w------- 1 ja ja 0 Sep  9 16:42 FILE

1

আমি ক্রমাগত এইগুলি ভুল পথে পেয়ে যাচ্ছি এবং কোনটি ভুলে যাচ্ছি।

যেখানে সম্ভব, এই ইউটিলিটিগুলির GNU সংস্করণ ব্যবহার করুন এবং তারপরে আপনি বিকল্পগুলির জন্য দীর্ঘ নামগুলি ব্যবহার করতে পারেন।

command --recursive

এই যুক্তিগুলির জন্য মামলা নির্বাচন করার পিছনে কোনও যুক্তি আছে কি?

না।

বা খুব বেশি না। ইউনিক্স ইউটিলিটিগুলি টুকরোয়াল তৈরি করা হয়েছিল এবং কমান্ড বিকল্পগুলি তাদের সীসা বা একমাত্র বিকাশকারীদের পৃথক পছন্দকে প্রতিফলিত করে। এখানে কেবল ২ AS টি এএসসিআইআই লোয়ার-কেস বিকল্প অক্ষর উপলব্ধ রয়েছে, যা পছন্দসই সেট (টাইপিংয়ের স্বাচ্ছন্দ্যের জন্য কমান্ডগুলি সাধারণত নিম্ন ক্ষেত্রে থাকে), এবং এই সীমিত সেটটি স্মৃতিবিবাদকে বাধায়। দ্বন্দ্বগুলি নতুন আদেশগুলি / ইউটিলিটিগুলির নতুন বৈশিষ্ট্য অর্জন করায় বিবাদগুলি অসঙ্গতি সৃষ্টি করে ।


-1

20 বছর আগে যখন আমি ইউনিক্স শিখলাম, আমার পরামর্শদাতা আমাকে এইভাবে বলেছিলেন: "আপনি সর্বদা বড় হাতের আরতে পুনরাবৃত্ত বিকল্পটি টাইপ করা ভাল better কারণ কিছু কমান্ডের ছোট হাতের r বিকল্পের আলাদা অর্থ রয়েছে, তবে বড় হাতের অক্ষর বেশিরভাগ ক্ষেত্রে পুনরাবৃত্তির বিকল্প হিসাবে কাজ করে আর যে কোনও জায়গায়। আর টাইপ করার সময় শিফট-কি টিপে বিরক্ত করে আপনাকে [আরএম * -আরএফ] থেকে সাবধান থাকার একটি ভাল অভ্যাস দেবে ""


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