পাইপ: জিএনইউ / লিনাক্সে সেগুলি ব্যবহার শুরু করার জন্য আপনার যা জানা দরকার

পাইপলাইন

উনা পাইপ বা পাইপই আসলে ইউনিক্স / লিনাক্সের জন্য উপলব্ধ একটি পাইপলাইন এবং খুব ব্যবহারিক। তবে পাইপ কী তা পুরোপুরি বুঝতে, আপনার জানা উচিত যে * নিক্স পরিবেশে এটিতে 3 বিল্ট-ইন ডেটা স্ট্রিম রয়েছে। এটি, যারা জানেন না তাদের জন্য, অর্থ ডেটা তিনটি পয়েন্টে বা থেকে ভ্রমণ করতে পারে।

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

আমি যে পয়েন্টগুলির বিষয়ে বলছিলাম বা ডেটা স্ট্রিম, হ'ল:

  • stdin: 0 এর সাথে সঙ্গতিপূর্ণ এবং এটি স্ট্যান্ডার্ড ইনপুট। সাধারণত, * নিক্স সিস্টেমের মানক ইনপুট হ'ল কীবোর্ড। অর্থাৎ, আপনি যা টাইপ করবেন তা ব্যবহৃত তথ্য হবে। তার সাথে একটি বিশেষ ডিভাইস যুক্ত রয়েছে যা / দেব / স্টিডিন।
  • stdout: 1 এর সাথে চিহ্নিত, এটি স্ট্যান্ডার্ড আউটপুট। সাধারণত এটি আপনার কম্পিউটারের মনিটর বা স্ক্রিনের সাথে মিলে যায়, যেখানে আপনি তথ্যটি দেখতে পারেন। উদাহরণস্বরূপ, আপনি যখন একটি এলএস কমান্ড চালান তখন বিষয়বস্তুর তালিকা পর্দায় প্রদর্শিত হবে, তাই না? সম্পর্কিত ডিভাইসটি হল / dev / stdout।
  • stderr: 2 দিয়ে চিহ্নিত, এটি স্ট্যান্ডার্ড ত্রুটি আউটপুট, যখন কোনও প্রোগ্রামে ত্রুটি ঘটে। সম্পর্কিত ডিভাইসটি হল / dev / stderr।

পাইপলাইনের সাহায্যে আপনি একটি কমান্ডের স্ট্যান্ডার্ড আউটপুট বা স্টডআউটকে সরাসরি অন্যের স্ট্যান্ডার্ড ইনপুটটিতে যেতে পারেন। এটি হল, আপনি একটি প্রোগ্রামকে অন্য একটি ফিড তৈরি করতে পারেন। কীবোর্ড প্রবেশ করানো প্যারামিটারগুলি ব্যবহার না করে, একটি পাইপ | দ্বারা প্রতিনিধিত্ব করা এই পাইপলাইনের মাধ্যমে পূর্ববর্তী কমান্ড দ্বারা উত্পন্ন তথ্য সরবরাহ করে

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

ls -l | grep doc

সুতরাং আপনাকে সমস্ত নাম দেখানোর পরিবর্তে এটি আপনাকে কেবল দেখায় যেগুলি আপনাকে সত্যিই আগ্রহী। কোনও ফাইলের সামগ্রীতে আপনি এটি করতে পারেন do কল্পনা করুন যে আপনি কেবল ফায়ারফক্স নামের প্রক্রিয়াগুলির তথ্য দেখতে চান এবং সমস্তটিই নয়:

ps aux | grep firefox

স্ক্রিনে PS প্রোগ্রামের সমস্ত আউটপুট দেখানোর পরিবর্তে (stdout) এটি কী করে তা গ্রেপ ফিল্টারটির ইনপুটটির দিকে চ্যানেল করে এবং কেবলমাত্র এক্ষেত্রে ফায়ার ফক্সের সাথে কী সামঞ্জস্য করে তা আউটপুটে দেখায় ...

আপনি যদি চান, আপনি ব্যবহার করতে পারেন বিভিন্ন পাইপ এক কমান্ডের আউটপুট অন্য দ্বিতীয় কমান্ডের ইনপুট আনতে এবং দ্বিতীয় সেকেন্ডের আউটপুটটিকে তৃতীয়টির ইনপুট এনে দেয় এবং এই জাতীয়। উদাহরণ স্বরূপ:

cat libro | grep love | more

যেমন আপনি দেখতে, সম্ভাবনা অনেক, যা আপনি কল্পনা করতে পারেন এবং অনুমোদিত তা সমস্ত। এমনকি কোনও ফাইলের প্রথম এবং শেষ লাইনগুলিও দেখান, তালিকা থেকে আসা ডাব্লুসিটিতে প্রবেশ করা লাইনগুলি গণনা করুন এবং এমনকি তাদের সাজানও:

cat listado | head
cat listado | tail
cat listado | wc -l
cat listado | sort

