কেন অনেক কমান্ড একটি "শান্ত" বিকল্প সরবরাহ করে?


37

যখন আপনি সহজে নাল ফাইলটিতে স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশের মাধ্যমে একই জিনিসটি সহজেই অর্জন করতে পারেন তখন কেন অনেক কমান্ড অপশন সরবরাহ করে -qবা --quietআউটপুট দমন করে?


3
আমি এটিকে বেশিরভাগ সুবিধার পতাকা হিসাবে বিবেচনা করি।
জ্যানিস

7
সমস্ত কমান্ড সমস্ত আউটপুট -qদমন করতে ব্যবহার করে না । উদাহরণস্বরূপ, ডকারের চিত্রগুলি তালিকাভুক্ত করার জন্য একটি কমান্ড রয়েছে; একগুচ্ছ তথ্য সহ একটি ফর্ম্যাট সারণী দেখায়, যখন চিত্র আইডির একটি সাধারণ তালিকা (অন্য কমান্ডগুলিতে পাইপ দেওয়ার জন্য কার্যকর) প্রকাশ করে। docker imagesdocker images -q
new123456

উত্তর:


71
  • আপনি যখন শেলটিতে সহজেই পুনঃনির্দেশ করতে পারবেন, এমন অন্যান্য প্রসঙ্গ রয়েছে যেখানে এটি এতটা সহজ নয় যেমন শেল কমান্ড-লাইনটি ব্যবহার না করে অন্য ভাষায় কমান্ড চালানোর সময়। এমনকি একটি শেল মধ্যে:

    find . -type f -exec grep -q foo {} \; -printf '%s\n'

    ধারণ করে এমন সমস্ত ফাইলের আকার মুদ্রণ করতে foo। আপনি যদি পুনর্নির্দেশ করেন তবে আপনি /dev/nullউভয় findএবং grepআউটপুট হারাবেন । আপনাকে অবলম্বন করতে হবে -exec sh -c 'exec grep foo "$1" > /dev/null' sh {} \;(এটি একটি অতিরিক্ত শেল স্প্যান করে)।

  • grep -q foo টাইপ করার চেয়ে কম grep foo > /dev/null
  • পুনঃনির্দেশের /dev/nullঅর্থ আউটপুটটি এখনও লেখা এবং তারপরে ফেলে দেওয়া হয়, এটি না লেখার চেয়ে কম দক্ষ (এবং বরাদ্দ নয়, আউটপুটটি লেখার জন্য প্রস্তুত করুন)
  • এটি আরও অনুকূলিতকরণের অনুমতি দেয়। ক্ষেত্রে grepউদাহরণস্বরূপ, সঙ্গে যেহেতু -q, grepজানে আউটপুট প্রয়োজন হয় না, এটা যত তাড়াতাড়ি এটা প্রথম ম্যাচ খুঁজে বের করে প্রস্থান করে। সাথে grep > /dev/null, এটি এখনও সব মিল খুঁজে পাওয়ার চেষ্টা করবে।
  • শান্ত অগত্যা মানে এই নয় নীরব । কিছু আদেশের জন্য, এর অর্থ ভার্বোসিটি হ্রাস করা (এর বিপরীতে -v|--verbose)। উদাহরণস্বরূপ, mplayerএকটি --quietএবং একটি আছে --really-quiet। কিছু কমান্ডের সাহায্যে আপনি -qqqভার্বোসিটি 3 বার হ্রাস করতে ব্যবহার করতে পারেন ।

এটি লক্ষণীয় যে grepম্যান-পৃষ্ঠায় উভয় বিকল্প -q, এবং -s, বহনযোগ্যতা যদি উদ্বেগের বিষয় থাকে তবে এড়ানো উচিত to grepএর প্রারম্ভিক প্রস্থান একটি গুরুত্বপূর্ণ অপ্টিমাইজেশন, তবে এই জাতীয় বিকল্পগুলির সাথে সমস্ত প্রোগ্রাম এটি করতে পারে না; curl -sএখনও পুরো ডেটা প্রক্রিয়া করবে (তবে তৃতীয় পয়েন্টটি এখনও প্রযোজ্য, সুতরাং প্রক্রিয়াজাতকরণের সময় সাশ্রয় করবে)।
জ্যানিস

