কমান্ড প্রম্পট পরামিতিগুলির জন্য ওয়ান-ড্যাশ এবং টু-ড্যাশের মধ্যে পার্থক্য কী?


65

আমি ভাবছিলাম যে কেন কিছু প্রোগ্রামের জন্য তাদের কমান্ড প্রম্পট পরামিতিগুলির সামনে দুটি ড্যাশ থাকে যখন কিছু (বেশিরভাগ) সামনে কেবল একটি ড্যাশ প্রয়োজন ?

উদাহরণস্বরূপ, বেশিরভাগ প্রোগ্রামগুলি এ জাতীয় দেখাচ্ছে: relaxer -dtd toc.xml toc_gr.xml toc_jp.xml

কিছু প্রোগ্রাম যেমন দেখায়: xmllint --valid toc.xml --noout

কারও কারও কারও কারও বদলে দুটো ড্যাশ দরকার? প্রত্যেকেরই কী এক মানদণ্ডে স্থির থাকা মানে (একক এক ড্যাশ তা করবে)?


10
> প্রত্যেকেরই কী এক মানদণ্ডে স্থির থাকা কোনও মানে হয় না - হ্যাঁ। সমস্ত প্রোগ্রামাররা কি স্ট্যান্ডার্ডের সাথে লেগে থাকে এবং ধারাবাহিকতা বজায় রাখে? না। অনেক প্রোগ্রামার এমনকি তাদের প্রোগ্রামের মধ্যেও ধারাবাহিকতা বজায় রাখতে পারে না: বলা হচ্ছে, sensক্যমত্যটি কেবলমাত্র একটি অক্ষরের বিকল্পগুলির জন্য একটি ড্যাশ এবং সমস্ত শব্দগুলির জন্য দুটি ড্যাশ ব্যবহার করা হবে, যেমন -iবনাম --inputবা -n --dry-run
স্ল্যাক করুন

1
@ এসএলএইচএইচ হেইস সাহায্যের জন্য ধন্যবাদ =) সেই সম্মেলনের মাধ্যমে, এর অর্থ -dtdকি আসলেই হওয়া উচিত ছিল --dtd? কার্যকরভাবে আমি যা নিয়ে ভাবছিলাম তা হ'ল ড্যাশ (এবং ডাবল-ড্যাশ) কী বোঝানোর চেষ্টা করছে ?
পেসারিয়ার

6
বোনাস পয়েন্টগুলির জন্য: Gnu মানগুলির সাথে --long-optionsমেনে চলার প্রোগ্রামগুলি যে কোনও অনন্য সংক্ষেপণও গ্রহণ করবে। সুতরাং, বিকল্পগুলি সহ একটি প্রোগ্রামের জন্য --file-inএবং --file-out, আপনি ব্যবহার করতে পারেন --file-o=fooবা --file-i=foo, যা কিছু টাইপিং সংরক্ষণ করতে পারে --very-long-optional-parameters
বিআরপোক্ক

গনুহ যেমন X উইন্ডো সিস্টেম, সেইসাথে করে ImageMagick সাথে বান্ডেল মতো "লম্বা" বিকল্প, যা আমি পছন্দ ঘটতে, কিন্তু অনেক পুরোনো ইউটিলিটিগুলি, জন্য দুটি ড্যাশ ব্যবহার তাদের কনভেনশন সহ এসে ( উদাঃ , convert, mogrify"লম্বা") আছে শুধুমাত্র একক ড্যাশ ব্যবহার করে বিকল্পগুলি options উদাহরণস্বরূপ: xterm -fn 6x10 -geometry 80x24+30+200। সংক্ষিপ্তসারগুলি সমর্থিত, যদি তারা আলাদা হয় ( যেমন , -gবা -geomজন্য -geometry) for অন্যান্য উদাহরণের জন্য এক্স (7) দেখুন ।
দ্য ডিউড অ্যাবাইডস

উত্তর:


18

কেবলমাত্র করুন ls --help এবং বিকল্পগুলি দেখুন; এটি আপনার কাছে সুস্পষ্ট হওয়া উচিত।

প্যারামিটারগুলির সাথে এটির কিছুই করার নেই। অনেক বিকল্পের একটি সংক্ষিপ্ত ফর্ম এবং একটি দীর্ঘ ফর্ম আছে, এবং অনেকের একটি থাকে এবং অন্যটি না।