আপনি কাজ করতে পারেন | এবং এর সাথে ত্রুটিগুলি এবং উদাহরণস্বরূপ কোনও স্ক্রিপ্টের আউটপুটে শব্দটি সতর্কতা সন্ধান করুন যদি এটি ব্যর্থ হয়:

./miscript |& grep alerta 

এবং সবশেষে, পাইপগুলির সাথে নিবিড়ভাবে সংযুক্ত দুটি কমান্ড রয়েছে টি এবং xargs এবং তারা এগুলির সম্ভাব্যতা আরও বাড়িয়ে দিতে পারে। টি-র ক্ষেত্রে, এটি যা অনুমতি দেবে তা হ'ল স্ট্যান্ডার্ড আউটপুটে পূর্ববর্তী প্রোগ্রামের ফলাফলটি প্রদর্শন করা যাতে আপনি এটি দেখতে পারেন এবং এটির পাশাপাশি এটি এটি অন্য কোনও ফাইলে পাইপ করতে পারে। উদাহরণস্বরূপ হ'ল যদি আপনি কোনও ডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করেন এবং এই মুহুর্তে ls -l এর আউটপুট দেখতে চান এবং এটি একটি ফাইল তালিকাতে সংরক্ষণও করে থাকেন t txt:

ls -l | tee listado.txt

আপনি যদি টি ব্যবহার না করেন তবে আপনি আপনার কনসোলের আউটপুট দেখতে পারবেন না ...

Y xargs এটি কিছু ক্ষেত্রে আরও বেশি আকর্ষণীয়। এই ক্ষেত্রে এটি পাইপলাইনের মাধ্যমে প্রাপ্ত স্ট্যান্ডার্ড ইনপুট থেকে একটি কমান্ড তৈরি করতে সক্ষম হয়। অন্য কথায়, এটি পূর্ববর্তী প্রোগ্রামটি তার আউটপুট মাধ্যমে চালু করে এবং আর্গুমেন্ট হিসাবে অন্য কমান্ডের পরিবর্তে পাইপলাইনের মাধ্যমে xargs পৌঁছায় যা সক্ষম হয় uring

তবুও পাও না? আপনি এটি একটি উদাহরণ দিয়ে আরও ভাল দেখতে পাবেন। কল্পনা করুন যে আপনি ডিরেক্টরি, ডিস্ক বা পার্টিশন থেকে সমস্ত জঘন্য thumbs.db ফাইল সরাতে চান। যদি অনেকগুলি থাকে তবে সেগুলি ম্যানুয়ালি মুছে ফেলার জন্য rm কমান্ড সহ এক এক করে যাওয়া অসম্ভব। তবে xargs দিয়ে আপনি সবকিছু স্বয়ংক্রিয় করতে পারেন। এবং আপনি এটি সনাক্ত করার জন্য এটি ব্যবহার করে এটি করতে পারেন, xargs এর ইনপুটটির মাধ্যমে আউটপুট প্রেরণ করুন এবং এটি পরিবর্তে আরএমকে যুক্তি হিসাবে নাম দেবে। সুতরাং, সমস্ত অবস্থিত স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে:

find ./ -name "thumbs.db" | xargs rm

উদাহরণস্বরূপ, ধরুন / home/name/thumbs.db, /media/test/thumbs.db এবং /tmp/thumbs.db সন্ধান করুন। ঠিক আছে, xargs তাদের rm এ পৌঁছে দিচ্ছে যেন তারা যুক্তিযুক্ত। এটি, যেন আমরা কার্যকর করেছি: rm / home/name/thumbs.db, তারপরে rm /media/test/thumbs.db এবং তারপরে rm /tmp/thumbs.db।


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়ী: AB ইন্টারনেট নেটওয়ার্ক 2008 SL
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   জোসে তিনি বলেন

    দুর্দান্ত, লিনাক্স ব্যবহারকারীদের জন্য এই তথ্যটি অত্যন্ত গুরুত্বপূর্ণ

  2.   ড্যানিয়েল তিনি বলেন

    কী ভাল নিবন্ধ, এখনই আমি লিনাক্স কমান্ড লাইন বইয়ের I / O পুনঃনির্দেশের অধ্যয়ন করছি। পাইপগুলি (পাইপলাইন) এবং তিনটি ডেটা স্ট্রিম সম্পর্কে এটি আমার কাছে পরিষ্কার। অবদান প্রশংসা করা হয়। শুভেচ্ছা।

  3.   01101001b তিনি বলেন

    Xargs সহ উদাহরণটি গ্লোভের মতো আমাকে উপযুক্ত করে তোলে। ঠিক আজ আমি একাধিক প্রস্থান যা আমাকে "অংশে" প্রেরণ করতে হয়েছিল তার বিশদটি নিয়ে কাজ করছি। xargs একটি পিন্টুরিটা হাঁটা।
    সুপার কৃতজ্ঞ!