6
@ জানিস, এটি খুব পুরানো সিস্টেমের বহনযোগ্যতা হবে। উভয়ই -qএবং -sপসিক্স দ্বারা নির্দিষ্ট করা হয়। যদি আমরা সেই পুরানো সিস্টেমগুলি বিবেচনা করি তবে আমার sh -c '...' sh {} \;কোনও কাজ হবে না (পূর্ববর্তী kshভিত্তিক shগুলি)।
স্টাফেন চেজেলাস

ম্যান পৃষ্ঠায় উল্লেখ করা হয়েছে: ইউএসজি-স্টাইলের গ্রেপেরও -কির অভাব ছিল তবে এর -s বিকল্পটি জিএনইউ গ্রেপের মতো আচরণ করেছে। - আমি ভেবেছিলাম আচরণের পার্থক্য একটি সমস্যা হতে পারে। আমি এর প্রাসঙ্গিকতা সম্পর্কে বিচার করতে পারি না।
জ্যানিস

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

@ স্টাফেনচাজেলাস: আপনি অবাক হবেন যে কতগুলি সিস্টেম এখনও (সেই অংশগুলির) এখনও পুরান ... (ভাল, আসলে, এতটা নয় ^^ তবে এখনও কিছু আছে)
অলিভিয়ার ডুলাক

3

এটি তখনও কমান্ডটি কার্যকর করার অনুমতি দেয় যখন এটি মনে হয় যখন এটি স্ক্রিনে কোনও নোটের প্রয়োজন তবে সাধারণত এটি কোনও কিছুই রাখে না। সমস্ত পুনঃনির্দেশের সাথে আউটপুট দেখার কোনও সুযোগ নেই।


ঠিক আছে, শান্ত মানে কোনও প্রতিক্রিয়া প্রত্যাশিত নয়; আমরা যদি যাইহোক আউটপুট দেখতে চাই তবে এটি অপ্রত্যাশিত হবে। (যেভাবে প্রিন্ট করার জন্য "সত্যই সত্যই" গুরুত্বপূর্ণ কিছু রয়েছে (টার্মিনাল সংযুক্ত প্রক্রিয়াতে) একটি টিটিআই / পিটিআই ডিভাইস সরাসরি প্রক্রিয়াটি ব্যবহার করতে পারে An এর উদাহরণ উদাহরণস্বরূপ কোনও পাসওয়ার্ডের ইন্টারেক্টিভ তদন্ত বা কিছুটা হতে পারে। )
জ্যানিস

2

যদিও এটি সম্ভবত কমান্ডের উপর নির্ভর করে, -qআউটপুটটিকে অক্ষম করে stderr। এটি শেলগুলি অনুমতি দেয় না যা সহজেই ডুপিং স্টাডারকে স্টডআউট করার অনুমতি দেয় না (আমি আপনাকে দেখছি, cshএবং tcsh) শব্দটি এড়ানোর জন্য।

কিছু প্রোগ্রাম পরিস্থিতিগুলির জন্য একটি "শান্ত" বিকল্প সরবরাহ করে যেখানে এটিতে অন্য অর্থবহ আউটপুট থাকতে পারে যা আপনি স্থিতি বার্তার সাথে বিশৃঙ্খলা করতে চান না। -qবা সমমানের সব প্রোগ্রাম অবস্থা আউটপুট নীরবতা হবে, থেকে, বলে একটি বিশুদ্ধ তথ্য প্রবাহ, যার ফলে tarবা gzip


0

উপরের সমস্ত ভাল প্রতিক্রিয়া এবং পয়েন্টগুলি ছাড়াও। প্রতিটি পতাকার বিপরীত বিকল্প সরবরাহ করা সেরা অনুশীলন। সুতরাং, ভার্বোসিটির জন্য যদি একটি -v থাকে তবে অ-ভার্বোসিটি, বেশ বা নীরবতার জন্য -Q থাকা উচিত। (এটি আলোচনার বিষয় নয় তবে ...) প্রতিটি সংক্ষিপ্ত, -কিউ এবং - স্পটের জন্য একটি দীর্ঘ বিকল্প হওয়া উচিত।

আমাদের ব্যবসায়ের প্রায় প্রতিটি কিছুর মতোই সমাধান বা একই ফলাফল পাওয়ার অনেকগুলি উপায় রয়েছে। -কিউ হচ্ছে তাদের মধ্যে একটি।

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