কমান্ড বিকল্পের নজির?


21

আমি জানি যে আমাকে প্ররোচিত না করে rm -f file1জোর করে সরিয়ে ফেলবে file1

আমি আরও জানি এটি rm -i file1অপসারণের আগে আমাকে প্রথমে অনুরোধ করবেfile1

এখন আপনি যদি মৃত্যুদন্ড কার্যকর করেন তবে এটি আমাকে অনুরোধ না করেও rm -if file1বলপূর্বক অপসারণ করবে file1

তবে আপনি যদি নির্বাহ করেন তবে rm -fi file1এটি সরিয়ে দেওয়ার আগে আমাকে অনুরোধ করবে file1

সুতরাং এটি কি সত্য যে কমান্ড বিকল্পগুলি সংযুক্ত করার সময়, শেষটি অগ্রাধিকার গ্রহণ করবে? পছন্দ করুন rm -if, তবে -fঅগ্রাধিকার নেবে তবে rm এর -fiপরে -iঅগ্রাধিকার নেবে।

lsউদাহরণস্বরূপ কমান্ড এটা কোন ব্যাপার না, আপনি যদি বলেন ls -latRবা ls -Rtal

সুতরাং আমি অনুমান করি এটি কেবল তখনই গুরুত্বপূর্ণ যখন আপনার মতবিরোধী কমান্ড বিকল্প রয়েছে rm -if, এটি কি সঠিক?


উত্তর:


23

rmউভয় -iএবং -f বিকল্পের সাথে ব্যবহার করার সময় , প্রথমটিকে অগ্রাহ্য করা হবে। এটি পসিক্স স্ট্যান্ডার্ডে নথিভুক্ত করা হয়েছে :

    -f
       Do not prompt for confirmation. Do not write diagnostic messages or modify
       the exit status in the case of nonexistent operands. Any previous
       occurrences of the -i option shall be ignored.
    -i
       Prompt for confirmation as described previously. Any previous occurrences
       of the -f option shall be ignored.

এবং জিএনইউ infoপৃষ্ঠায়:

‘-f’
‘--force’

    Ignore nonexistent files and missing operands, and never prompt the user.
    Ignore any previous --interactive (-i) option.

‘-i’
    Prompt whether to remove each file. If the response is not affirmative, the
    file is skipped. Ignore any previous --force (-f) option.

হুডের নীচে কী ঘটে তা দেখা যাক:

rmgetopt(3)বিশেষভাবে তার বিকল্পটি প্রক্রিয়া করে getopt_long। এই ফাংশনটি কমান্ড লাইনে বিকল্প আর্গুমেন্টগুলি প্রক্রিয়া করবে ( **argv) উপস্থিতি অনুসারে:

যদি getopt () বারবার বলা হয়, এটি প্রতিটি বিকল্প উপাদান থেকে প্রতিটি বিকল্প অক্ষরের ধারাবাহিকভাবে ফিরে আসে।

সমস্ত অপশন প্রক্রিয়া না করা অবধি এই ফাংশনটি সাধারণত একটি লুপে ডাকা হয়। এই ফাংশন দৃষ্টিকোণ থেকে, বিকল্পগুলি ক্রমে প্রক্রিয়া করা হয়। আসলে যা ঘটে তা অ্যাপ্লিকেশন নির্ভর, কারণ অ্যাপ্লিকেশন যুক্তি বিরোধী বিকল্পগুলি সনাক্ত করতে, সেগুলি ওভাররাইড করতে বা একটি ত্রুটি উপস্থাপন করতে পারে। ক্ষেত্রে জন্য rmএবং iএবং fবিকল্প, তারা পুরোপুরি ঊর্ধ্বলিপি eachother। থেকে rm.c:

234         case 'f':
235           x.interactive = RMI_NEVER;
236           x.ignore_missing_files = true;
237           prompt_once = false;
238           break;
239 
240         case 'i':
241           x.interactive = RMI_ALWAYS;
242           x.ignore_missing_files = false;
243           prompt_once = false;
244           break;

