হাইফেন "-" এর অর্থ "টার xzf -" এর অর্থ কী?


23

কমান্ড লাইন থেকে ড্রপবক্স ইনস্টল করার চেষ্টা করার সময় আমি কমান্ডগুলি পড়ি

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

-এখানে মানে কি ? এটি কি পূর্ববর্তী ডিরেক্টরি?


9
কিছুটা প্যাডেন্ট্রি: আপনি যে বিকল্পটির বিষয়ে জিজ্ঞাসা করছেন তা হ'ল f -। এটি ম্যান পৃষ্ঠাগুলিতে উত্তর সন্ধান করা আরও সহজ করে তুলতে পারে।
স্টাডোগ

4
যদি আপনি ব্যাখ্যা হতে পারে কি, এটা সত্যিই সহায়ক হবে অবিকল ডকুমেন্টেশন সম্পর্কে আপনার কাছে অস্পষ্ট থাকে wgetএবং tar। এইভাবে, সংশ্লিষ্ট বিকাশকারীরা তাদের ডকুমেন্টেশনগুলি উন্নত করতে পারে যাতে ভবিষ্যতের ব্যবহারকারীরা আবার একই সমস্যার জন্য হোঁচট খেতে না পারেন। অন্য কথায়: একজন নায়ক হয়ে বিশ্বকে আরও ভাল স্থান তৈরি করুন!
Jörg ডব্লু মিটাগ

2
স্টারডিন ব্যবহার করার জন্য এটি একটি দুর্দান্ত ডিফল্ট হবে, তবে যেহেতু এটি heritageতিহ্য হ'ল টেপগুলি নিয়ে কাজ করা এটি এটি করেনি। এর পরিবর্তে এটি কাজ কিভাবে ফাইলগুলির সাথে (চ বিকল্প) শিখেছি এবং তারপর একটি আছে কনভেনশন অনুসরণ - (তৈরি করুন ক্ষেত্রে নির্যাস বা stdout- এ ক্ষেত্রে) stdin জন্য ফাইলের নাম এর জায়গায়
eckes

1
@eckes গনুহ আলকাতরা ক্ষেত্রে, stdin হল ডিফল্ট যদি না $TAPEসেট করা হয়।
ক্রাইলিস-হরতাল-

উত্তর:


42

কিছু কমান্ড -ফাইলের পরিবর্তে গ্রহণ করে, হয়:

আপনি যে কমান্ডটি একটি আর্কাইভ ফাইলটি ডাউনলোড করেছেন wgetসেটির সাথে ডাউনলোড করে এবং এটি দিয়ে আনপ্যাক করে tar। এই অর্জন করার জন্য, আউটপুট wgetহল পাইপ ( |) এর ইনপুট tar। এ কারণেই wgetকোনও ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে লেখেন এবং কোনও ফাইলের tarপরিবর্তে স্ট্যান্ডার্ড ইনপুট থেকে পড়েন।


আমি কেবল "কিছু আদেশ" না দিয়ে "সর্বাধিক আদেশ" বলি। আমি বিশ্বাস করি এটি পসিক্স বিকল্প সিনট্যাক্স স্পেসিফিকেশনের অংশ।
বার্মার

2
@ বার্মার হ্যাঁ এবং না: গাইডলাইন 13: যেসব ইউটিলিটিগুলি- অপারেশনগুলি ফাইলগুলি পড়তে বা লেখার জন্য খোলার জন্য প্রতিনিধিত্ব করতে ব্যবহার করে তাদের জন্য '-' অপারেন্ডটি কেবলমাত্র স্ট্যান্ডার্ড ইনপুট (বা স্ট্যান্ডার্ড আউটপুট যখন প্রসঙ্গ থেকে পরিষ্কার হয়) বোঝানো উচিত একটি আউটপুট ফাইল নিদিষ্ট হচ্ছে) অথবা একটি ফাইল নামে । সুতরাং যদি - কোনও "ফাইল বিকল্প" এর অপারেন্ড হয় এবং এর একটি বিশেষ অর্থ থাকে, তবে এটি অবশ্যই স্টিডিন / স্টাডআউটের হতে হবে। প্রোগ্রামটি বিশেষ কেস হিসাবে বিবেচনা না করে এবং কেবল ফাইলের -
সন্ধানে মুক্ত

(এবং সাধারণত সেই ক্ষেত্রে বিকল্প বাদ দেওয়া বিকল্প হিসাবে ব্যবহারের সমান হবে -)
বাকুরিউ

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

