কমান্ড লাইন বিকল্প শৈলী - POSIX বা কি?


16

কোথাও আমি জাভা / জাভ্যাকের বিরুদ্ধে উইন্ডোজ এবং ইউনিক্স স্টাইলের মতো মিশ্রণ ব্যবহার করার অভিযোগ দেখলাম

java -classpath ... -ea ... Something

আইএমএইচও, এটি কোনও মিশ্রণ নয়, এটি ঠিক যেমন findকাজ করে, তাই না? আফিক, পসিক্স অনুসারে বাক্যবিন্যাসের মতো হওয়া উচিত

java --classpath ... --ea ... Something

এবং এর -abcdefঅর্থ একবারে 6 টি সংক্ষিপ্ত বিকল্পগুলি নির্দিষ্ট করা। আমি ভাবছি কোন সংস্করণটি সাধারণত টাইপিং এবং কম ত্রুটির দিকে নিয়ে যায়।

আমি জাভাতে একটি ছোট্ট ইউটিলিটি লিখছি এবং কোনও ক্ষেত্রেই আমি উইন্ডোজ স্টাইলটি ব্যবহার করতে যাচ্ছি না /a /bকারণ আমি মূলত ইউনিক্সে আগ্রহী। আমার কোন স্টাইলটি বেছে নেওয়া উচিত?


1
পসিক্স 1003.1-2003, বেস সংজ্ঞা, অধ্যায় 12, বিভাগ 2 ইউটিলিটি কমান্ড-লাইন সিনট্যাক্স সম্পর্কে নিম্নলিখিত নির্দেশিকাগুলি দেয়: "প্রতিটি বিকল্পের নাম পোর্টেবল অক্ষর সেট থেকে একক বর্ণচিহ্ন (অ্যালনাম অক্ষর শ্রেণিবিন্যাস) হওয়া উচিত" " এবং "সমস্ত বিকল্পের পূর্বে '-' বিস্ময়কর চরিত্রটি থাকা উচিত" "
গ্রেগ এ উডস

উত্তর:


21

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

নিয়মগুলির ব্যতিক্রম রয়েছে - findউদাহরণস্বরূপ - তবে এটি areতিহাসিক ইউনিক্স নজিরগুলির কারণে।

এক্স উইন্ডোজ (এক্স 11) find-র মতো সিঙ্গল-ড্যাশ, দীর্ঘ নাম বিকল্পগুলি ব্যবহার করে।

ডাবল ড্যাশ দীর্ঘ নামের বিকল্পগুলি জিএনইউ দ্বারা প্রবর্তিত হয়েছিল ( +উপসর্গ হিসাবে উপসর্গ হিসাবে ব্যবহার করে )।

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

আপনি কভার করার কৌশলগুলির তালিকাটি git(এবং আরও অনেকগুলি সিস্টেম) বাড়িয়ে দিতে পারেন যেখানে আপনি কোনও কাঠামো পাবেন:

  • basecommand[ গ্লোবাল বিকল্পগুলি ] subcommand[ সাব-কমান্ড বিকল্পগুলি ] [নাম ...]

অনেকগুলি সাব-কমান্ড থাকতে পারে, যার প্রতিটি বিকল্পের নিজস্ব অভিধান রয়েছে।

অবশ্যই, উইন্ডোজ /ড্যাশ 'এর পরিবর্তে বিকল্পগুলি নির্দেশ করতে' স্ল্যাশ 'ব্যবহার করে -

জেসিএল (জেড / ওএস, এবং ওএস / 360, এবং মধ্যবর্তী সিস্টেমের জন্য) কমা দ্বারা পৃথক অবস্থানগত পরামিতি ব্যবহার করতে ঝোঁক, এবং সাধারণত ব্যবহারকারী-বান্ধব বা একটি ভাল ইন্টারফেস হিসাবে বিবেচিত হয় না।


1
+1 সুন্দর লিঙ্ক এবং উল্লেখ করার জন্য git
মার্টিনাস

আমি সমস্ত উত্তর পছন্দ করি, লিঙ্কগুলির কারণে এটি গ্রহণ করেছি।
মার্টিনাস

স্ট্যাকওভারফ্লো প্রশ্নটি মুছে ফেলা হয়েছে বলে মনে হচ্ছে (বা সম্ভবত সরিয়ে নেওয়া হয়েছে) ... কোথায় গেছে কেউ জানেন? আমি এটি পড়তে আগ্রহী।
মিজিপজোর

1
@ মিজিপজোর: তথ্যের বর্তমান অবস্থানের জন্য আপডেট দেখুন। বিকল্প যুক্তির সাথে সংক্ষিপ্ত / দীর্ঘ বিকল্পগুলিও
জোনাথন লেফলার

"অবশ্যই, উইন্ডোজ ড্যাশ '-' এর পরিবর্তে বিকল্পগুলি নির্দেশ করতে '/' স্ল্যাশ ব্যবহার করে (") "" উইন্ডোজের বেশিরভাগ কমান্ড লাইন সরঞ্জাম এখন উভয়কেই সমর্থন করে এবং পাওয়ারশেল কেবলমাত্র ড্যাশ ব্যবহারের পথে চলেছে।
jpmc26

15

সম্পাদনা: এটি চিহ্নিত করা হয়েছে যে এই স্টাইলটি একটি জিএনইউ-ইসম, এবং নন-জিএনইউ ভিত্তিক ইউনিক্সগুলিতে একটি একক-ড্যাশ সিনট্যাক্স ব্যবহার করার প্রবণতা রয়েছে (বিশেষত, ওএস এক্স এবং বিএসডি ভেরিয়েন্ট)।

