কমান্ড লাইন আর্গুমেন্টের মতো একটি ফাইল তৈরি করা যায় কীভাবে?


29

আমি ভাবছিলাম কীভাবে একটি পতাকা হিসাবে নামক কোনও ফাইল তৈরি করব, উদাহরণস্বরূপ, যদি আমি নামের একটি ফোল্ডার তৈরি করতে চাই, তবে -aকমান্ডগুলি কৌতুকটি করবে?

আমি চেষ্টা mkdir '-a', mkdir \-a, এবং কেউই কাজ করেন। আমি উবুন্টুতে আছি


13
এখানে উত্তরগুলি দুর্দান্ত, তবে আমি এটি করতে চাইছেন এমন
কোনও ট্রোল

@ ইভিলসপ কিছু লোক ফোল্ডারগুলির উপসর্গ পছন্দ করতে পছন্দ করে যাতে তারা বর্ণানুক্রমিকভাবে সাজানো তালিকার শীর্ষে থাকে at তবে এটাই কেবলমাত্র আমি ভাবতে পারি, সত্যি বলতে।
স্ল্যাক

@ এসএলএইচসি আমি কমপক্ষে একটি ভিডিও সম্পাদনা কোর্স সম্পর্কে জানি যেখানে তারা শিক্ষার্থীদের তাদের প্রকল্পের ডিরেক্টরিতে ফাঁকা স্থান যোগ করতে উত্সাহিত করে যাতে তারা সাম্প্রদায়িক আইম্যাকগুলিতে শীর্ষে প্রদর্শিত হবে। এটি কুৎসিত ছিল এবং
বিস্ময়কর বর্ধনের

3
বেশিরভাগ ক্ষেত্রে এটি একাডেমিক আগ্রহের জন্য।
এমওয়াইভি

5
বাধ্যতামূলক কমিক: beesbuzz.biz/d/20110224.php
ফুঁয়োফুঁয়ো

উত্তর:


49

কমান্ডটি এভাবে কল করুন:

mkdir -- -a

এর --মানে হল যে বিকল্পগুলি এর পরে শেষ হয়, সুতরাং এর -aবিকল্প হিসাবে না হয়ে আক্ষরিক অর্থে ব্যাখ্যা করা যায় mkdir। আপনি এই বাক্য গঠন না শুধুমাত্র পাবেন mkdir, কিন্তু ছাড়া কোনো POSIX-অনুবর্তী ইউটিলিটি echoএবং testস্পেসিফিকেশন থেকে :

যুক্তি - বিকল্পগুলির শেষ নির্দেশ করে এমন একটি সীমানা হিসাবে গ্রহণ করা উচিত। নিম্নলিখিত কোনও যুক্তিগুলি অপারেশন হিসাবে বিবেচনা করা উচিত, এমনকি যদি তারা '-' অক্ষর দিয়ে শুরু হয়। - যুক্তিটি বিকল্প হিসাবে বা অপারেন্ড হিসাবে ব্যবহার করা উচিত নয়।

ব্যবহার --হিসাবে একটি রক্ষাকবচ প্রায় কোনো কর্ম যেখানে আপনি ফাইলের নামের সাথে মোকাবিলা এবং নিশ্চিত তারা কমান্ড ভঙ্গ করবেন না করতে চাই জন্য সুপারিশ করা হয়, যেমন আপনি এখন যে একটি ফাইল নামক নিম্নলিখিত কল করতে চান পারে যখন একটি লুপ ফাইল চলন্ত, -iআইএসএন ' টি (ইন?) একটি বিকল্প হিসাবে সঠিকভাবে পার্স করা হয়েছে:

mv -- "$f" new-"$f"

এই পদ্ধতির খারাপ দিকটি অবশ্যই এটি বিকল্প বিকল্পগুলি প্রক্রিয়াকরণ বন্ধ করে দেয়। একটি সাধারণ এমকিডির উদাহরণ হিসাবে, এটি আশ্চর্য কাজ করে; আপনার যদি কমান্ড লাইনে ফাইলের নামটি অনুসরণ করতে আসলে কোনও বিকল্পের প্রয়োজন হয় তবে এটি মোটেই কার্যকর হবে না।
একটি সিভিএন

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

