কীভাবে লিনাক্স আই/ও (ইনপুট/আউটপুট) পুনর্নির্দেশ কাজ করে তার মূল বিষয়গুলি শিখুন


লিনাক্স প্রশাসনের অধীনে অন্যতম গুরুত্বপূর্ণ এবং আকর্ষণীয় বিষয় হ'ল I/O পুনঃনির্দেশ। কমান্ড লাইনের এই বৈশিষ্ট্যটি আপনাকে এবং/অথবা ফাইলগুলি থেকে ইনপুট এবং/অথবা কমান্ডের আউটপুট পুনঃনির্দেশ করতে সক্ষম করে বা পাইপগুলি ব্যবহার করে একসাথে একাধিক কমান্ডে যোগদান করে যা "কমান্ড পাইপলাইন" হিসাবে পরিচিত form

আমরা যে সমস্ত কমান্ডগুলি চালিত করি সেগুলি দুটি ধরণের আউটপুট উত্পাদন করে:

  1. কমান্ডের ফলাফল - ডেটা প্রোগ্রামটি তৈরির জন্য ডিজাইন করা হয়েছে এবং
  2. প্রোগ্রামের স্থিতি এবং ত্রুটি বার্তাগুলি যা ব্যবহারকারীকে প্রোগ্রামের প্রয়োগের বিশদটি জানায়

লিনাক্স এবং অন্যান্য ইউনিক্স-মতো সিস্টেমে নীচে তিনটি ডিফল্ট ফাইল রয়েছে যা শেল দ্বারা ফাইল বর্ণনাকারী নম্বর ব্যবহার করে সনাক্ত করা যায়:

  1. স্টিডিন বা 0 - এটি কীবোর্ডের সাথে সংযুক্ত, বেশিরভাগ প্রোগ্রাম এই ফাইলটি থেকে ইনপুট পড়ে।
  2. স্টাডাউট বা 1 - এটি স্ক্রিনের সাথে সংযুক্ত এবং সমস্ত প্রোগ্রাম এই ফলাফলটিতে এই ফাইলে প্রেরণ করে এবং
  3. স্ট্যাডার বা 2 - প্রোগ্রামগুলি এই ফাইলে স্থিতি/ত্রুটি বার্তা প্রেরণ করে যা পর্দার সাথেও সংযুক্ত রয়েছে

অতএব, I/O পুনঃনির্দেশ আপনাকে কমান্ডের ইনপুট উত্সের পাশাপাশি তার আউটপুট এবং ত্রুটি বার্তাগুলি যেখানে প্রেরণ করা যায় তা পরিবর্তন করতে দেয়। এবং এটি "<" এবং ">" পুনর্নির্দেশ অপারেটরদের দ্বারা সম্ভব হয়েছে।

লিনাক্সে ফাইলের কাছে স্ট্যান্ডার্ড আউটপুট কীভাবে পুনর্নির্দেশ করা যায়

আপনি নীচের উদাহরণ হিসাবে স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ করতে পারেন, এখানে, আমরা পরবর্তী তদন্তের জন্য শীর্ষ কমান্ডের আউটপুট সংরক্ষণ করতে চাই:

$ top -bn 5 >top.log

যেখানে পতাকা:

  1. -b - ব্যাচ মোডে চলার জন্য শীর্ষকে সক্ষম করে, যাতে আপনি এর আউটপুট কোনও ফাইল বা অন্য কমান্ডে পুনর্নির্দেশ করতে পারেন
  2. -n - কমান্ডটি শেষ হওয়ার আগে পুনরাবৃত্তির সংখ্যা নির্দিষ্ট করে।

আপনি বিড়াল কমান্ড ব্যবহার করে টপ.লগ ফাইলের বিষয়বস্তু নিম্নরূপ দেখতে পারেন:

$ cat top.log

কমান্ডের আউটপুট সংযোজন করতে “>>” অপারেটরটি ব্যবহার করুন।

উদাহরণস্বরূপ টপ.লগ ফাইলের উপরে শীর্ষ কমান্ডের আউটপুট যুক্ত করতে বিশেষত স্ক্রিপ্টের মধ্যে (বা কমান্ড লাইনে), নীচের লাইনটি প্রবেশ করান:

$ top -bn 5 >>top.log

দ্রষ্টব্য: ফাইল বিবরণকারী নম্বর ব্যবহার করে উপরের আউটপুট পুনর্নির্দেশ কমান্ডটি একই:

$ top -bn 5 1>top.log

লিনাক্সে ফাইলের স্ট্যান্ডার্ড ত্রুটি কীভাবে পুনর্নির্দেশ করা যায়

কোনও কমান্ডের স্ট্যান্ডার্ড ত্রুটি পুনর্নির্দেশের জন্য, শেলটির জন্য আপনি কী করতে চেষ্টা করছেন তা বোঝার জন্য আপনাকে স্পষ্টভাবে ফাইল বর্ণনাকারী নম্বর, 2 উল্লেখ করতে হবে।

উদাহরণস্বরূপ নীচের ls কমান্ডটি কোনও ত্রুটি উত্পন্ন করবে যখন রুট সুবিধাগুলি ছাড়াই একটি সাধারণ সিস্টেম ব্যবহারকারী দ্বারা কার্যকর করা হয়:

$ ls -l /root/

আপনি নীচের মতো কোনও ফাইলের স্ট্যান্ডার্ড ত্রুটি পুনর্নির্দেশ করতে পারেন:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

