ট্যারে বিকল্প ফ্ল্যাশগুলি পাস করার জন্য কেন অতিরিক্ত অতিরিক্ত ড্যাশ (-) ব্যবহার করবেন?


35

ডিরেক্টরিতে একটি টার ফাইল তৈরি করতে, tarকমান্ডটি সহ compress, verboseএবং fileবিকল্পগুলি এভাবে টাইপ করা যায়:

$ tar -cvf my.tar my_directory/

তবে এটি এটি এইভাবে কাজ করার জন্যও কাজ করে:

 $ tar cvf my.tar my_directory/

এটি হ'ল ড্যাশ (-) বিকল্পগুলির পূর্বে। আপনি কেন বিকল্প তালিকায় কোনও ড্যাশ (-) পাস করবেন?


উত্তর:


43

ইউনিক্স অ্যাপ্লিকেশনগুলিতে historতিহাসিকভাবে ব্যবহৃত হয়েছে এমন বিকল্পগুলির জন্য বিভিন্ন বিভিন্ন নিদর্শন রয়েছে। বেশ কয়েকটি পুরাতন যেমন টারের মতো একটি অবস্থানিক স্কিম ব্যবহার করে:

কমান্ড বিকল্প আর্গুমেন্ট

যেমন টার ব্যবহার হিসাবে

তার * কিছু * f "ফাইল" * " পরিচালনা করে ফাইলগুলি " * " পরিচালনা করে

বিভ্রান্তি এড়ানোর প্রথম প্রয়াসে, টার এবং পুরাতন পতাকাগুলি-যুক্তি শৈলীর সাথে কয়েকটি প্রোগ্রামের মাধ্যমে পতাকাগুলি ড্যাশযুক্ত করে সীমাবদ্ধ করতে দেওয়া হয়েছিল, তবে আমাদের বেশিরভাগ বয়স্ক ছেলেরা কেবল এটিকে উপেক্ষা করেছে।

কিছু অন্যান্য কমান্ডের আরও জটিল কমান্ড লাইন সিনট্যাক্স রয়েছে, যেমন ডিডি (1) যা পতাকা, সমান চিহ্ন, পথের নাম, আর্গুমেন্ট এবং একটি নাশপাতি গাছের একটি অংশবিশেষ ব্যবহার করে, সমস্ত বন্য পরিত্যক্ত with

বিএসডি এবং ইউনিক্সের পরবর্তী সংস্করণগুলিতে এটি কমবেশি '-' দিয়ে চিহ্নিত একক-বর্ণচিহ্নযুক্ত পতাকায় রূপান্তরিত হয়েছিল, তবে এটি বেশ কয়েকটি সমস্যা উপস্থাপন করতে শুরু করেছে:

  • পতাকাগুলি মনে রাখা কঠিন হতে পারে
  • কখনও কখনও আপনি আসলে '-' দিয়ে একটি নাম ব্যবহার করতে চেয়েছিলেন
  • এবং বিশেষত জিএনইউ সরঞ্জামগুলির দ্বারা, সম্ভাব্য পতাকাগুলির দ্বারা আরোপিত সীমাবদ্ধতাগুলি শুরু হয়েছিল। সুতরাং GNU সরঞ্জামগুলি GNU দীর্ঘ বিকল্পগুলি যুক্ত করেছে --output

তারপরে সান সিদ্ধান্ত নিয়েছে যে অতিরিক্ত '-' অপ্রয়োজনীয় এবং একক '-র সাহায্যে দীর্ঘ-স্টাইলের পতাকা ব্যবহার শুরু করে।

আর এভাবেই এখন জগাখিচুড়ি হয়ে গেল।


9
"এবং একটি নাশপাতি গাছের একটি অংশবিশেষ" আমার শুকনো প্রচেষ্টার চেয়ে ভাল। তুমি জিতেছ.
dmckee

1
সুন্দর historicalতিহাসিক প্রসঙ্গ।

1
আমি লক্ষ্য করেছি যে প্রচুর এক্স প্রোগ্রাম (Xorg থেকে X, সহ, যোগ করুন), একক সহ দীর্ঘ-স্টাইলের পতাকা ব্যবহার করে -। এটা কি সান থেকে?
ম্যাচটিএম

