উত্তর:
এই ক্ষেত্রে, এর অর্থ 'স্ট্যান্ডার্ড ইনপুট'। এটি কোনও সফ্টওয়্যার দ্বারা ব্যবহৃত হয় (উদাঃ tar) যখন কোনও ফাইল আর্গুমেন্ট প্রয়োজন হয় এবং পরিবর্তে আপনার স্টিডিন ব্যবহার করা প্রয়োজন। এটি শেল কনস্ট্রাক্ট নয় এবং এটি আপনি যে প্রোগ্রামটি ব্যবহার করছেন তার উপর নির্ভর করে। সন্দেহ থাকলে ম্যানপেজটি পরীক্ষা করে দেখুন!
এই উদাহরণে, স্ট্যান্ডার্ড ইনপুটটি -fবিকল্পের পক্ষে যুক্তি । -সমর্থিত নয় এমন ক্ষেত্রে আপনি tar xvf /proc/self/fd/0বা এর মতো কিছু ব্যবহার করে দূরে সরে যেতে পারেন tar xvf /dev/stdin(পরেরটি বিভিন্ন ক্ষেত্রে ব্যাপকভাবে সমর্থিত)।
সর্বজনীনভাবে 'স্ট্যান্ডার্ড ইনপুট' বোঝার জন্য এটির উপর নির্ভর করবেন না। যেহেতু এটি শেল দ্বারা ব্যাখ্যা করা হয়নি, তাই প্রতিটি প্রোগ্রাম এটি যেমন খুশি তাই মোকাবেলা করতে মুক্ত। কিছু ক্ষেত্রে এটি স্ট্যান্ডার্ড আউটপুট বা সম্পূর্ণ আলাদা কিছু: suএটিতে 'একটি লগইন শেল শুরু করুন' বোঝায়। অন্যান্য ক্ষেত্রে, এটি মোটেই ব্যাখ্যা করা হয় না। পেশী মেমরি আমাকে নামকরণের জন্য বেশ কয়েকটি ফাইল তৈরি করতে বাধ্য করেছে -কারণ কিছু প্রোগ্রামের কিছু সংস্করণ আমি ড্যাশ বুঝতে পারি নি।
STDOUTপ্রসঙ্গের উপর নির্ভর করে এর অর্থও হতে পারে ।
/dev/stdinবা /dev/stdoutআপনি যদি সত্যই ইনপুট / আউটপুট স্ট্রিম চান তা ব্যবহার করা যেতে পারে। মনে রাখবেন যে এটি একটি স্ট্রিম, প্রোগ্রামগুলি যে কোনও ফাইলের সন্ধান করতে চায় এটির সাথে ঠিক মতো কাজ করতে পারে না -(যেমন ffmpeg)
bash, হাইফেন হয় শেল ব্যাখ্যা। দেখুন অধ্যায় 3. বিশেষ অক্ষর - উন্নত ব্যাশ-স্ক্রিপ্টিং গাইড , তারপর "stdin বা stdout- এ থেকে / ফেরৎ" লেখা [ড্যাশ] বা অনুসন্ধান। bashআপনি ব্যবহার করে কোনও ফাইলের নাম আশা করে হাইফেন ব্যবহার করতে পারেন। এটি <| এর একটি সুস্পষ্ট পরিপূরক > আইএমএইচও
catহ্যান্ডলগুলি -(ম্যানপেজটি পরীক্ষা করুন)। একটি শেল অন্তর্নির্মিত সংস্করণ হতে catপারে বা নাও পারে তবে এটি পুরো শেলটি কঠোরভাবে নয়। এছাড়াও, যদি শেলটি পরিচালনা করা হয় তবে -আপনি প্রতিধ্বনি বলতে পারেন -এবং এটি অন্য কোনও ক্ষেত্রে প্রসারিত হবে। পরিবর্তে, এটি কেবল একটি ড্যাশ প্রতিধ্বনি দেয় (না /dev/stdinবা /proc/self/fd/0)। এবং echo test > -কেবল একটি ফাইল বলা হয় যা -এটি স্পষ্টভাবে এটি হ্যান্ডেল করে না creates ওহ, এবং আপনার তালিকাভুক্ত পৃষ্ঠাটি শেল দ্বারা পরিচালিত হ'ল বলে না , এটিতে আপনি এটি ব্যবহার করতে পারবেন catএবং diffউভয়ই স্পষ্টভাবে ড্যাশ বোঝে।
এই ক্ষেত্রে, এটি -আসলে বেশ অকেজো, ধরে নিয়ে আপনি লিনাক্স চালাচ্ছেন:
জিএনইউ টার (লিনাক্সের সংস্করণ) স্ট্যান্ডার্ড ইনপুট থেকে এটির ইনপুট গ্রহণ করে। আপনি যদি এই আচরণটি না চান এবং ফাইলের নাম কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস করতে চান তবে আপনাকে পতাকাটি নির্দিষ্ট করতে হবে f:
tar xf filename
সুতরাং এই হিসাবে একই
tar x < filename
অথবা, যদি আপনার উদাহরণ হিসাবে ইনপুটটি জিপ করা থাকে:
gzip -dc filename | tar x
fএখানে পতাকাটি মোটেও নির্দিষ্ট করা অর্থবহ নয়, তবে এটি নির্দিষ্ট করা হওয়ায় ফাইলের নামটি -স্ট্যান্ডার্ড ইনপুট থেকে পড়তে চাইছে তা বোঝাতে (অন্য উত্তর দেখুন) দেওয়া দরকার। সুতরাং, পুনরাবৃত্তি করতে, এটি অনর্থক এবং কিছুটা অদ্ভুত।
তদতিরিক্ত, উপরের লাইনটি সরল করা যেতে পারে কারণ পতাকাটি gzipউল্লেখ করে জিএনইউ ট্যারে নিজের মাধ্যমে ইনপুট প্রবাহিত করতে বলা যেতে পারে z:
tar xfz filename
- gzipস্পষ্টভাবে কল করার দরকার নেই ।
tarগেছে zবিকল্প।
tartapeতিহাসিক কারণে প্রথম টেপ ড্রাইভে ডিফল্ট থাকে।
/dev/sa0এ ফ্রিবিএসডি 9.0 এ /dev/rst0)। এআইএক্স 7.1 এর ডিফল্ট /dev/rmt0। MINIX3 এ ডিফল্ট /dev/sa0। (আমি প্রতিটি ক্ষেত্রে সর্বশেষ ওএস সংস্করণ পরীক্ষা করেছি, এগুলি "পুরানো মেনফ্রেমস" নয়।) সোলারিস একটি ফাইলের মাধ্যমে কনফিগারযোগ্য /etc, যা আমি টেপ ড্রাইভে ডিফল্ট বলে মনে করি। জিএনইউ টার, শিলিং টার, ওএসএক্স এবং ব্যাসিবক্স ডিফল্ট স্টিডিন / স্টাডাউটে।
tarডিফল্ট হয়ে পুনরায় কম্পাইল করেছি । :)
-করতে হবে: কমান্ডের শেষে থাকা দরকার নেই। উদাহরণস্বরূপ:ls -l | diff - /old_ls_output.txt।