কথাটি আসার সাথে সাথে কিছুটা মান -হীন আচরণ করে বাশ -
।
পসিক্স বলেছেন:
গাইডলাইন 10:
প্রথম --
যুক্তি যা কোনও বিকল্প-যুক্তি নয় তা বিকল্পগুলির সমাপ্তি নির্দেশ করে একটি সীমানা হিসাবে গ্রহণ করা উচিত। নিম্নলিখিত কোনও যুক্তিগুলি -
চরিত্র দিয়ে শুরু হলেও, অপারেশন হিসাবে বিবেচনা করা উচিত ।
[...]
গাইডলাইন 13:
যেসব ইউটিলিটিগুলি অপারেশনগুলি ফাইল পড়তে বা লেখার জন্য খোলার জন্য প্রতিনিধিত্ব করে তাদের জন্য -
কেবলমাত্র স্ট্যান্ডার্ড ইনপুট (বা স্ট্যান্ডার্ড আউটপুট যখন প্রসঙ্গ থেকে পরিষ্কার হয় যে কোনও আউটপুট ফাইল নির্দিষ্ট করা হচ্ছে) বা একটি ফাইল নামকরণ -
।
এবং
POSIX.1-2017 এর শেল এবং ইউটিলিটিস ভলিউমে বর্ণিত কোনও ইউটিলিটি যেখানে -
স্ট্যান্ডার্ড ইনপুট বা আউটপুট বোঝাতে অপারেন্ডকে স্বীকার করতে বা গ্রহণ করতে হবে না , এই ব্যবহারটি অপের্যান্ডস বিভাগে ব্যাখ্যা করা হয়েছে। অন্যথায়, যদি এই ধরনের একটি ইউটিলিটি ব্যবহার operands ফাইল প্রতিনিধিত্ব করতে, এটি বাস্তবায়ন-সংজ্ঞায়িত প্রতীক কিনা তা ব্যবহারকারীকে -
স্ট্যান্ডার্ড ইনপুট (অথবা মান আউটপুট) ঘোরা, অথবা নামের একটি ফাইল জন্য -
।
তবে তারপরে man 1 bash
পড়ে:
একটি --
বিকল্পগুলির সমাপ্তির ইঙ্গিত দেয় এবং পরবর্তী বিকল্প প্রক্রিয়াটিকে অক্ষম করে। এর পরে যে কোনও যুক্তি --
ফাইল নাম এবং যুক্তি হিসাবে বিবেচিত হবে। এর একটি যুক্তি -
সমতুল্য --
।
সুতরাং বাশের জন্য -
মানে স্ট্যান্ডার্ড ইনপুট বা কোনও ফাইল নয়, তাই কিছুটা অ-মানক।
এখন আপনার বিশেষ কেস:
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
আমি সন্দেহ করি যে এই আদেশের লেখক বুঝতে পারবেন না যে এই ক্ষেত্রে -
সমতুল্য --
। আমি সন্দেহ করি যে লেখক bash
এটির মানক ইনপুট থেকে পড়বেন কিনা তা নিশ্চিত করতে চেয়েছিলেন , তারা -
গাইডলাইন 13 অনুসারে কাজ করবে বলে আশা করেছিল।
তবে এটি গাইডলাইন অনুসারে কাজ করলেও -
এখানে অপ্রয়োজনীয় হবে কারণ bash
এর স্ট্যান্ডার্ড ইনপুটটি পাইপ হওয়ার সময় সনাক্ত করে এবং সে অনুযায়ী কাজ করে (যদি না -c
দেওয়া হয় তবে )।
তবুও -
গাইডলাইন অনুযায়ী কাজ করে না, এটি কাজ করে --
। এখনও --
এখানে অপ্রয়োজনীয় কারণ এর পরে কোনও যুক্তি নেই।
আমার মতে সর্বশেষ -
পরিবর্তন কিছুই। কমান্ড এটি ছাড়া কাজ করবে।
কীভাবে --
এবং -
সাধারণভাবে কার্যকর হতে পারে তা দেখতে নীচের উদাহরণটি অধ্যয়ন করুন।
cat
আমার কুবুন্টু উভয় নির্দেশাবলী আনুগত্য এবং আমি উপযোগিতা প্রদর্শন করার জন্য এটি ব্যবহার করতে হবে -
এবং --
।
নামের একটি ফাইল foo
উপস্থিত থাকুক । এটি ফাইলটি মুদ্রণ করবে:
cat foo
নামের একটি ফাইল --help
উপস্থিত থাকুক । এটি ফাইলটি মুদ্রণ করবে না:
cat --help
তবে এটি নামক ফাইলটি মুদ্রণ করবে --help
:
cat -- --help
এটি --help
স্ট্যান্ডার্ড ইনপুট থেকে যা আসে তার সাথে ফাইলটির নাম যুক্ত করে:
cat -- --help -
মনে হচ্ছে আপনার সত্যই দরকার নেই --
, কারণ আপনি সর্বদা পাস করতে পারেন ./--help
যা নিশ্চিতভাবে একটি ফাইল হিসাবে ব্যাখ্যা করা হবে। তবে বিবেচনা করুন
cat "$file"
ভেরিয়েবলের বিষয়বস্তু কী তা আপনি আগেই জানেন না। আপনি কেবল ./
এটির জন্য পূর্বপরিবর্তন করতে পারবেন না , কারণ এটি একটি পরম পথ হতে পারে এবং ./
এটিকে ভেঙে দেয়। অন্যদিকে এটি একটি ফাইল হতে পারে --help
(কারণ কেন নয়)। এই ক্ষেত্রে --
খুব দরকারী; এটি আরও অনেক দৃust় আদেশ:
cat -- "$file"