আমি ভাবছিলাম কীভাবে একটি পতাকা হিসাবে নামক কোনও ফাইল তৈরি করব, উদাহরণস্বরূপ, যদি আমি নামের একটি ফোল্ডার তৈরি করতে চাই, তবে -a
কমান্ডগুলি কৌতুকটি করবে?
আমি চেষ্টা mkdir '-a'
, mkdir \-a
, এবং কেউই কাজ করেন। আমি উবুন্টুতে আছি
আমি ভাবছিলাম কীভাবে একটি পতাকা হিসাবে নামক কোনও ফাইল তৈরি করব, উদাহরণস্বরূপ, যদি আমি নামের একটি ফোল্ডার তৈরি করতে চাই, তবে -a
কমান্ডগুলি কৌতুকটি করবে?
আমি চেষ্টা mkdir '-a'
, mkdir \-a
, এবং কেউই কাজ করেন। আমি উবুন্টুতে আছি
উত্তর:
কমান্ডটি এভাবে কল করুন:
mkdir -- -a
এর --
মানে হল যে বিকল্পগুলি এর পরে শেষ হয়, সুতরাং এর -a
বিকল্প হিসাবে না হয়ে আক্ষরিক অর্থে ব্যাখ্যা করা যায় mkdir
। আপনি এই বাক্য গঠন না শুধুমাত্র পাবেন mkdir
, কিন্তু ছাড়া কোনো POSIX-অনুবর্তী ইউটিলিটি echo
এবং test
। স্পেসিফিকেশন থেকে :
যুক্তি - বিকল্পগুলির শেষ নির্দেশ করে এমন একটি সীমানা হিসাবে গ্রহণ করা উচিত। নিম্নলিখিত কোনও যুক্তিগুলি অপারেশন হিসাবে বিবেচনা করা উচিত, এমনকি যদি তারা '-' অক্ষর দিয়ে শুরু হয়। - যুক্তিটি বিকল্প হিসাবে বা অপারেন্ড হিসাবে ব্যবহার করা উচিত নয়।
ব্যবহার --
হিসাবে একটি রক্ষাকবচ প্রায় কোনো কর্ম যেখানে আপনি ফাইলের নামের সাথে মোকাবিলা এবং নিশ্চিত তারা কমান্ড ভঙ্গ করবেন না করতে চাই জন্য সুপারিশ করা হয়, যেমন আপনি এখন যে একটি ফাইল নামক নিম্নলিখিত কল করতে চান পারে যখন একটি লুপ ফাইল চলন্ত, -i
আইএসএন ' টি (ইন?) একটি বিকল্প হিসাবে সঠিকভাবে পার্স করা হয়েছে:
mv -- "$f" new-"$f"
cc -o -myfile -Wall -myfile.c
কেবলমাত্র সামান্য নিয়মিত উদাহরণ হিসাবে নিন । এর নুনের মূল্যযুক্ত যে কোনও সম্পাদক -myfile.c
যদি আপনি এটির জন্য জিজ্ঞাসা করেন তবে কোনও ফাইলের মধ্যে এটি সংরক্ষণ করতে সক্ষম হওয়া উচিত , তবে সি সংকলক সম্ভবত বিকল্পগুলির একটি তালিকা দেওয়ার পরে আপনি যা চান তা করতে পারে না।
cc
মাইকেল উপরে যে আদেশ দিয়েছেন, -o
তাতে আউটপুট ফাইল নির্দিষ্ট করার বিকল্প রয়েছে ।
for f in ./*; do...
পরিবর্তে এর মতো কিছু ব্যবহার করা উচিতfor f in *; do...
যে কোনও যুক্তিসঙ্গত প্রোগ্রামের সাথে কাজ করার সহজ উপায়টি হ'ল সামনের দিকে কোনও আপেক্ষিক পথের নাম ব্যবহার করা -
, যেমন বর্তমান ওয়ার্কিং ডিরেক্টরিতে mkdir ./-a
একটি ডিরেক্টরি তৈরি করা হবে -a
।
এই "কৌশল" ব্যবহারের সর্বাধিক সাধারণ উদাহরণটি হ'ল আপনি যখন কোনও ফাইল ড্যাশ দিয়ে শুরু করতে চান তা মুছতে চান, তাই আপনি এটি করতে পারেন rm ./-a
।
./
করা সর্বদা একটি ভাল ধারণা — কল্পনা করুন যে আপনি একটি ফাইল তৈরি করেছেন -rf
এবং তারপরে আপনি কল করেছেন rm *
।
--
প্রতিটি আদেশের দ্বারা বোঝা যায় না, কেবল কয়েকটি)
--
একটি বাশ জিনিস, সুতরাং এটি সমস্ত প্রোগ্রামের জন্য কাজ করা উচিত?
কেন কাজ করে না mkdir '-a'
বা mkdir \-a
কাজ করে না কারণ এই উভয় পদ্ধতিই (কোট বা ব্যাকস্ল্যাশ ব্যবহার করে) আপনার শেলকে (সম্ভবত bash
) তাদের কোনও বিশেষ অর্থ প্রদান থেকে বিরত রাখতে ব্যবহৃত হয় । যেহেতু -a
শেলটির জন্য বিশেষ কিছু বোঝায় না, তাই এটি কীভাবে পাস হবে তার কোনও প্রভাব নেই mkdir
।
যতদূর mkdir
উদ্বিগ্ন, এটি শেলের কাছ থেকে আর্গুমেন্টের একটি তালিকা পেয়েছে এবং আপনি সেগুলি উদ্ধৃতিতে রেখেছিলেন কিনা এবং এটি ব্যাকস্ল্যাশ ছিল কিনা তা তা বলতে পারে না। এটি কেবল একটি যুক্তি দেখায় -a
। এজন্য আপনার --
অন্যান্য উত্তরগুলিতে বর্ণিত হিসাবে প্রয়োজন ।
"স্লহ্যাক" থেকে উত্তর ছাড়াও আরও একটি কৌশল রয়েছে যা কখনও কখনও কাজ করে:
(বিভিন্ন) -এর মত qoutes 2 সেট মধ্যে প্রশ্নে ফাইলের নাম রাখুন "'-a'"
বা '"-a"'
।
এই কাজ করে কি না তা প্রোগ্রামের উপর নির্ভর করে তবে প্রোগ্রামটি পসিক্স --
বৈশিষ্ট্যটি সমর্থন না করে তবে এটি একটি সর্বশেষ অবলম্বন ।
POSIX পদ্ধতিটি সর্বদা পছন্দ করা হয় কারণ এটি 100% নির্ভরযোগ্য।
--
অপশন প্রসেসিং বন্ধ করতে ব্যবহার করেও ধরে নেওয়া হয় যে ফাইলের নাম অনুসরণ করার জন্য আপনার কোনও বিকল্পের প্রয়োজন নেই, যা সর্বদা ক্ষেত্রে হয় না।
'-a'
বা "-a"
অন্তত বাসদ-টাইপ সিস্টেমে,