এবং এছাড়াও, পরামিতিগুলি সম্পর্কে, এটি কেবল দীর্ঘ আকারে যখন তারা কোনও পরামিতি নেয় তখন মনে হয় এটি সর্বদা সমান with তবে স্পষ্টতই সংক্ষিপ্তগুলি প্যারামিটারগুলি ঠিক তত বেশি নিতে পারে; কেবল তারা সমান ব্যবহার করে না।

এখানে থেকে একটি নির্যাস ls --help( man lsসমমানের তথ্য দেয়)। লক্ষ করুন যে কারও কাছে কীভাবে একটি সংক্ষিপ্ত ফর্ম ( --author, --block-size) ছাড়াই দীর্ঘ ফর্ম রয়েছে -c, কারও কারও দীর্ঘ ফর্ম ( -f,, -g) ছাড়াই একটি সংক্ষিপ্ত ফর্ম রয়েছে এবং কারও কারও দীর্ঘ ফর্ম এবং একটি সংক্ষিপ্ত রূপ ( -A/ --almost-all, -b/ --escape) উভয় রয়েছে ।

 -a, --all                  do not ignore entries starting with .
 -A, --almost-all           do not list implied . and ..
     --author               with -l, print the author of each file
 -b, --escape               print octal escapes for nongraphic characters
     --block-size=SIZE      use SIZE-byte blocks
 -B, --ignore-backups       do not list implied entries ending with ~
 -c                         with -lt: sort by, and show, ctime (time of last
                              modification of file status information)
                              with -l: show ctime and sort by name
                              otherwise: sort by ctime
 -C                         list entries by columns
     --color[=WHEN]         control whether color is used to distinguish file
                              types.  WHEN may be `never', `always', or `auto'

4
আমরা ls --helpউইন্ডোতে কীভাবে করব ?
পেসারিয়ার

1
@ পেসারিয়র lsউইন্ডোজে নেই। সমান কমান্ড হবে dir /?। আপনি ক্রস প্ল্যাটফর্ম সফ্টওয়্যার ব্যবহার করছেন যা সাধারণ উইন্ডোজ কনভেনশন লঙ্ঘন করে, আমার উত্তর দেখুন see
ড্যানিয়েল বেক

@ পেসারিয়ার এটি অন্তর্নির্মিত নয়, তবে এটি তৃতীয় পক্ষ, গনুইউন 32 ডাউনলোড করুন আপনি এটি ডাউনলোড করুন (গুগল gnuwin32)। gnuwin32 এর মধ্যে প্রতিটি কমান্ড সহ একাধিক প্যাকেজ রয়েছে, কোর্টিলস প্যাকেজটি ডাউনলোড করুন, এতে প্রচলিত কমান্ড রয়েছে।
বারলপ

আপনার সংক্ষিপ্ত অপশন ছাড়া দীর্ঘ অপশন আছে ls --helpউদ্ধৃতাংশ। দেখুন --authorএবং --block-size
ড্যান

@ পেসারিয়ার মূল মন্তব্যে প্রশ্নের উত্তর দেওয়ার জন্য: আধুনিক উইন্ডোজ সিস্টেমগুলি lsকমান্ডটি পাওয়ার সবচেয়ে সাধারণ উপায় হ'ল জিআইটি । PATH- এ জিআইটি বিন সহ জিআইটি বাশ শেল বা সিএমডি উইন্ডো থাকবে ls
yzorg

34

এখানে কোনও বিস্তৃত মান নেই। কিছুটা ধারাবাহিকতা আছে যেমন জিএনইউ প্রোগ্রামগুলিতে, তবে আপনাকে প্রতিটি প্রোগ্রামের ডকুমেন্টেশন পরীক্ষা করতে হবে।

উইকিপিডিয়া উদ্ধৃত , জোর আমার:

