রেমন্ড থেকে উদ্ধৃতি @jasonwryan কিছু দরকারী তথ্য আছে, কিন্তু গল্প মাঝখানে শুরু হয়:
- মনে রাখবেন যে ইউনিক্স মাল্টিক্সের একটি হ্রাস-স্কোপ সংস্করণ হিসাবে শুরু হয়েছিল এবং এর ইতিহাস জুড়ে ইউনিক্সের বৈশিষ্ট্যগুলি প্রায়শই অন্যান্য সিস্টেমে দেখা এবং ব্যবহৃত বৈশিষ্ট্যগুলির অনুকরণ বা রূপান্তর ছিল।
'-'
বিকল্প চরিত্র Multics -এর ব্যবহার করা হতো। বিটসেভারের ব্যবহারকারীর কমান্ডগুলির জন্য একটি ম্যানুয়াল রয়েছে ।
- অন্যান্য সিস্টেমে বিভিন্ন অক্ষর ব্যবহার করা হয়েছিল, কেউ কেউ আরও কী-স্ট্রোক-দক্ষ হিসাবে দাবি করেছেন (যেমন
'/'
টপস এবং ভিএমএসের জন্য ব্যবহৃত) এবং কিছুটা কম (যেমন '('
ভিএম / এসপি সিএমএসে ব্যবহৃত হয়)।
- মাল্টিক্স বিকল্পগুলি বহু- চরিত্রযুক্ত ছিল, উদাহরণস্বরূপ, কীওয়ার্ডগুলি আন্ডারস্কোর দ্বারা পৃথক করা।
- দীর্ঘতর মাল্টিক্স বিকল্পগুলির ঘন ঘন একটি সংক্ষিপ্ত, সংক্ষিপ্ত আকার থাকে যেমন
-print
বনাম -pr
(পৃষ্ঠা 3-8)।
- ইউনিক্স বিকল্পগুলি একক-চরিত্রযুক্ত ছিল এবং বেশ কয়েক বছর পরে,
getopt
এটি চালু হয়েছিল। যেহেতু এটি মূল ইউনিক্সের অংশ ছিল না, এমন কিছু ইউটিলিটি রয়েছে যা ব্যবহার করে নি getopt
এবং যেমনটি রয়েছে তেমন রেখে দেওয়া হয়েছে। তবে getopt
প্রোগ্রামগুলি ধারাবাহিকভাবে তৈরিতে সহায়তা করেছেন।
অন্যদিকে, ইউনিক্স বিকল্পগুলি ব্যবহার করে getopt
সিঙ্গল-ক্যারেক্টার ছিল। অন্যান্য সিস্টেমগুলি, বিশেষত সমস্ত বৃহত্তর, ব্যবহৃত কীওয়ার্ড। কিছু (সমস্ত না) এই কীওয়ার্ডগুলিকে সংক্ষিপ্ত করে রাখার অনুমতি দেয় , অর্থাত্ সমস্ত অক্ষর সরবরাহ করা হয় না যতক্ষণ অপশনটি দ্ব্যর্থহীন ছিল। অস্পষ্টতার জন্য সেই পরীক্ষায় সমস্যা রয়েছে। উদাহরণ স্বরূপ:
- 1985 এর প্রথম দিকে, আমি একটি প্রোগ্রামে কাজ করছিলাম যা প্রাইমস-এ পোর্ট করতে হয়েছিল । প্রাইমের বিকাশকারীরা একটি কমান্ড-ভাষা অফার করে অন্যান্য কয়েকটি সংস্থার সাথে প্রতিযোগিতা করেছিল যা তাদের অন্যদের থেকে সর্বাধিক ব্যবহৃত কমান্ড সরবরাহ করে others অবশ্যই তারা সংক্ষিপ্তসারগুলি সমর্থন করেছিল (ভিএমএসের মতো)। অনলাইন সহায়তা পড়ার পরে, টাইপ করে
sta
, পাওয়ার জন্য ভেবেছিলাম status
। এটি ছিল সংক্ষিপ্তসার start
এবং শুরু করার জন্য কিছুই না দিয়ে , কমান্ড ইন্টারপ্রেটার আমাকে লগ অফ করেছিল।
- এক্স টুলকিট ( এক্সটার্ম দ্বারা ব্যবহৃত ) সংক্ষিপ্ত বিকল্পগুলি অনুমোদন করে। এক্সটারেমে এটি কার্যকরভাবে ব্যবহার করতে, এটি
-v
(সংস্করণের জন্য) ওভার -vb
(ভিজ্যুয়াল বেল) পছন্দ করতে কমান্ড প্যারামিটারগুলি প্রিপ্রোসেস করতে হবে । অস্পষ্টতা যখন থাকে তখন এক্স টুলকিটের পছন্দসই বিকল্পটি নির্দিষ্ট করার সরাসরি কোনও উপায় নেই।
অস্পষ্টতার জন্য এই সম্ভাবনার কারণে, কিছু বিকাশকারী সংক্ষিপ্তসারগুলিকে অনুমতি না দেওয়া পছন্দ করে। লিঙ্কস , উদাহরণস্বরূপ, সংক্ষিপ্তসারগুলি ছাড়াই বহু-চরিত্রের বিকল্পগুলি ব্যবহার করে।
সমস্ত প্রোগ্রাম ব্যবহৃত হয় না getopt
: tar
এবং ps
না। না rcs
(বা sccs
) যেমনটি আপনি ড্যাশ optionচ্ছিক ছিল তা লক্ষ করে দেখতে পাবেন এবং বিকল্প মানগুলি wereচ্ছিক ছিল were
এগুলি সব বিবেচনায় নিয়ে, জিএনইউ বিকাশকারীরা getopt
প্রতিটি সংক্ষিপ্ত বিকল্পের দীর্ঘ সংস্করণ সরবরাহ করে অন্যান্য সিস্টেমে ব্যবহৃত কীওয়ার্ড বিকল্পগুলি রূপান্তর করে । উদাহরণস্বরূপ, পাঠ্যসূচিগুলি 1.0 চেঞ্জলগ বলে
Tue May 8 03:41:42 1990 David J. MacKenzie (djm at abyss)
* tac.c: Use regular expressions as the record boundaries.
Give better error messages.
Reformat code and make it more readable.
(main): Use getopt_long to parse options.
ফাইলিউটিলের পরিবর্তন আগে ছিল:
Tue Oct 31 02:03:32 1989 David J. MacKenzie (djm at spiff)
* ls.c (decode_switches): Add long options, using getopt_long
instead of getopt.
এবং কেউ ইতিমধ্যে এটির সন্ধান করতে পারে তবে মনে হয় ফাইল-শিরোনামটি প্রথম দিকের তারিখটি দেখায়:
/* Getopt for GNU.
Copyright (C) 1987, 1989 Free Software Foundation, Inc.
যা এক্স টুলকিট (1987) এর সাথে একযোগে (উদাহরণস্বরূপ)। ইউনিক্স ইউটিলিটিগুলির সাথে আপনি পরিচিত যা (যেমন ls
, ps
) বিদ্যমান একক-অক্ষর বিকল্পগুলি ব্যবহার করে যার জন্য ম্যানুয়ালটিতে পর্যায়ক্রমিক পরিদর্শন প্রয়োজন। প্রবর্তন করার সময় getopt_long
, জিএনইউ বিকাশকারীরা প্রথমে নতুন বিকল্প যুক্ত করে এটি করেননি ; তারা বিদ্যমান বিকল্পগুলি টেবুলেট করে এবং একটি দীর্ঘতর মাপের বিকল্প সরবরাহ করে began
যেহেতু তারা একটি বিদ্যমান তালিকাতে যুক্ত হচ্ছিল , বিদ্যমান বিকল্পগুলির সাথে (আবার) সংঘাতের সমস্যা ছিল। এটি এড়াতে, তারা দীর্ঘ বিকল্পগুলির আগে দুটি ড্যাশ ব্যবহার করে সিনট্যাক্সটি পরিবর্তন করেছিল।
এই প্রোগ্রামগুলি getopt_long
সাধারণ কারণে এই পদ্ধতিতে ব্যবহার অব্যাহত থাকে :
- স্ক্রিপ্টগুলি বিকল্পগুলির উপর নির্ভর করে; বিকাশকারীরা স্ক্রিপ্টগুলি ভাঙ্গতে উদ্বিগ্ন নন
- এখানে একটি লিখিত কোডিং মান রয়েছে (যা কার্যকর হতে পারে)
- কেউ প্রতিযোগিতামূলক সরঞ্জামগুলির সাথে উপস্থিত হননি যা স্পষ্টতই বেমানান (বিএসডি এবং জিএনইউ বিকাশকারী উভয়ই একে অপরের বিকল্পের নামগুলি অনুলিপি করে)
-
প্রযুক্তিগতভাবে হাইফেন বলা হয় । আমরা বেশিরভাগ ক্ষেত্রে এম ড্যাশ (-) উল্লেখ করার জন্য "ড্যাশ" শব্দটি ব্যবহার করি এবং কখনও কখনও এন ড্যাশ (-) ব্যবহার করি, তবে এর কোনটি হাইফেন (-) নয়।