1
যেহেতু ওপি "কমান্ড লাইন আর্গুমেন্টের মতো" একটি নাম দিয়ে একটি ফাইল তৈরি করার কথা বলেছে (আসুন ধরে নেওয়া যাক একটি নাম হিফেন দিয়ে শুরু করা হয়) তাই আমি এটি সম্পূর্ণরূপে অযৌক্তিক অনুমান বলে মনে করি না। cc -o -myfile -Wall -myfile.cকেবলমাত্র সামান্য নিয়মিত উদাহরণ হিসাবে নিন । এর নুনের মূল্যযুক্ত যে কোনও সম্পাদক -myfile.cযদি আপনি এটির জন্য জিজ্ঞাসা করেন তবে কোনও ফাইলের মধ্যে এটি সংরক্ষণ করতে সক্ষম হওয়া উচিত , তবে সি সংকলক সম্ভবত বিকল্পগুলির একটি তালিকা দেওয়ার পরে আপনি যা চান তা করতে পারে না।
একটি সিভিএন

1
@ মাকসিম উদাহরণস্বরূপ কমান্ডগুলির জন্য একটি ইনপুট বা আউটপুট ফাইলের নাম সেট করার জন্য একটি বিকল্পের প্রয়োজন, যেমন ccমাইকেল উপরে যে আদেশ দিয়েছেন, -oতাতে আউটপুট ফাইল নির্দিষ্ট করার বিকল্প রয়েছে ।
slhck

1
লুপ উদাহরণটি হ'ল আপনার সর্বদা for f in ./*; do...পরিবর্তে এর মতো কিছু ব্যবহার করা উচিতfor f in *; do...
26'13

21

যে কোনও যুক্তিসঙ্গত প্রোগ্রামের সাথে কাজ করার সহজ উপায়টি হ'ল সামনের দিকে কোনও আপেক্ষিক পথের নাম ব্যবহার করা -, যেমন বর্তমান ওয়ার্কিং ডিরেক্টরিতে mkdir ./-aএকটি ডিরেক্টরি তৈরি করা হবে -a

এই "কৌশল" ব্যবহারের সর্বাধিক সাধারণ উদাহরণটি হ'ল আপনি যখন কোনও ফাইল ড্যাশ দিয়ে শুরু করতে চান তা মুছতে চান, তাই আপনি এটি করতে পারেন rm ./-a


3
অবশ্যই এটি কেবল কৌশলটি করে যদি আপনি ফাইল পাথ নিয়ে কাজ করছেন, এবং স্ট্রিং হিসাবে বিভক্ত কোনও স্বেচ্ছাসেবক কমান্ড লাইন বিকল্প নয়। তবে অন্যথায় উপসর্গ তৈরি ./করা সর্বদা একটি ভাল ধারণা — কল্পনা করুন যে আপনি একটি ফাইল তৈরি করেছেন -rfএবং তারপরে আপনি কল করেছেন rm *

1
@ এসএলএইচএচকি অনেক লোকের কাছে যা হয়ত একটি রসিকতা দেখায়। তবে আমি যথেষ্ট ক্ষেত্রে দেখেছি যেখানে এই ধরণের জিনিসটি একটি সার্ভার (অংশ) মুছে ফেলেছিল। ড্যাশ দিয়ে শুরু হওয়া ফাইলগুলির বিপদ সম্পর্কে আপনি মানুষকে যথেষ্ট সতর্ক করতে পারবেন না। আমি যেখানে কাজ করেছি তার একটি জায়গা এমনকি এটি একটি সরকারী নিয়ম হিসাবে ছিল: কখনও কখনও কোনও ফাইল তৈরি করবেন না যার নাম "-f" বা "-r" দিয়ে শুরু হয়।
টনি