উভয় বিকল্প একই ভেরিয়েবল সেট করে, এবং এই ভেরিয়েবলগুলির অবস্থা কমান্ড লাইনে সর্বশেষ যে কোনও বিকল্প থাকবে। এর প্রভাবটি পসিক্স মান এবং rmডকুমেন্টেশনের সাথে ইনলাইন ।


3
বেশিরভাগ কমান্ডগুলি তাদের আরগগুলি যথাযথভাবে প্রক্রিয়া করে এবং দ্বন্দ্বগুলিতে ত্রুটি হয় বা শেষ সেটিংস নেয় (যেমন rm)। আমি মনে করি কোনও কমান্ডের পক্ষে কোনও বিকল্পের প্রথম সেটিংটি গ্রহণ করা বিরল এবং আরগগুলি উপেক্ষা করুন যা ইতিমধ্যে সেট-এর বিকল্পটিকে পরিবর্তন করবে।
পিটার কর্ডেস

7

হ্যাঁ, rmএটির জন্য বৈধ। যদি সর্বশেষ বিকল্পটি পূর্ববর্তীগুলিকে ওভাররাইড করে তবে স্বতন্ত্র প্রোগ্রামের উপর নির্ভর করে। Finfo rm´ থেকে ´

'-f' '- ফোর্স' অস্তিত্বহীন ফাইল এবং অনুপস্থিত অপারেশনগুলিকে উপেক্ষা করুন এবং ব্যবহারকারীকে কখনও প্রম্পট করবেন না। পূর্ববর্তী কোনও '- ইন্টারেক্টিভ' ('-i') বিকল্প উপেক্ষা করুন ore

'-i' প্রতিটি ফাইল মুছে ফেলার জন্য অনুরোধ করুন। প্রতিক্রিয়াটি যদি স্বীকৃতি না দেয় তবে ফাইলটি এড়িয়ে যায়। পূর্ববর্তী যেকোন '--ফোর্স' ('-f') বিকল্পটি উপেক্ষা করুন। '--Interactive = সর্বদা' এর সমান।

একটি সাধারণ ইঙ্গিত হিসাবে: infoসাধারণত তুলনায় আরও বিস্তারিত man, যা নিজেই সাধারণত --helpবিকল্পটির চেয়ে বেশি বিশদ থাকে ।


7

পতাকাগুলির জন্য কোনও "নজির" নেই, প্রতিটি প্রোগ্রাম তাদের ইচ্ছামতো পরিচালনা করে। বেশিরভাগ সমস্ত পতাকা সংগ্রহ করার জন্য এবং কোন্দলগুলি পরীক্ষা করার জন্য কিছু প্রচেষ্টা করেন, স্ট্যান্ডার্ড সরঞ্জামগুলির জন্য (যেমন উল্লেখ করা হয় rm(1)) প্রাসঙ্গিক মানদণ্ডগুলি কোনও কিছুকে বাধ্যতামূলক করতে পারে (তবে তারপরেও, আপনার নির্দিষ্ট সংস্করণটি স্ট্যান্ডার্ডের কোণার কেস ব্যাখ্যায় ম্লান হতে পারে / বিশেষভাবে পরীক্ষা না করা হতে পারে) তাদের জন্য).

প্রোগ্রামার লেখার জন্য প্রোগ্রামার পক্ষে আর্গুমেন্টগুলি (পতাকা এবং অন্যগুলি) বাম থেকে ডানদিকে কঠোরভাবে বিবেচনা করা সবচেয়ে সহজ এবং কিছুটা ছিনতাইয়ের সময় সম্ভবত জামিন দেওয়া হয়। পতাকাগুলি হ্যান্ডেল করার জন্য যদি কোনও লাইব্রেরি ব্যবহার করা হয় (যেমন getopt(3), প্রায় বেশ কয়েকটি সংস্করণ ভাসমান রয়েছে) প্রোগ্রামার সম্ভবত সম্ভবত যা সবচেয়ে সহজ / প্রাকৃতিক আসে তা করে। প্রোগ্রামাররা মানুষ, মানুষ অলস হয় (বা কমপক্ষে কম্বিনেটরিয়াল বিস্ফোরণের মাধ্যমে চিন্তাভাবনা করে না)।

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