1
'নাশপাতি গাছের তিতির' অর্থ কী? (আমার কাছে কী দরকারী এবং সহজে বোঝার
কোনও

1
@ প্লানহ ইডিয়ম একটি traditionalতিহ্যবাহী ইংলিশ ক্রিসমাস ক্যারল "ক্রিসমাসের দ্বাদশ দিন" একটি অসাধারণ উপহারের গোছা তালিকাভুক্ত করে, "একটি নাশপাতি গাছের অংশবিশেষ" দিয়ে শেষ হয়। এটি একটি দীর্ঘ বাড়াবাড়ি তালিকা পরামর্শ দেয়।
চার্লি মার্টিন 15

8

আপনি স্ট্যান্ডার্ড ইউনিক্স পদ্ধতিতে টার অপশন দিতে পারেন tar -c -f foo -v -B file1 file2 file3যেখানে কমান্ড লাইনের শেষে অপশন এবং পরামিতি বা ফাইলের নামের মধ্যে পার্থক্য করার জন্য আপনাকে ড্যাশ প্রয়োজন। অথবা আপনি প্রথম যুক্তিতে সমস্ত বিকল্প একসাথে রাখতে পারেন, যার ক্ষেত্রে ড্যাশ alচ্ছিক।

তারপরেও রয়েছে ps, আপনি সিসভি-ইশ বিকল্পগুলি ব্যবহার করে যদি আপনি ড্যাশগুলি ব্যবহার করেন এবং আপনি বিএসডি-ইশ বিকল্পগুলি ব্যবহার করেন, তবে কেবল জিনিসগুলিকে আরও বিভ্রান্ত করার জন্য এগুলি ছেড়ে দিন।

এবং এমনকি কথা বলতে দেয় না find


2

কোনও বিকল্প প্যারামিটারের নাম এবং মানগুলির মধ্যে ছাঁটাই করতে ড্যাশ ব্যবহার করা হয়। আমার ধারণা এটি আরও একটি স্ট্যান্ডার্ড কনভেনশন।


1
আমি best-practiceট্যাগ যুক্ত করতে যাচ্ছিলাম কারণ আমি ভেবেছিলাম এটি এটি নেমে যেতে পারে।

1
@ মিল্কট্রেডার, সেরা অনুশীলনের বিষয়ে কথা বলার সময় এটি একটি কঠিন প্রশ্ন। মানক কনভেনশন অনুসরণ করা সত্যই সেরা অনুশীলন, তবে আপনি আপনার ক্ষেত্রে এটি করতে চান কিনা তা পরিষ্কার নয়। এটি আপনার দৃশ্যের উপর নির্ভর করবে। আপনি যদি শেলটিতে কিছু দ্রুত কমান্ড হ্যাক করে থাকেন তবে আপনি সম্ভবত এটি সম্পর্কে খুব বেশি যত্ন নেবেন না তবে আপনি যদি একটি গ্রন্থাগার লিখছেন তবে সুপরিচিত প্রতিষ্ঠিত সম্মেলনগুলি অনুসরণ করা গুরুত্বপূর্ণ কারণ এই লাইব্রেরিটি কীভাবে ব্যবহার করা হচ্ছে তার নিয়ন্ত্রণ আপনার নেই ক্লায়েন্টদের দ্বারা এই ক্ষেত্রে আপনার সমস্ত সম্ভাব্য কেসগুলি কাভার করা উচিত এবং বিকল্প নাম এবং মানগুলির মধ্যে বিচ্ছিন্নতা গুরুত্বপূর্ণ।

-1

ইউনিক্স কমান্ড লাইন বিকল্পগুলি ব্যবহার করতে চারটি পর্যন্ত কনভেনশন রয়েছে:

  1. -o -p -t (প্রতিটি বিকল্পের আগে ড্যাশ)
  2. -opt (বিকল্পগুলির একটি সেট আগে ড্যাশ)
  3. অপ্ট (বিকল্পগুলির সেটের আগে কোনও ড্যাশ নেই)
  4. --long-বিকল্প (বিকল্প নামের আগে ডাবল ড্যাশ)

উদাহরণ স্বরূপ:

$ tar -x -v -z -f package.tar.gz
$ tar -xvzf package.tar.gz
$ tar xvzf package.tar.gz
$ tar --extract -verbose -gzip -file package.tar.gz

1
সেই কনভেনশনটি কি কেবল ট্যারে প্রযোজ্য? এলএসের কী হবে? ls lrt কাজ করবে না তবে ls -lrt / ls -l -r -t কাজ করবে। কেন এমন?
শশাঙ্ক ব্যাস

চারটি কনভেনশন সমস্ত কমান্ডের জন্য কাজ করা উচিত।
জোনাসজেক

2
না তারা না। অন্য দিন আমি rm <filename> চেষ্টা করেছিলাম, এটিও কাজ করে না।
শশাঙ্ক ব্যাস

-2

অগ্রণী বিয়োগ / ড্যাশ সাইন (-) সহ আপনাকে বিকল্পগুলি সঠিক ক্রমে রাখা দরকার। বিয়োগ বিয়োগ ব্যতীত আপনার বিকল্পটি পরিবর্তন করতে পারে।

উদাহরণ স্বরূপ:

# tar -xvf yourfile.tar
# tar vxf yourfile.tar

এই উত্তরটি অর্ধেক সঠিক, কিন্তু আফাইক এটির মতো পতাকাগুলিই fএকটি যুক্তি গ্রহণ করে যার আদেশের বিষয়টি বিবেচনা করে। দেখুন unix.stackexchange.com/a/239120/3169
Mikel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.