লিনাক্সের ক্ষেত্রে কমান্ড বিকল্পের ক্রমটি কি কার্যকর?


14

উদাহরণস্বরূপ, আমি যখন প্রবেশ করলাম:

gcc -O hello.c -c

অথবা

gcc hello.c -c -O

দুজনেই অভিযোগ করেননি।

কমান্ড বিকল্পের ক্রম কি গুরুত্বপূর্ণ?

উত্তর:


18

এটি প্রোগ্রামের উপর নির্ভর করে; অপারেটিং সিস্টেম বিষয়টি অর্ডার দেয় কিনা তা নির্দেশ করে না।

জিসিসির বিকল্পগুলির সেটটি এত বিশাল যে আপনি যদি স্বেচ্ছায় ক্রমে কোনও বিকল্প সরবরাহ করতে পারেন তবে আমি কোনও কর্তৃপক্ষের সাথে বলতে পারি না ; আপনাকে এই বিকল্পটির জন্য ডকুমেন্টেশন পড়তে হবে। এটি বলেছিল যে, থাম্বের একটি সাধারণ নিয়ম হ'ল যদি আপনার কাছে দুটি বা ততোধিক পারস্পরিক একচেটিয়া বিকল্প থাকে (যেমন -O1 -O2অনুকূলকরণের স্তরের পৃথকীকরণের জন্য) থাকে তবে প্রোগ্রামগুলি সাধারণত পূর্ববর্তীগুলির চেয়ে পরবর্তী বিকল্পগুলি গ্রহণ করবে। আবার, এটি লিনাক্স দ্বারা প্রয়োগ করা হয় না।

একটি সাধারণ প্রোগ্রাম যা আপনাকে যে কোনও আদেশে সর্বাধিক বিকল্পগুলি নির্দিষ্ট করতে দেয় ls। বর্তমান ডিরেক্টরিতে সমস্ত ফাইলকে বিশদে তালিকাভুক্ত করা ls -la, ls -alঅথবা এর মাধ্যমে সম্পন্ন করা যেতে পারে ls -l -a। তবে, ls -l1 (এটি 'এল' 'এক') ls -1l ('one' 'l') এর মতো আউটপুট দেয় না। এগুলি পারস্পরিক একচেটিয়া বিকল্প এবং সর্বশেষে তালিকাভুক্ত সর্বশেষ প্রদত্ত রাইডগুলি।

এখানে অদ্ভুত প্রোগ্রাম রয়েছে যা তারা উপস্থিত হওয়ার সাথে সাথে যুক্তিগুলির বিকল্পগুলি প্রয়োগ করে। সুতরাং, উদাহরণস্বরূপ, আপনার কাছে একটি অনুমান কমান্ড থাকতে পারে blah -a 1 2 -b 3যেখানে -aতিনটি আর্গুমেন্টই -bপ্রযোজ্য তবে কেবল এটিই প্রযোজ্য 3

আবার, এটি প্রশ্নে পৃথক প্রোগ্রামের উপর নির্ভর করে। আপনি যদি কখনও অনিশ্চিত হন তবে ডকুমেন্টেশনটি পড়ুন।


5

এমন কেস রয়েছে যেখানে কমান্ড লাইন বিকল্পের আদেশ এমনকি জিসিসিতেও গুরুত্বপূর্ণ। আপনি যদি স্ট্যাটিক লাইব্রেরি (.a) এর সাথে লিঙ্ক করছেন, তবে আপনি যদি নির্দিষ্ট করে থাকেন -llib1 -llib2এবং কোনও ফাংশন liblib2.aকল liblib1.aকরে যা প্রোগ্রামটিতে আনা হয় নি, তবে লিঙ্কটি অমীমাংসিত প্রতীক সহ ব্যর্থ হবে। ভাগ করা লাইব্রেরি সহ, এটি কোনও সমস্যা নয়।

সাধারণভাবে, যেমন অন্যরা বলেছিলেন, বিকল্পগুলির ক্রমটি কোনও পার্থক্য করতে পারে বা নাও পারে। তবে নীচের দুটি কমান্ডের আউটপুট আলাদা - সুতরাং catআউটপুটটিকে পরিবর্তনের জন্য আর্গুমেন্টের ক্রম :

cat /etc/passwd /etc/group
cat /etc/group  /etc/passwd

এটিও নোট করুন যে লিনাক্সে (বিশেষত), জিএনইউ getopt()কমান্ড লাইনটি পুনরায় অর্ডার করতে প্রস্তুত, যাতে সমস্ত অপশন (একটি বিয়োগ দিয়ে শুরু করা) অন্য যে কোনও যুক্তির আগে প্রক্রিয়া করা যায় - যদি না আপনি ডাবল-ড্যাশ ব্যবহার --করে শেষের চিহ্নটি চিহ্নিত করেন আর্গুমেন্টগুলি বা আপনি পরিবেশ পরিবর্তনশীল POSIXLY_CORRECT সেট না করেই।


4

কেবলমাত্র যদি আপনার কাছে 2 টি বিকল্প থাকে যা পারস্পরিক একচেটিয়া। অন্যথায়, অর্ডার কিছু যায় আসে না।

অবশ্যই, প্রোগ্রামটি কীভাবে রচিত হয়েছে তার উপর নির্ভর করে এটি পরিবর্তিত হতে পারে তবে সমস্ত সাধারণ * নিক্স সরঞ্জামগুলিতে প্রয়োগ করা উচিত।


3

জানা শক্ত, অন্যরা আপনাকে ইতিমধ্যে বলেছে এটি কোনও পার্থক্য করতে পারে (না)।

থাম্বের একটি ভাল নিয়ম হল ম্যান পৃষ্ঠাটি খুলুন এবং প্রথম উদাহরণটি দেখুন এবং সেখানে অর্গ স্থাপন করার সময় সেই আদেশটি ব্যবহার করুন।

সুতরাং যদি আমরা বিড়াল আদেশ (ম্যান বিড়াল) তাকান:

SYNOPSIS
       cat [OPTION] [FILE]...

এটি মনে হয় যতক্ষণ না সমস্ত বিকল্প অপশন ফাইল ফাইলের আগে থাকে ঠিক আছে আপনার উচিত।

এবং যদি আমরা জিসিসি জানোয়ারের দিকে নজর রাখি (ম্যান জিসিসি):

SYNOPSIS
       gcc [-c|-S|-E] [-std=standard]
           [-g] [-pg] [-Olevel]
           [-Wwarn...] [-pedantic]
           [-Idir...] [-Ldir...]
           [-Dmacro[=defn]...] [-Umacro]
           [-foption...] [-mmachine-option...]
           [-o outfile] [@file] infile...

       Only the most useful options are listed here; see below for the remainder.  g++ accepts mostly
       the same options as gcc.

বিড়াল কমান্ড হিসাবে বুঝতে এত সহজ নয় :)

তবে আপনি যদি এটি নিরাপদে খেলতে চান তবে -c এর আগে -O এর আগে উপস্থিত হবে এবং তারপরে ইনফাইলে (হ্যালো.সি) শেষ বলে মনে হচ্ছে।

gcc -c -O hello.c

তবে আপনি ইতিমধ্যে জানেন যেহেতু অন্যরা কাজ করে ... এটি এটি খুব সুরক্ষিত খেলছে :)


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