ইউনিক্সের মতো সিস্টেমে ASCII হাইফেন – বিয়োগটি সাধারণত বিকল্পগুলি নির্দিষ্ট করতে ব্যবহৃত হয়। চরিত্রটি সাধারণত এক বা একাধিক অক্ষর দ্বারা অনুসরণ করা হয় । একটি আর্গুমেন্ট যা কোনও অক্ষর ছাড়াই নিজেই একক হাইফেন – বিয়োগ তা সাধারণত নির্দিষ্ট করে যে কোনও প্রোগ্রাম স্ট্যান্ডার্ড ইনপুট থেকে আগত ডেটা পরিচালনা করতে হবে বা মান আউটপুটে ডেটা প্রেরণ করা উচিত। দুটি হাইফেন – বিয়োগের অক্ষর (-) কিছু প্রোগ্রামগুলিতে "দীর্ঘ বিকল্পগুলি" নির্দিষ্ট করতে ব্যবহৃত হয় যেখানে আরও বর্ণনামূলক বিকল্পের নাম ব্যবহৃত হয় । এটি জিএনইউ সফ্টওয়্যারটির একটি সাধারণ বৈশিষ্ট্য।

সাধারণত হাইফেন পূর্বনির্ধারিত যুক্তি নির্দেশ করে। আমি মনে করি এটি উদাহরণস্বরূপ ফাইলের নাম বা অন্যান্য লেবেল থেকে আপনি যুক্তি হিসাবে ব্যবহার করতে পারেন সেগুলি থেকে আলাদা করার জন্য এটি ব্যবহার করা হয়েছে। এটি সর্বদা ক্ষেত্রে হয় না, যদিও (নীচে দেখুন)।


আপনি প্রায়শই সংক্ষিপ্ত এবং দীর্ঘ বিকল্প উভয় হিসাবে একই যুক্তি খুঁজে পাবেন, যেমন ls তে

কিছু প্রোগ্রাম এক-চরিত্রের বিকল্পগুলির জন্য একটি একক হাইফেন এবং বহু-চরিত্রের বিকল্পগুলির জন্য দুটি হাইফেন ব্যবহার করে তবে সমস্ত নয় (জিএনইউ findমনে হয়)। কিছু প্রোগ্রামের optionচ্ছিক হাইফেন থাকে বা এগুলি পুরোপুরি এড়িয়ে যায় ( tarবা বিএসডি মাথায় psআসে)।

কখনও কখনও দীর্ঘ বিকল্পগুলির ( --foo) আর্গুমেন্টের প্রয়োজন হয়, যখন সংক্ষিপ্ত বিকল্পগুলি ( -f) অন্তত কোনও নির্দিষ্ট ডিফল্ট যুক্তি বোঝায় না।

সংক্ষিপ্ত বিকল্পগুলির (উদাহরণস্বরূপ cut -d ' ') আর্গুমেন্ট থাকতে পারে, যখন দীর্ঘ বিকল্পগুলি (যেমন ls --all) অগত্যা তাদের না থাকে have

কোনও প্রোগ্রামের একটি নির্দিষ্ট আচরণ সেট করতে, আপনাকে মাঝে মাঝে একটি সংক্ষিপ্ত বিকল্প ব্যবহার করতে হবে, অন্যদের জন্য আপনাকে দীর্ঘ বিকল্প ব্যবহার করতে হবে এবং কারওর জন্য আপনার পছন্দ রয়েছে।

সম্পর্কিত নোটে, কিছু প্রোগ্রাম কোনও বিকল্প এবং তার তর্কগুলির মধ্যে কোনও শ্বেতস্পেস পরিচালনা করতে পারে , অন্যরা পারে না।

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

আপনি সত্যিই অন্য প্রোগ্রাম থেকে একটি প্রোগ্রামের আর্গুমেন্ট সিনট্যাক্স অনুমান করতে পারবেন না।


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


2
এটি লক্ষ করা উচিত যে জিএনইউ স্ট্যান্ডার্ড লাইব্রেরিগুলি এক-বিয়োগ-এক-চিঠি, দুই-বিয়োগ-বহু-বর্ণের বিকল্পগুলির ম্যাপিংয়ের কার্যকারিতা সরবরাহ করে, সুতরাং সমস্ত নতুন জিএনইউ প্রোগ্রাম এবং বেশিরভাগ নতুন ফ্রি সফ্টওয়্যার সাধারণভাবে এই স্বরলিপি ব্যবহার করে (যেমন - f, -f foo, --file, --file foo, --file = foo, --fil = foo, --fi = foo); যেমন throwbacks tar, ps, findএবং তাদের কম্যান্ড-লাইন সিনট্যাক্স যেমন ছিল POSIX দ্বারা সেট করার আগে এই মান সম্পূর্ণরূপে gelled ছিল। একটি গ্নু / লিনাক্স সিস্টেমে এটি যথাযথভাবে নিরাপদ বাজি যা কমপক্ষে --help(প্রায়) সর্বদা সমর্থিত হবে, man <command>বাinfo <command>
বিআরপোকক