স্ট্যান্ডার্ড ত্রুটি সংযোজন করতে, নীচের কমান্ডটি ব্যবহার করুন:

$ ls -l /root/ 2>>ls-error.log

স্ট্যান্ডার্ড আউটপুট/ত্রুটিটিকে একটি ফাইলে পুনর্নির্দেশ করার উপায়

কমান্ডের সমস্ত আউটপুট (উভয় স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি) একক ফাইলে ক্যাপচার করাও সম্ভব। ফাইল বর্ণনাকারী নম্বর নির্দিষ্ট করে এটি দুটি সম্ভাব্য উপায়ে করা যেতে পারে:

প্রথমটি হ'ল তুলনামূলকভাবে পুরানো পদ্ধতি যা নিম্নলিখিত হিসাবে কাজ করে:

$ ls -l /root/ >ls-error.log 2>&1

উপরের কমান্ডটির অর্থ শেলটি প্রথমে ls-error.log (> ls-error.log ব্যবহার করে) ফাইলটিতে ls কমান্ডের আউটপুট প্রেরণ করবে এবং তারপরে সমস্ত ফাইল ত্রুটি বার্তা ফাইল বিবরণীতে লিখবে shell 2 (স্ট্যান্ডার্ড আউটপুট) যা ls-error.log ( 2> & 1 ব্যবহার করে) ফাইলে পুনঃনির্দেশ করা হয়েছে। মানক ত্রুটিটি বোঝাও স্ট্যান্ডার্ড আউটপুট হিসাবে একই ফাইলে প্রেরণ করা হয়।

২. দ্বিতীয় এবং সরাসরি পদ্ধতিটি হ'ল:

$ ls -l /root/ &>ls-error.log

আপনি স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি যেমন একটি একক ফাইলে সংযোজন করতে পারেন:

$ ls -l /root/ &>>ls-error.log

স্ট্যান্ডার্ড ইনপুট কীভাবে ফাইলে ডাইরেক্ট করবেন

বেশিরভাগ ক্ষেত্রে না যদি সমস্ত কমান্ড স্ট্যান্ডার্ড ইনপুট থেকে তাদের ইনপুট পায় এবং ডিফল্টরূপে মানক ইনপুট কীবোর্ডের সাথে সংযুক্ত থাকে।

কীবোর্ড ব্যতীত অন্য কোনও ফাইল থেকে স্ট্যান্ডার্ড ইনপুট পুনঃনির্দেশ করতে, নীচের মতো "<" অপারেটরটি ব্যবহার করুন:

$ cat <domains.list 

স্ট্যান্ডার্ড ইনপুট/আউটপুট কীভাবে ফাইলে ডাইরেক্ট করবেন

আপনি নীচের মতো সাজানোর কমান্ড ব্যবহার করে একই সময়ে স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ সঞ্চালন করতে পারেন:

$ sort <domains.list >sort.output

পাইপ ব্যবহার করে কীভাবে আই/ও পুনঃনির্দেশ ব্যবহার করবেন

অন্য কমান্ডের আউটপুটটিকে অন্যটির ইনপুট হিসাবে পুনর্নির্দেশ করতে আপনি পাইপগুলি ব্যবহার করতে পারেন, এটি জটিল ক্রিয়াকলাপের জন্য দরকারী কমান্ড লাইন তৈরির একটি শক্তিশালী উপায়।

উদাহরণস্বরূপ, নীচের কমান্ডটি সম্প্রতি পাঁচটি সংশোধিত ফাইলের শীর্ষস্থানীয় তালিকাবদ্ধ করবে।

$ ls -lt | head -n 5 

এখানে, বিকল্পগুলি:

  1. -l - দীর্ঘ তালিকা বিন্যাস সক্ষম করে
  2. -t - সর্বাধিক নতুন ফাইলগুলির মাধ্যমে সময় অনুসারে বাছাই করা হবে
  3. -n - দেখানোর জন্য শিরোনাম রেখার সংখ্যা নির্দিষ্ট করে

পাইপলাইন নির্মাণের জন্য গুরুত্বপূর্ণ কমান্ড

এখানে, আমরা কমান্ড পাইপলাইন নির্মাণের জন্য দুটি গুরুত্বপূর্ণ কমান্ড সংক্ষেপে পর্যালোচনা করব এবং সেগুলি হ'ল:

xargs যা স্ট্যান্ডার্ড ইনপুট থেকে কমান্ড লাইনগুলি তৈরি এবং কার্যকর করতে ব্যবহৃত হয়। নীচে পাইপলাইনের উদাহরণ রয়েছে যা এক্সার্গস ব্যবহার করে, এই কমান্ডটি লিনাক্সের একাধিক ডিরেক্টরিতে একটি ফাইল অনুলিপি করতে ব্যবহৃত হয়:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

এবং বিকল্পগুলি:

  1. -n 1 - xargs নির্দেশ দেয় প্রতি কমান্ড লাইনে সর্বাধিক একটি যুক্তি ব্যবহার করতে এবং সিপি কমান্ডে প্রেরণ
  2. cp - ফাইলটি অনুলিপি করে
  3. -v - অনুলিপি আদেশের অগ্রগতি প্রদর্শন করে

আরও ব্যবহারের বিকল্প এবং তথ্যের জন্য, xargs ম্যান পৃষ্ঠাটি পড়ুন:

$ man xargs 

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

$ echo "Testing how tee command works" | tee file1 

লিনাক্স সিস্টেম প্রশাসনের কাজগুলি।

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

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