নতুন ব্যবহারকারীদের সাহায্যের জন্য নিম্নলিখিতটি কিছুটা সরলীকৃত করা হয়েছে।
ভাল, প্রথমে, স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট ধারণাটি বোঝা দরকার।
লিনাক্স এবং অন্যান্য ইউনিক্স-এর মতো অপারেটিং সিস্টেমে প্রতিটি প্রক্রিয়াটির একটি স্ট্যান্ডার্ড ইনপুট ( stdin) এবং একটি স্ট্যান্ডার্ড আউটপুট থাকে stdout। স্বাভাবিক পরিস্থিতিটি হ'ল stdinআপনার কীবোর্ড এবং stdoutএটি আপনার স্ক্রিন বা টার্মিনাল উইন্ডো।
সুতরাং আপনি যখন চালান ls, এটি এটি আউটপুট নিক্ষেপ করা হবে stdout। আপনি যদি অন্য কিছু না করেন তবে এটি আপনার স্ক্রিন বা টার্মিনাল উইন্ডোতে যাবে এবং আপনি এটি দেখতে পাবেন।
এখন, কিছু লিনাক্স কমান্ড ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করে এবং এটি করার stdinজন্য ব্যবহার করে, আপনার পাঠ্য সম্পাদক এগুলির মধ্যে একটি। এটি stdinআপনার কীস্ট্রোকগুলি গ্রহণ করতে, জিনিসগুলি করার, এবং তারপরে স্টাফ লেখার জন্য পড়ে stdout।
তবে, অ-ইন্টারেক্টিভ বা "ফিল্টার" কমান্ডগুলি রয়েছে যা ইন্টারেক্টিভভাবে কাজ করে না, তবে একগুচ্ছ ডেটা চায়। এই আদেশগুলি সমস্ত stdinকিছু গ্রহণ করবে, এটিতে কিছু করবে এবং তারপরে এটি নিক্ষেপ করবেstdout
আসুন অন্য একটি কমান্ড দেখুন du- ডিস্ক ব্যবহারের জন্য দাঁড়িয়েছে। du /usrউদাহরণস্বরূপ, stdoutডিরেক্টরিটির প্রতিটি ফাইলের একটি তালিকা ( অন্য কোনও লিনাক্স কমান্ড পছন্দ করতে) প্রিন্ট আউট করবে এবং এর আকার হবে:
# du /usr
2312 /usr/games
124 /usr/lib/tc
692 /usr/lib/rygel-1.0
400 /usr/lib/apt/methods
40 /usr/lib/apt/solvers
444 /usr/lib/apt
6772 /usr/lib/gnash
আপনি ঠিক ব্যাট থেকে বলতে পারেন, এটি বাছাই করা হয় না এবং আপনি সম্ভবত এটি আকারের অনুসারে বাছাই করতে চান।
sortহ'ল সেই "ফিল্টার" কমান্ডগুলির মধ্যে একটি যা এখান থেকে অনেকগুলি স্টাফ নেবে stdinএবং এটি বাছাই করবে।
সুতরাং, আমরা যদি এটি করি:
# du /usr | sort -nr
আমরা এটি পেয়েছি, যা কিছুটা ভাল:
4213348 /usr
2070308 /usr/lib
1747764 /usr/share
583668 /usr/lib/vmware
501700 /usr/share/locale
366476 /usr/lib/x86_64-linux-gnu
318660 /usr/lib/libreoffice
295388 /usr/lib/vmware/modules
290376 /usr/lib/vmware/modules/binary
279056 /usr/lib/libreoffice/program
216980 /usr/share/icons
এবং আপনি এখন দেখতে পাবেন যে "পাইপ" stdoutএকটি কমান্ডের সাথে stdinঅন্যটির কমান্ডকে সংযুক্ত করে। সাধারণত আপনি এটির মতো পরিস্থিতিতে এটি ব্যবহার করবেন যেখানে আপনি কোনও কমান্ডের আউটপুট ফিল্টার করতে, বাছাই করতে বা অন্যথায় পরিচালনা করতে চান। আপনি একাধিক ফিল্টার-টাইপ কমান্ডের মাধ্যমে আউটপুট প্রক্রিয়া করতে চাইলে এগুলি ক্যাসকেড করা যায়।
যদি আপনি sortনিজেই টাইপ করেন তবে এটি থেকে পড়ার চেষ্টা করবে stdin। যেহেতু stdinআপনার কীবোর্ডের সাথে সংযুক্ত রয়েছে তাই এটি আপনার টাইপ করার জন্য অপেক্ষা করবে এবং আপনি কন্ট্রোল-ডি চাপ না দেওয়া পর্যন্ত জিনিসগুলি প্রক্রিয়া করবে। এটি আপনাকে অনুরোধ করবে না কারণ এটি আসলে ইন্টারেক্টিভভাবে ব্যবহার করার উদ্দেশ্যে নয়।
কোনও প্রোগ্রামের পক্ষে stdinইন্টারেক্টিভ কিনা তা বলা সম্ভব , তাই আপনি যদি নিজেরাই বা পাইপের শেষে এগুলি প্রকাশ করেন তবে কিছু প্রোগ্রাম আলাদাভাবে কাজ করতে পারে।
এছাড়াও, এমন কোনও প্রোগ্রামের পাইপিং যা কেবল ইন্টারেক্টিভভাবে কাজ করে, যেমন vi, আপনার খারাপ সময় আসবে।
পাইপগুলি পুনঃনির্দেশের চেয়ে আলাদা যে ডেটা কোনও কমান্ড না রেখে এক কমান্ড থেকে অন্য কমান্ডে স্থানান্তরিত হয়। সুতরাং, উপরের উদাহরণে, duএর আউটপুট কোথাও সংরক্ষণ করা হয় না। আপনি পাইপের সাহায্যে বেশিরভাগ সময় এটি চান না কারণ পাইপগুলি ব্যবহার করার কারণ হ'ল কোনওভাবে কমান্ডের আউটপুট প্রক্রিয়া করা - তবে, একটি কমান্ড রয়েছে teeযা আপনাকে আপনার পিষ্টক রাখতে এবং এটিও খেতে দেয়, এটি হবে এটি stdinউভয় থেকে কী গ্রহণ করে তা stdoutআপনার পছন্দসই একটি ফাইল অনুলিপি করুন । bashএম্পারস্যান্ড এবং বন্ধনী জড়িত এমন কিছু আরকেন সিনট্যাক্স থেকে আপনি সম্ভবত এটি করতে পারেন যা আমি জানিনা।
|হ'ল এটি কোনও নাম ব্যবহার করে না, এল-হ্যান্ড কমান্ড থেকে আউটপুটটি পাইপের আর-হাতের কমান্ডের জন্য সরাসরি ইনপুটগুলিতে প্রেরণ করা হয়।