জিএনইউ স্ট্যান্ডার্ড কি বলে যে দীর্ঘ ফর্ম ছাড়া আপনার একটি ছোট ফর্ম হওয়া উচিত নয় এবং একটি সংক্ষিপ্ত ফর্ম ছাড়া দীর্ঘ হওয়া উচিত নয়?
বার্লোপ

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

7

এটি * নিক্স থেকে আসা একটি সম্মেলন। ডাবল হাইফেন পূর্ববর্তী বিকল্পগুলি যখন তারা পূর্ণরূপে লেখা হয় , যখন একক হাইফেন পূর্ববর্তী বিকল্পগুলি যখন তারা সংক্ষিপ্ত আকারে লেখা হয় । উদাহরণস্বরূপ ls --all --l, সংক্ষিপ্ত করা যেতে পারে ls -al। যেমনটি দেখা যায়, সমস্ত বিকল্পের একক অক্ষরের সমতুল্য হয় না, যদিও বেশি ব্যবহৃত ব্যবহৃত হয় সাধারণত।

বিকল্পটি আর্গুমেন্ট গ্রহণ করে কিনা তা সত্যই কোনও পার্থক্য তৈরি করে না - আপনি বিকল্পটি যেভাবে প্রবেশ করেন তা নির্বিশেষে এটি তাদের গ্রহণ করতে পারে বা নিতে পারে না।

এক সময় ব্যবহারের জন্য এগুলি লেখার সময়, এটি সত্যিকার অর্থে কিছু আসে যায় না, তবে উদাহরণস্বরূপ .alias ফাইলগুলিতে কমান্ড লেখার সময় এটি পূর্ণ-ফর্মটি ব্যবহার করার প্রথাগত। নিখুঁতভাবে পরবর্তী ব্যক্তির পড়ার স্বাচ্ছন্দ্যে।


ওহে সাহায্যের জন্য ধন্যবাদ, বিটিডব্লিউ আপনি কি ইউনিক্স * নিক্স টাইপ করার কোনও কারণ আছে?
পেসারিয়ার

2
@ পেসারিয়র - ইউনিক্স একটি ব্যবসায়ের নাম। * নিক্স টাইপ করে আমি আসলে সমস্ত ইউনিক্স এবং অনুরূপ সিস্টেমগুলিকে উল্লেখ করি, যা সমস্ত ব্যবহারিক উদ্দেশ্যে একই হয় for তবে বেশিরভাগ ক্ষেত্রে এটি অভ্যাসের একটি শক্তি ...
রুক

2
@ পেসারিয়ার * নিক্স লিনাক্স বা ইউনিক্সকে বোঝাতে পারে। আমি এই বিষয়ে পুরোপুরি নিশ্চিত নই যে আমি কিছুক্ষণ আগেই এটি দেখেছিলাম, তবে প্রযুক্তিগতভাবে, যদি আমি মনে করি, বিএসডি ইউনিক্স পরিবারের। লিনাক্স প্রযুক্তিগতভাবে নয় .. এবং উভয়ই ফ্রিবিএসডি নয়। তবে * নিক্স বলার মধ্যে ইউনিক্স / বিএসডি এবং এর মতো কিছু অন্তর্ভুক্ত থাকবে যেমন লিনাক্স এবং ফ্রিবিএসডি।
বার্লপ

2
শর্টহ্যান্ড কমান্ড সংমিশ্রণ উল্লেখ করার জন্য +1। এটি দুটি কারণের কেন আসল কারণ ।
রায়ান_১১

3

এগুলি হ'ল প্রচলিত ইউনিক্স সিনট্যাক্স,

কোনও প্রোগ্রাম আর্গুমেন্ট একটি হাইফেন নেয় ("-") তার পরে একটি একক অক্ষর হয় যখন এটি একটি সাধারণ বিকল্প (যেমন: -v ) এবং দুটি হাইফেন ("-") থাকে যখন বিকল্পটি আর্গুমেন্ট নেয় (যেমন: - ফাইল টোক.এক্সএমএল বা --file = toc.xML )