1
এইটির উত্তর হওয়া উচিত: এটি একমাত্র বহনযোগ্য উপায় ( --প্রতিটি আদেশের দ্বারা বোঝা যায় না, কেবল কয়েকটি)
অলিভিয়ার ডুলাক

@ অলিভিয়ারডুলাক আমি ভেবেছিলাম এটি --একটি বাশ জিনিস, সুতরাং এটি সমস্ত প্রোগ্রামের জন্য কাজ করা উচিত?
gsingh2011

@ gsingh2011 নং, কোডটি "-" কে "পতাকাগুলির সমাপ্তি" হিসাবে চিহ্নিত করে অ্যাপ্লিকেশনটিতে বাস করে কিনা তা স্থির করে এবং এটি সেভাবে আচরণ করে কিনা তা প্রতিটি অ্যাপ্লিকেশনের উপর নির্ভর করে।
আমোস শাপিরা

4

কেন কাজ করে না mkdir '-a'বা mkdir \-aকাজ করে না কারণ এই উভয় পদ্ধতিই (কোট বা ব্যাকস্ল্যাশ ব্যবহার করে) আপনার শেলকে (সম্ভবত bash) তাদের কোনও বিশেষ অর্থ প্রদান থেকে বিরত রাখতে ব্যবহৃত হয় । যেহেতু -aশেলটির জন্য বিশেষ কিছু বোঝায় না, তাই এটি কীভাবে পাস হবে তার কোনও প্রভাব নেই mkdir

যতদূর mkdirউদ্বিগ্ন, এটি শেলের কাছ থেকে আর্গুমেন্টের একটি তালিকা পেয়েছে এবং আপনি সেগুলি উদ্ধৃতিতে রেখেছিলেন কিনা এবং এটি ব্যাকস্ল্যাশ ছিল কিনা তা তা বলতে পারে না। এটি কেবল একটি যুক্তি দেখায় -a। এজন্য আপনার --অন্যান্য উত্তরগুলিতে বর্ণিত হিসাবে প্রয়োজন ।


-3

"স্লহ্যাক" থেকে উত্তর ছাড়াও আরও একটি কৌশল রয়েছে যা কখনও কখনও কাজ করে:

(বিভিন্ন) -এর মত qoutes 2 সেট মধ্যে প্রশ্নে ফাইলের নাম রাখুন "'-a'"বা '"-a"'

এই কাজ করে কি না তা প্রোগ্রামের উপর নির্ভর করে তবে প্রোগ্রামটি পসিক্স --বৈশিষ্ট্যটি সমর্থন না করে তবে এটি একটি সর্বশেষ অবলম্বন ।
POSIX পদ্ধতিটি সর্বদা পছন্দ করা হয় কারণ এটি 100% নির্ভরযোগ্য।


"POSIX পদ্ধতিটি সর্বদা পছন্দ করা হয় কারণ এটি 100% নির্ভরযোগ্য" " --অপশন প্রসেসিং বন্ধ করতে ব্যবহার করেও ধরে নেওয়া হয় যে ফাইলের নাম অনুসরণ করার জন্য আপনার কোনও বিকল্পের প্রয়োজন নেই, যা সর্বদা ক্ষেত্রে হয় না।
একটি সিভিএন

@ মাইকেলKjörling অবশ্যই ... তবে আমি ধরণের অনুমান করেছি যে এটি সুস্পষ্ট হবে।
টনি

4
এই ফাইল নামক তৈরি করবে '-a'বা "-a"অন্তত বাসদ-টাইপ সিস্টেমে,
nohillside

4
আপনি যেখানে কোনও OS / শেলটি কাজ করে তা উদ্ধৃত করতে পারেন ?
nohillside

1
যদি এটি কাজ করে, মনে হয় আপনার কাছে উদ্ধৃতি চিহ্ন দ্বারা ঘিরে থাকা নামগুলির সাথে ফাইলগুলি মোকাবেলা করার পরিবর্তে উল্লেখযোগ্য সমস্যা হবে।
মুহম্মোহেটেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.