কম্পিউটার টিউটোরিয়াল

উইন্ডোজ কমান্ড লাইন আউটপুট টেক্সট ফাইলে রিডাইরেক্ট করা

উইন্ডোজে আপনি যে কমান্ড বা ব্যাচ জব রান করেন সেগুলোর আচরণ লগ ও ট্রাবলশুট করার সবচেয়ে উপযোগী উপায়গুলোর একটি হল আউটপুটকে একটি ফাইলে রিডাইরেক্ট করা।

তবে, কমান্ড লাইন রাইট কে ফাইলে রিডাইরেক্ট করার কিছু ভিন্ন উপায় আছে। আপনি কোন অপশন বেছে নেবেন সেটি নির্ভর করে আপনি আপনার কমান্ড আউটপুট কীভাবে দেখতে চান।

উইন্ডোজ কমান্ড প্রম্পট আউটপুট কীভাবে কাজ করে

আপনি উইন্ডোজ কনসোলে (কমান্ড প্রম্পট) একটি কমান্ড টাইপ করলে, সেই কমান্ড থেকে আউটপুট দুটি আলাদা স্ট্রিমে যায়।

  • STDOUT: Standard Out হল সেখানে যেকোনো স্ট্যান্ডার্ড রেসপন্স কমান্ড থেকে যায়। উদাহরণস্বরূপ DIR কমান্ডের স্ট্যান্ডার্ড রেসপন্স হল একটি ডিরেক্টরির ভেতরের ফাইল লিস্ট।
  • STDERR: Standard Error হল সেখানে যেকোনো এরর মেসেজ যায় কমান্ডের সাথে কোনো সমস্যা থাকলে। উদাহরণস্বরূপ ডিরেক্টরিতে কোনো ফাইল না থাকলে, DIR কমান্ড "File Not Found" আউটপুট করবে Standard Error স্ট্রিমে।

আপনি আউটপুটকে উইন্ডোজে একটি ফাইলে রিডাইরেক্ট করতে পারেন এই দুটি আউটপুট স্ট্রিমের জন্যও।

স্ট্যান্ডার্ড আউটপুট নতুন ফাইলে রিডাইরেক্ট করা

এক কমান্ডের স্ট্যান্ডার্ড আউটপুটকে একটি ফাইলে রিডাইরেক্ট করার দুটি উপায় আছে। প্রথমটি হল কমান্ড আউটপুট রাইটকে প্রতিবার কমান্ড রান করলে একটি নতুন ফাইলে পাঠানো।

এটি করতে, কমান্ড প্রম্পট খুলুন এবং টাইপ করুন:

dir test.exe > myoutput.txt

> ক্যারেক্টারটি কনসোলে বলে দেয় STDOUT আউটপুট করতে আপনার দেওয়া নামের ফাইলে।

আপনি যখন এই কমান্ড রান করবেন, আপনি লক্ষ্য করবেন কমান্ড উইন্ডোতে কোনো রেসপন্স নেই এরর ছাড়া যে ফাইলটি অস্তিত্ব নেই।

এটি কারণ কমান্ডের স্ট্যান্ডার্ড আউটপুট myoutput.txt নামে একটি ফাইলে রিডাইরেক্ট করা হয়েছে। ফাইলটি এখন একই ডিরেক্টরিতে অস্তিত্ব রাখে যেখানে আপনি কমান্ডটি রান করেছেন। স্ট্যান্ডার্ড এরর আউটপুট স্বাভাবিকভাবেই ডিসপ্লে হচ্ছে।

দ্রষ্টব্য: কমান্ড প্রম্পটের জন্য এক্টিভ ডিরেক্টরি পরিবর্তন করার জন্য সাবধান रहুন কমান্ড রান করার আগে। এইভাবে আপনি জানবেন আউটপুট ফাইলগুলো কোথায় সংরক্ষিত হচ্ছে।

আপনি "myoutput.txt" কমান্ড উইন্ডোতে টাইপ করে স্ট্যান্ডার্ড আউটপুট দেখতে পারেন যা ফাইলে গেছে। এটি আপনার ডিফল্ট টেক্সট ফাইল ভিউয়ারটে টেক্সট ফাইলটি খুলবে। অধিকাংশ লোকের জন্য, এটি সাধারণত Notepad.exe।

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

স্ট্যান্ডার্ড আউটপুট রাইট একই ফাইলে রিডাইরেক্ট করা

আপনি যদি একই ফাইল ওভাররাইট করতে না চান? আরেকটি অপশন হল >> ব্যবহার করা >-এর বদলে আউটপুট ফাইলে রিডাইরেক্ট করার জন্য। এই উদাহরণে, আপনি টাইপ করবেন:

dir test.exe >> myoutput.txt

আপনি একই আউটপুট দেখবেন (এরর মাত্র)।

কিন্তু এই কেসে, আউটপুট ফাইল ওভাররাইট না করে, এই কমান্ড নতুন আউটপুটটি বিদ্যমান আউটপুট ফাইলের সাথে অ্যাপেন্ড করবে।