1
@ বারমার গাইডলাইনটি অনুসরণ করার একটি উপায় হ'ল আক্ষরিক ফাইলের নাম হিসাবে বিবেচনা করে বিশেষভাবে আচরণ করা অস্বীকার করা -। গাইডলাইনটির বিরুদ্ধে যাওয়ার একমাত্র উপায় হ'ল -বিশেষভাবে চিকিত্সা করা তবে গাইডলাইনের পরামর্শ অনুসারে কিছু অন্য অর্থ সহকারে।
এলিয়াহ কাগন

12

এটি কেবলমাত্র একটি ফাইলের নাম যা ইউনিক্সের অনেকগুলি প্রোগ্রাম "আসলে কোনও ফাইল খোলার পরিবর্তে stdin(বা লিখিত stdout) থেকে পড়ুন" হিসাবে ব্যাখ্যা করে ।

এর অর্থ প্রোগ্রামে প্রবাহিত হওয়া ইনপুট থেকে পড়া; আপনার ক্ষেত্রে, এটি উইজেটের আউটপুট।


6
আসলেই কি এটি একটি ফাইলের নাম ?
এরিক ডুমিনিল

7
@ এরিকডুমিনিল এটি এমন একটি ফাইলের নাম যে অর্থে প্রোগ্রামগুলি এটি এমন কোনও জায়গায় গ্রহণ করে যেখানে তারা অন্যথায় কেবল ফাইলের নামই গ্রহণ করবে তবে আপনি ঠিক বলেছেন যে এটি কোনও ডিরেক্টরিতে কোনও ফাইলের প্রকৃত নাম সম্পর্কে সত্যই নয়।
জোল

5
@EricDuminil: বিশেষ করে, প্রোগ্রাম যা এই কনভেনশন অনুসরণ স্বরূপ, আপনি ব্যবহার করতে হবে ./-যদি আপনি আসলে নামের একটি ফাইল খুলতে চান -
জার্গ ডব্লু মিটাগ

4
@ এরিকডুমিনিল আসলে: হ্যাঁ! এটি একটি ফাইলের নাম দেয় ; ইউনিক্স অর্থে, একটি ফাইল বর্ণনাকারী, এবং এটি ব্যবহারের জন্য সরবরাহ করা নাম। যদিও এটি ওএসের দৃষ্টিকোণ থেকে কোনও ফাইলের নাম নয়। শুধুমাত্র ব্যবহারকারীর দৃষ্টিকোণ থেকে। stdin-
মার্কাস মুলার

3
পুনঃটুইট /dev/stdinকিছু কার্নেল সুবিধা দ্বারা প্রদত্ত কেবল একটি সুবিধাজনক ফাইল নাম। আপনি যখন স্ট্রিন ব্যবহার করতে পছন্দ করেন এমন কোনও প্রোগ্রাম লেখেন তখন সাধারণত কোথাও কোনও fopen("/dev/stdin", "r") ঘটনা ঘটে না ; আপনি কেবল এগিয়ে যান এবং extern FILE* stdinআপনার libc শিরোনাম আপনাকে সরবরাহ করে যা ব্যবহার করে ; যাইহোক, এটি হল পূর্ণসংখ্যা ফাইল ডেস্ক্রিপ্টর 0
মার্কাস মুলার

5

-আর্গুমেন্ট প্রাপ্ত করতে tarনির্দিষ্ট করে আর্কাইভ থেকে পড়তে হবে stdinএকটি ফাইলের পরিবর্তে। থেকে গনুহ আলকাতরা ম্যানুয়াল :

আপনি যদি সংরক্ষণাগার-নাম- হিসাবে ব্যবহার করেন , স্ট্যান্ডার্ড ইনপুট থেকে সংরক্ষণাগারটি পড়েন (ফাইলগুলি তালিকাবদ্ধকরণ বা বের করার সময়)tar

অন্যান্য কমান্ডের একই আচরণ রয়েছে এবং এটি POSIX.1-2017 স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা হয়েছে :

গাইডলাইন 13 :

পড়া বা লেখার জন্য ফাইলগুলি উপস্থাপনের জন্য অপারেন্ডগুলি ব্যবহার করে এমন ইউটিলিটিগুলির জন্য, ' -' অপারেন্ডটি কেবলমাত্র স্ট্যান্ডার্ড ইনপুট (বা কোনও আউটপুট ফাইল নির্দিষ্ট করা হচ্ছে এমন প্রসঙ্গে পরিষ্কার হয়ে গেলে) স্ট্যান্ডার্ড আউটপুট অর্থ ব্যবহার করতে হবে নামে -

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.