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


70

আমি শেলটিতে কাজ করতে নতুন এবং এই আদেশগুলি ব্যবহার স্বেচ্ছাসেবী বলে মনে হচ্ছে। একটি পতাকা একটি একক ড্যাশ এবং অন্য একটি ডাবল ড্যাশ আছে কারণ আছে?


এটি POSIX মান দ্বারা পরিচালিত হওয়ার কথা: iam.ubc.ca/guides/javatut99/essential/attributes/_posix.html
সিজেসি

সেই লিঙ্কটি এখন 404 @ সিজেসি :( সম্ভবত আরও নির্ভরযোগ্য লিঙ্কটি হতে পারে en.wikedia.org/wiki/POSIX
বার্নহার্ড হফম্যান

আরও ভাল লিঙ্ক: en.wikedia.org/wiki/…
ক্রেগ ফিশার

উত্তর:


110

একটি একক হাইফেন একাধিক একক-বর্ণচিহ্নযুক্ত পতাকা অনুসরণ করতে পারে। একটি ডাবল হাইফেন একটি একক, মাল্টিচার্যাক্টর বিকল্পটি উপস্থাপন করে।

এই উদাহরণ বিবেচনা করুন:

tar -czf

এই উদাহরণে, -czfতিন একক-অক্ষর পতাকা নির্দিষ্ট করে: c, z, এবং f

এখন অন্য একটি উদাহরণ বিবেচনা করুন:

tar --exclude

এই ক্ষেত্রে, --excludeনামক একটি একক, মাল্টিচার্যাক্টর বিকল্প নির্দিষ্ট করে exclude। ডবল হাইফেন কম্যান্ড-লাইন যুক্তি disambiguates, যা সুনিশ্চিত করে যে tarএটি হিসাবে ব্যাখ্যা করে excludeবদলে সংমিশ্রণ e, x, c, l, u, d, এবং e


1
@ কাইলেক্স, না, যেহেতু কেবলমাত্র "সি" নামে একটি দীর্ঘ বিকল্প নেই এবং - এর অর্থ একটি দীর্ঘ বিকল্প, একটি অক্ষরের বিকল্প অনুসরণ করে না।
psusi

13
কখনও কখনও এমনকি দীর্ঘ কমান্ডগুলি এককভাবে ড্যাশ করা যায়। উদাহরণস্বরূপ, 'সিডিরেকার্ড' সমস্ত একক ড্যাশযুক্ত কমান্ড ব্যবহার করে (-জেড -ডাও ...)। এটি সমস্ত প্রোগ্রামের উপর নির্ভর করে, তবে তাদের বেশিরভাগ (!) একক এবং - একাধিক-অক্ষর (দীর্ঘ) কমান্ডের জন্য ব্যবহার করে
মুলাজ

8
@ মুলাজ, হ্যাঁ, সিডিকার্ড বেশ কিছু বোকামি কাজ করে।
psusi

10
এটিও মনে রাখবেন - সাধারণত এটি নিজেরাই ব্যবহার করা বিকল্পগুলির সমাপ্তি নির্দেশ করে। : আরও তথ্যের জন্য এখানে দেখুন unix.stackexchange.com/questions/11376/...
Sirex

3
@ কিলজয়, কারণ অজ্ঞতা বা পছন্দের মাধ্যমেই হোক না কেন, সেই প্রোগ্রামগুলির লেখকরা অবশ্যই এই সম্মেলনটি অনুসরণ করেন নি। ঠিক cdrecordউপরের মন্তব্যে বছর পূর্বে উল্লিখিত।
psusi

17

এটি সব প্রোগ্রামের উপর নির্ভর করে। সাধারণত "-" 'সংক্ষিপ্ত' বিকল্পগুলির জন্য ব্যবহৃত হয় (ওয়ান-লেটার, -h), এবং "-" "দীর্ঘ" (এর) বিকল্পগুলির জন্য (- সাহায্য) ব্যবহৃত হয়।

সংক্ষিপ্ত বিকল্পগুলি সাধারণত একত্রিত করা যায় (সুতরাং "-h -a" "-হা" এর সমান)

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

উৎস


2
তাহলে কেন এটি জাভা-রূপান্তর এবং পিপড়া-রূপান্তর, তবে?
মূর্তিমান নিরানন্দ

7

এটি সত্যিই একটি সম্মেলন। তবে এটি পার্সারদের প্রোগ্রামে দেওয়া বিকল্পগুলি সম্পর্কে আরও দক্ষতার সাথে জানতে সহায়তা করতে পারে। এছাড়াও, ঝরঝরে ইউটিলিটিগুলি রয়েছে যা এই আদেশগুলি পার্সিংয়ে সহায়তা করতে পারে, যেমন getopt(3)বা getopt_long(3)কোনও প্রোগ্রামের আর্গুমেন্টগুলি পার্স করতে সহায়তা করার জন্য মানহীন standard

এটা সুন্দর, আমরা একাধিক সংক্ষিপ্ত অপশন সংযুক্ত, হিসাবে অন্যান্য উত্তর বলে, মত থাকতে পারে জন্য tar -xzf myfile.tar.gz

যদি কোনও "লিসা" যুক্তি ছিল, তবে এটির চেয়ে lsআলাদা আলাদা অর্থ থাকতে পারে । সাবেক হয় , , , এবং পরামিতি, না শব্দ।ls -lisals --lisalisa

আসলে, আপনি লিখতে পারতেন ls -l -i -s -a, যার অর্থ হুবহু একই ls -lisa, তবে এটি প্রোগ্রামের উপর নির্ভর করে।

এমন প্রোগ্রাম রয়েছে যা এই সম্মেলনটি মানছে না। আমার দৃষ্টির জন্য সবচেয়ে উল্লেখযোগ্য ddএবং gcc


3

ডাবল ড্যাশ সহ একক ড্যাশ বনাম দীর্ঘ অপশন সহ সংক্ষিপ্ত বিকল্পগুলি

সংক্ষিপ্ত বিকল্পগুলি একক যুক্তিতে মিলিত হতে পারে;

for example: ls -lrt #instead of ls -l -r -t

যদি আমরা একক ড্যাশ সহ দীর্ঘ বিকল্পগুলি অনুমতি দিই, এটি দ্ব্যর্থহীনতার কারণ করে। এটি সমাধানের জন্য আমরা দীর্ঘ বিকল্পগুলির জন্য ডাবল ড্যাশ ব্যবহার করি।

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