প্রতিবার আপনি একটি কমান্ড রান করলে এবং আউটপুটকে একটি ফাইলে অ্যাপেন্ড করলে, এটি নতুন স্ট্যান্ডার্ড আউটপুটকে বিদ্যমান ফাইলের শেষে লিখবে।

স্ট্যান্ডার্ড এরর একটি ফাইলে রিডাইরেক্ট করা

আপনি স্ট্যান্ডার্ড আউটপুট রাইটকে ফাইলে রিডাইরেক্ট করতে পারেন একইভাবে, স্ট্যান্ডার্ড এরর স্ট্রিমও একটি ফাইলে আউটপুট করতে পারেন।

এটি করতে, আপনাকে কমান্ডের শেষে 2> যোগ করতে হবে, তারপর আপনি যে আউটপুট এরর ফাইল তৈরি করতে চান সেটি।

এই উদাহরণে, আপনি কমান্ডটি টাইপ করবেন:

dir test.exe > myoutput.txt 2> output.err

এটি স্ট্যান্ডার্ড আউটপুট স্ট্রিমকে myoutput.txt-এ পাঠাবে, এবং স্ট্যান্ডার্ড এরর স্ট্রিমকে output.err-এ। ফলাফল হল কোনো আউটপুট স্ট্রিমই কনসোল উইন্ডোতে ডিসপ্লে হবena।

তবে, আপনি output.err টাইপ করে এরর মেসেজ দেখতে পারেন। এটি আপনার ডিফল্ট টেক্সট ফাইল ভিউয়ারে ফাইলটি খুলবে।

আপনি দেখতে পাচ্ছেন, কমান্ড থেকে যেকোনো এরর মেসেজ এরর ফাইলে আউটপুট হয়েছে। স্ট্যান্ডার্ড আউটপুটের মতই, আপনি >> ব্যবহার করতে পারেন পূর্বে রান করা কমান্ডের এররগুলোর সাথে এরর অ্যাপেন্ড করতে।

সকল আউটপুট রাইট একই ফাইলে রিডাইরেক্ট করা

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

আপনি যদি এই দুটি আউটপুট একই ফাইলে চান, তবে সেটিও করা যায়। এজন্য আপনাকে শুধু সকল আউটপুটকে একই ফাইলে রিডাইরেক্ট করতে হবে নিচের কমান্ড ব্যবহার করে।

dir test.exe 1> myoutput.txt 2>&1

এই কমান্ড কীভাবে কাজ করে:

  • স্ট্যান্ডার্ড আউটপুট আউটপুট নম্বর ১ দ্বারা চিহ্নিত আউটপুট ফাইলে ডাইরেক্ট করা হয়েছে।
  • নম্বর ২ দ্বারা চিহ্নিত স্ট্যান্ডার্ড এরর আউটপুট নম্বর ১ দ্বারা চিহ্নিত আউটপুট ফাইলে রিডাইরেক্ট করা হয়েছে।

এটি এরর আউটপুটকে স্ট্যান্ডার্ড আউটপুটের শেষে অ্যাপেন্ড করবে।

যেকোনো কমান্ডের সকল আউটপুট একটি ফাইলে দেখার এটি একটি উপযোগী উপায়।

স্ট্যান্ডার্ড বা এরর আউটপুট স্ট্রিম সাইলেন্স করা

আপনি স্ট্যান্ডার্ড আউটপুট বা স্ট্যান্ডার্ড এররকে বন্ধ করতে পারেন আউটপুটকে একটি ফাইলের বদলে NUL-এ রিডাইরেক্ট করে।

উপরের উদাহরণ ব্যবহার করে, আপনি যদি শুধু স্ট্যান্ডার্ড আউটপুট চান এবং কোনো স্ট্যান্ডার্ড এরর না চান, তবে নিচের কমান্ড ব্যবহার করতে পারেন:

dir test.exe 1> myoutput.txt 2>nul

এটি প্রথম উদাহরণের মত একই আউটপুট ফাইল দেবে যেখানে আপনি শুধু স্ট্যান্ডার্ড আউটপুট রিডাইরেক্ট করেছিলেন, কিন্তু এই কমান্ডে এরর কনসোলের ভিতরে ইকো হবে না। এটা কোনো এরর লগ ফাইলও তৈরি করবে না।

এটি উপযোগী যদি আপনি যেকোনো এরর দিয়ে আপনার খারাপ লাগে না এবং সেগুলো নয়স্যান্স বানাতে চান না।

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

  1. লিনাক্স কমান্ড লাইন থেকে টেক্সট ফাইলের কন্টেন্ট দেখার পদ্ধতি

  2. Windows 11-এ ফাইল এক্সপ্লোরার কমান্ড বার নিষ্ক্রিয় করার উপায়

  3. উইন্ডোজ ১০-এর পর কমান্ড লাইনে আনার পরিবর্তনসমূহ

  4. কমান্ড লাইন থেকে উবুন্টু আপগ্রেড করার পদ্ধতি