উত্তর:
সংক্ষিপ্ত উত্তর :
কারণ এটি কোনও পতাকার একাধিক ব্যবহার উপেক্ষা করার জন্য কর্মসূচিযুক্ত।
দীর্ঘ উত্তর:
আপনি দেখতে পারেন সোর্স কোড এর ls
, সেখানে ফাংশন একটি অংশ getopt_long()
এবং একটি বিশাল সুইচ মামলা:
1648 int c = getopt_long (argc, argv,
1649 "abcdfghiklmnopqrstuvw:xABCDFGHI:LNQRST:UXZ1",
1650 long_options, &oi);
....
1654 switch (c)
1655 {
....
1707 case 'l':
1708 format = long_format;
1709 break;
....
1964 }
ফাংশনটি getopt_long()
প্রোগ্রামটিতে প্রদত্ত সমস্ত পরামিতি পড়ে। ক্ষেত্রে যদি -l
ভেরিয়েবল format
সেট করা থাকে। সুতরাং আপনি যখন একাধিক টাইপ করেন তখন -lllllllll
চলকটি একাধিকবার সেট করা হয় তবে এতে কোনও পরিবর্তন হয় না।
ঠিক আছে, এটি একটি জিনিস পরিবর্তন করে। এই বিশাল সুইচ কেস স্টেটমেন্টটি একাধিক -l
ফ্ল্যাগের কারণে একাধিকবার চলতে হবে । ls
একাধিক -l
পতাকা দিয়ে সম্পূর্ণ করতে আরও দীর্ঘ প্রয়োজন । তবে এই সময়টি উল্লেখ করার মতো নয়। =)
কারণ এটি করা সঠিক জিনিস। ধরুন আপনার কাছে কোনও স্ক্রিপ্ট এরকম কিছু করছে:
ls $LS_OPTIONS -l "$dir"
যেখানে এটি সম্ভব যেখানে $LS_OPTIONS
ইতিমধ্যে রয়েছে -l
। এই আদেশটি একটি ত্রুটি তৈরি করার জন্য এটি স্ব-স্বজ্ঞাত এবং বিরক্তিকর হবে এবং এটি এড়াতে স্ক্রিপ্টে অতিরিক্ত যুক্তি প্রয়োজন।
-l
এটির জন্য সর্বোত্তম উদাহরণ নাও হতে পারে তবে আশা করি আপনি দেখতে পাবেন যে ধারণাটি সাধারণভাবে কীভাবে প্রযোজ্য। একটি আরও ভাল উদাহরণ সংকলক বিকল্প যা সংকলক $CFLAGS
একটি নির্দিষ্ট অনুরোধে সুস্পষ্ট বিকল্প ডুপ্লিকেট হতে পারে।
ls
বিকল্পটি ঘটতে পারে যদি আপনি একটি বিকল্প নাম নির্দিষ্ট করে থাকেন যা কিছু বিকল্পের সেট সহ কল করে।
-l
আপনার ls
ওরফে একটি খারাপ ধারণা মত মনে হয়, একই সমস্যা বিকল্প একটি ইন্টারেক্টিভ মধ্যে সুন্দর সঙ্গে উঠা সম্ভবত ls
মত ওরফে -p
বা --color=auto
।
ls
। ll
এর জন্য একটি উপাস হতে পারে ls -l
এবং সেই উরফ সহ একটি সিস্টেমে আমি টাইপ করতে পারি ll -lart
।
ls
কোনও bash
কমান্ড নয়, তবে একটি পৃথক নির্বাহযোগ্য যা আপনি প্রবর্তন করতে যাচ্ছেন bash
। এটি বলেছিল, -l
কেবল বুলিয়ান পতাকা এটিই এক প্রকার, যা যদি উপস্থিত ls
হয় তবে আউটপুটটির জন্য দীর্ঘ-শৈলীর বিন্যাস ব্যবহার করতে পারে। বেশিরভাগ প্রোগ্রামগুলি কেবল এ জাতীয় পতাকাগুলির একাধিক ব্যবহার ( ls -ll
একইরূপে ls -l -l
) উপেক্ষা করবে যদিও এর কিছু ব্যতিক্রম রয়েছে (উদাহরণস্বরূপ, যদি -v
'ভার্বোস' অর্থ, তবে কোনও প্রোগ্রাম "আরও বেশি ভার্বোজ হতে" বোঝাতে একাধিক ব্যবহারের ব্যাখ্যা দিতে পারে)।
-vvv
হল ssh
।
aptitude moo
শেল অ্যালিয়াসগুলি বেশ বিরক্তিকর হবে যদি কমান্ডগুলি ls
বারবার বিকল্পগুলির অনুমতি না দেয়।
ধরা যাক আপনার ছিল
alias ls='ls --color=auto'
alias rm='rm -i'
তারপর, পরস্পরবিরোধী পতাকা অনুমতি দেওয়া হয়নি, এটা মত ইস্যু কমান্ড একটি ত্রুটি হবে ls --color=never
বা ls --color=auto
বা rm -i
।
অতএব, এই কমান্ডগুলি পরের পতাকাগুলিকে পূর্বেরগুলিকে ওভাররাইড করার জন্য ডিজাইন করা হয়েছে।
--inplace
এবং উভয়কে --delay-updates
নিয়েই সিএসএনসি চেষ্টা করুন )) কিছু সরঞ্জাম কেবল শেষ যা আসে তা গ্রহণ করে; rm -if
সম্ভবত সেখানে একটি ভাল উদাহরণ। কিন্তু ম এর -l অপশনের কোনো দ্বন্দ্ব নেই, অত ls -l
এবং ls -ll
একটা সমস্যা হয় না, এবং এটি কোনো গুরুত্বপূর্ণ পদ্ধতিতে মৃত্যুদন্ড প্রভাব ফেলে না। কম্পিউটারগুলি মন-সংকুচিত পুনরাবৃত্তিতে ভাল।