এটি GNU-ism স্থিতি সত্ত্বেও, অনেক নতুন লিখিত ইউনিক্স-স্টাইল প্রোগ্রামগুলি এই স্টাইলটি ব্যবহার করে:

  • --long-option দীর্ঘ বিকল্প নামের জন্য,
  • -s সংক্ষিপ্ত (এক-চরিত্র) বিকল্পের জন্য,
  • -abc যুক্তি ছাড়াই একাধিক সংক্ষিপ্ত বিকল্পের জন্য (বিকল্পের জন্য একটি অক্ষর)।
  • যুক্তিযুক্ত বিকল্প:
    • --long argবা --long=argদীর্ঘ বিকল্পের জন্য,
    • -s arg, -sargঅথবা (ঐচ্ছিকভাবে) -s=argসংক্ষিপ্ত বিকল্পের জন্য। এটি অন্যান্য সংক্ষিপ্ত বিকল্পগুলির সাথে একত্রিত হতে পারে, যতক্ষণ না শুধুমাত্র শেষেরটির একটি যুক্তি থাকে।
  • একই "শব্দার্থবিজ্ঞান" বিকল্পের বেশ কয়েকটি এলিয়াস থাকতে পারে, সাধারণত একটি সংক্ষিপ্ত (টাইপ করা দ্রুত) একটি এবং একটি দীর্ঘ (মনে রাখা সহজ) এক হতে পারে।

যে কোনও ব্যক্তি যে কোনও সময়ের জন্য লিনাক্স শেল ব্যবহার করেছেন তাদের এই স্টাইল 1 এর সাথে পরিচিত হওয়া উচিত , সুতরাং এটির পক্ষে কমপক্ষে অবাক হওয়ার নীতি রয়েছে। দীর্ঘ বিকল্পগুলির সাথে অস্পষ্ট না হয়ে একাধিক সংক্ষিপ্ত বিকল্পগুলির গোষ্ঠীকরণের অনুমতি দেওয়াও দুর্দান্ত।

1 উদাহরণস্বরূপ, (আমার লিনাক্স মেশিনে) এই শৈলী ব্যবহার প্রোগ্রামের কিছু: ls, grep, man, sed, bash, ইত্যাদি ( সম্পাদনা করুন: এই দৃশ্যত গনুহ-isms যদিও, বাসদ এবং OS X এর মেশিন এই শৈলী ব্যবহার করবেন না হয়)

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

findএকটি খুব পুরানো প্রোগ্রাম (বা সম্ভবত আরও সম্ভবত: একটি খুব পুরানো প্রোগ্রামের একটি নতুন সংস্করণ) যা নতুন কমান্ড লাইন সিনট্যাক্স ব্যবহার করার জন্য সহজেই পরিবর্তন করা যায় না। অনেকগুলি স্ক্রিপ্ট নষ্ট হয়ে যায়, এবং পুরানো বাক্য বাক্সে ব্যবহৃত অনেক বেশি ব্যবহারকারী অভিযোগ করতেন। javacসম্ভবত gccএবং বন্ধুরা দ্বারা প্রভাবিত হয়েছিল , যা একইভাবে historicalতিহাসিক কারণে একটি পুরানো বাক্য গঠন অনুসরণ করে।


+1 টি - উপরন্তু, আপনি অপশন শত শত আছে, আপনি শুধু আছে সৃষ্টিশীল পেতে (যেমন একটি কম্পাইলার লেখার)
টিম পোস্ট

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

8
  • ড্যাশ-ড্যাশ ( --long-arg) সহ আর্গুমেন্ট একটি জিএনইউ কনভেনশন (তাদের গিওপ্ট বাস্তবায়ন দেখুন)।
  • POSIX কমান্ড কখনও ডাবল ড্যাশ যুক্তি ব্যবহার করে না। এটি লিনাক্স ব্যতীত ইউনিক্সের (ম্যাক ওএস এক্স, বিএসডি) বেশিরভাগ রূপগুলিতে প্রযোজ্য যা GNU ডিফল্টরূপে ব্যবহার করে।

আপনার জাভা প্রকল্পের জন্য, আপনি জাভা বা অ্যাপাচি সিএলআইয়ের জন্য জিএনইউ গিওপটটি পরীক্ষা করে দেখতে চাইতে পারেন । তারা উভয় সম্মেলন সমর্থন।

তৃতীয় বিকল্পটি হল জাভা ভিএম আর্গুমেন্টগুলি ব্যবহার করা এবং রানটাইমটি আপনার জন্য পার্স করা:

 $ java -Dcolor=blue

এবং তারপরে কোডে:

 System.getProperty("color");

ব্যক্তিগতভাবে, আমি -Dআইডিয়মটি ব্যবহার করব এবং জাভা জাগরণটি শেল-স্ক্রিপ্টে আবৃত করতাম যা কমান্ড লাইনটি পার্সিং সহ ক্লাসপাথ চেক করা সহ পরিচালনা করে This এটি আপনার জাভা প্রোগ্রামটি চালাও দেশীয় ব্যবহারকারীদের পক্ষে সহজ করে তোলে।


1

এটা নির্ভর করে. আমি ব্যক্তিগতভাবে পসিক্স শৈলী পছন্দ করি তবে আপনার ক্ষেত্রে আমি সম্ভবত আপনার পরিবেশটি যে পরিবেশে ব্যবহার করা হচ্ছে তার সাথে সামঞ্জস্যের লক্ষ্য রাখব। এর অর্থ জাআরগুলির জন্য জাভা কনভেনশনটি ব্যবহার করা (যদি না আপনি একটি র‍্যাপার স্ক্রিপ্ট রাখার পরিকল্পনা করেন যা এটি সাধারণ ইউনিক্স কমান্ডের মতো দেখায়)।

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