প্রোগ্রামটির কার্যকারিতাতে কোনও প্রভাব ফেলবে না।


3
এছাড়াও, একক ড্যাশ অনুসরণ করে একক বর্ণের বিকল্প সহ অনেক ক্ষেত্রেই আপনি অক্ষরগুলি একসাথে গ্রুপ করতে পারেন। উদাহরণস্বরূপ, "ls -al" "ls -a -l" এর সমান। ডাবল ড্যাশ বিকল্পগুলি এইভাবে একত্রিত করা যায় না। একক-বর্ণের বিকল্পগুলি একটি পুরানো মান, তবে এই দিনগুলিতে অনেকগুলি আদেশ দুটি ধরণেরই গ্রহণ করবে। যেমন "ls - all" "ls -a" এর সমান।
র্যান্ডি অরিসন

3
আসলে, অন্য একটি সংশোধন। একক-ড্যাশ একক-বর্ণের বিকল্পগুলি প্যারামিটার নিতে পারে, তবে এটি সাধারণত সমান চিহ্নের সাথে যুক্ত হয় না। উদাহরণস্বরূপ, "লেজ -লাইন 50" কোনও ফাইলের শেষ 50 টি রেখা দেখায় যা "লেজ --লাইনস = 50" এর সমতুল্য।
র্যান্ডি অরিসন

এই সম্মেলনের মাধ্যমে, এর অর্থ কি এই নয় যে --noout(উপরের প্রশ্নে) আসলেই লেখা উচিত ছিল -nooutকারণ এটির পক্ষে যুক্তি নেই ?
পেসারিয়ার

1
প্যারামিটার সম্পর্কে এই উত্তরে যা বলা হয়েছে তা সম্পূর্ণ ভুল। প্রথম বাক্যটি সুস্পষ্ট। শেষ বাক্যটি সুস্পষ্ট। এবং মাঝের অনুচ্ছেদে যে প্রশ্নের উত্তর দেওয়া উচিত, সম্পূর্ণ ভুল।
বার্লপ

@ র্যান্ডি অরিসন যখন একটি একক অক্ষর আমি কখনই সমান চিহ্ন দেখিনি .. এবং আপনার বক্তব্যটি ব্যাখ্যা করার জন্য তারা প্রায়শই প্যারামিটার নেয় .. উইজেট -W 10 মাথা -n 3 কাট-বি 2 এবং পিংকে দেখুন -? !! লোডগুলি পরামিতি নেয়। এই উত্তরটি ভয়ঙ্কর
বার্লপ

3

একক ড্যাশটি getopt দ্বারা প্রয়োগ করা হয় এবং এটি পিক্সিক স্ট্যান্ডার্ড ফাংশন, getopt_long এ ডাবল ড্যাশ এবং একটি gnu মান।

Ditionতিহ্যগতভাবে, একটি একক ড্যাশ এই জাতীয় একটি অক্ষরের বিকল্প সরবরাহ করে:

-এ বা-ভি ইত্যাদি তবে এর মধ্যে সীমাবদ্ধ থাকার দরকার নেই। উদাহরণস্বরূপ - জিসিসি-র জন্য সমস্ত জিসিসি সংকলক কমান্ডের জন্য সমস্ত সংকলক সতর্কতা চালু করে।

ডাবল ড্যাশ আর্গুমেন্টগুলি আরও ভার্জোজ থাকে এবং প্রায়শই --max-count = NUM ​​এর মতো সরবরাহিত প্যারামিটার নেয়। তবে --version এর সমান হয় না।

সাধারণত বললে, প্রোগ্রামের আর্গুমেন্টগুলি কীভাবে নির্দিষ্ট করা উচিত, তার চারপাশে কোনও নিয়ম বা সংজ্ঞায়িত মান নেই, কেবল একগুচ্ছ traditionsতিহ্য। যাইহোক, যদি getopt এবং getopt_long কমান্ড লাইন পার্সিং ফাংশন ব্যবহার করা হয় তবে প্যারামিটারগুলি সাধারণত মান অনুসরণ করা উচিত কারণ গ্রন্থাগার ফাংশন এটি করার একটি নির্দিষ্ট পদ্ধতি প্রয়োগ করে।

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