Linux/C2/Redirection-Pipes/Bengali

From Script | Spoken-Tutorial
Revision as of 12:17, 29 November 2012 by 10.102.152.95 (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time Narration
00:00:00 Redirection এবং Pipes সংক্রান্ত এই কথ্য টিউটোরিয়ালটিতে আপনাদের স্বাগত জানাচ্ছি ।
00:07:00 আমি উবুন্টু ১০.০৪ ব্যবহার করছি ।
00:09:00 আমি ধরে নিচ্ছি, লিনাক্স অপারেটিং সিস্টেম এবং মৌলিক নির্দেশাবলী সম্পর্কে আপনার কিছু ধারণা আছে ।
00:16:00 সেই সংক্রান্ত মৌখিক টিউটোরিয়াল এই ওয়েবসাইট-টিতে প্রাপ্তিসাধ্য ।
00:22:00 মনে রাখবেন যে লিনাক্স case sensitive ।
00:25:00 অন্যথায় উল্লেখ করা না থাকলে এই টিউটোরিয়ালটিতে ব্যবহৃত সমস্ত র্নিদেশাবলী ছোট হাতের অক্ষরে আছে ।
00:32:00 লিনাক্স-এ অধিকাংশ কাজ-ই টার্মিনাল-এর মাধ্যমে হয় ।
00:35:00 যখন আমরা একটি কমান্ড চালাতে চাই, আমরা কিবোর্ডের মাধ্যমে সেটি লিখি ।
00:39:00 ধরুন, আমরা তারিখ এবং সময় দেখতে চাইছি ।
00:41:00 কিবোর্ড-এর মাধ্যমে "date" লিখুন এবং এন্টার টিপুন ।
00:46:00 সাধারণত আমরা কিবোর্ড-এর মাধ্যমে ইনপুট দিয়ে থাকি ।
00:48:00 অনুরূপভাবে, কমান্ডের আউটপুট, টার্মিনাল উইন্ডোত়ে প্রদর্শিত হয় ।
00:56:00 এছাড়াও কোনো কমান্ড চানালোর সময় কিছু ত্রুটি ঘটতে পারে ।
00:59:00 উদাহরস্বরূপ, লিখুন "cat space aaa" । এন্টার টিপুন ।
01:05:00 aaa নামক কোনো ফাইলের অস্তিত্ব নেই ।
01:08:00 সেই ত্রুটি- সংক্রান্ত বার্তা এখানে দেখা যাচ্ছে ।
01:10:00 এখন এই ত্রুটি-টিও টার্মিনাল উইন্ডোর উপর দেখা যাচ্ছে ।
01:20:00 কমান্ড সংক্রান্ত তিনটি বিশেষ কর্ম হল ইনপুট নেওয়া, আউটপুট দেখানো এবং error বা ত্রুটি রিপোর্ট করা ।
01:24:00 Redirection শেখার পূর্বে আমাদের দুটি গুরুত্বপূর্ণ ধারণা সম্পর্কে জানা উচিত। সেগুলি হল - স্ট্রিম এবং file descriptor ।
01:31:00 লিনাক্স শেল যেমন Bash, অক্ষরের স্ট্রিম-এর মাধ্যমে ইনপুট গ্রহণ করে ও আউটপুট পাঠায় ।
01:37:00 কোনো অক্ষর তার আগের এবং পরের অক্ষরের উপর নির্ভর করে না ।
01:41:00 স্ট্রিম-গুলি ফাইল IO পদ্ধতির দ্বারা ব্যবহার করা হয় ।
01:44:00 অক্ষরের স্ট্রিম-টি কোনো একটি ফাইল বা কীবোর্ড বা উইন্ডো ইত্যাদি কোথা থেকে আসছে বা কোথায় যাচ্ছে, ত়া কোনো মূল্য রাখে না ।
01:51:00 লিনাক্স-এ প্রত্যেক খোলা ফাইল-এর সঙ্গে একটি পূর্ণসংখ্যা সংখ্যা যুক্ত থাকে ।
01:57:00 এটিকে file descriptor বলা হয় ।
02:05:00 লিনাক্স শেল তিনটি স্ট্যান্ডার্ড I/O স্ট্রিম ব্যবহার করে ।
02:08:00 প্রতিটি একটি সুনির্দিষ্ট ফাইল descriptor-এর সাথে যুক্ত থাকে ।
02:12:00 stdin হল স্ট্যান্ডার্ড ইনপুট স্ট্রিম ।
02:15:00 এটি কমান্ড-এ ইনপুট দেয় ।
02:17:00 এর ফাইল descriptor মান 0 ।
02:19:00 stdout হল স্ট্যান্ডার্ড আউটপুট স্ট্রিম ।
02:22:00 এটি কমান্ড-এর আউটপুট দেখায় । এর ফাইল বর্ণনাকারীর মান ১ ।
02:26:00 stderr হল স্ট্যান্ডার্ড এরর স্ট্রিম । এটি কমান্ড-এর ত্রুটি-গুলি প্রদর্শন করে । এর ফাইল descriptor হল ২ ।
02:36:00 ইনপুট স্ট্রিম প্রোগ্রামের ইনপুট প্রদান করে ।
02:40:00 সাধারনতঃ এটি টার্মিনাল keystrokes থেকে ইনপুট নেয় ।
02:44:00 আউটপুট স্ট্রিম সাধারনতঃ টার্মিনালে অক্ষর প্রিন্ট করে ।
02:47:00 আগে টার্মিনাল ছিল ASCII typewriter বা display terminal ।
02:52:00 কিন্তু এখন এটি গ্রাফিকাল ডেস্কটপ-এর উপর একটি টেক্সট উইন্ডো ।
02:56:00 আমরা দেখেছি যে ৩ টি স্ট্রিমই স্বাভাবিকভাবে কোনো ফাইল-এর সাথে সংযুক্ত থাকে ।
03:01:00 কিন্তু লিনাক্সে আমরা এটির পরিবর্তন করতে পারি ।
03:04:00 আমরা এই ৩-টি স্ট্রিম অন্যান্য ফাইলের সাথে সংযুক্ত করতে পারি ।
03:07:00 এই প্রক্রিয়া-টিকে redirection বা পুনর্নির্দেশনা বলা হয় ।
03:09:00 এখন দেখা যাক কিভাবে এই ৩ স্ট্রিম-এ পুনর্নির্দেশনা করা যায় ।
03:14:00 প্রথমে দেখা যাক স্ট্যান্ডার্ড ইনপুট কিভাবে পুনঃনির্দেশিত করা যায় ।
03:17:00 আমরা একটি ফাইল থেকে standardin, <(বামকোণী বন্ধনী) অপারেটর ব্যবহার করে পুনঃনির্দেশিত করতে পারি ।
03:22:00 আমরা জানি যে একটি ফাইলের লাইন, শব্দ এবং অক্ষরের সংখ্যা জানতে wc কমান্ডের ব্যবহার করা হয় ।
03:28:00 টার্মিনাল উইন্ডো-ত়ে wc লিখুন ।
03:31:00 এন্টার টিপুন ।
03:32:00 কারসর-টি দপদপ করছে অর্থাৎ আমাদের কিবোর্ড-এর মাধ্যমে ইনপুট দিতে হবে ।
03:37:00 কিছু লেখা যাক "This tutorial is very important" ।
03:46:00 এন্টার টিপুন ।
03:48:00 এবার ctrl ও d কী একসাথে টিপুন ।
03:52:00 এখন যে লাইনগুলি আমরা লিখেছি, তার উপর কমান্ড-টি কাজ করেছে ।
03:55:00 এই কমান্ড-টি টার্মিনাল-এ আউটপুট দেখাছে ।
03:57:00 এখানে wc কমান্ড-এর পর কোনো ফাইল উল্লেখ করা হয়নি ।
04:01:00 তাই কমান্ড-টি স্ট্যান্ডার্ড ইনপুট স্ট্রিম থেকে ইনপুট নিয়েছে ।
04:04:00 স্ট্যান্ডার্ড ইনপুট স্ট্রিম স্বাভাবিকভাবে-ই কিবোর্ড-এর সাথে যুক্ত থাকে । তাই wc কিবোর্ড থেকে ইনপুট নেয় ।
04:12:00 এখন যদি আমরা লিখি -

"wc space বামকোণী বন্ধনী space test1 dot txt" ।

04:19:00 তাহলে wc test1 dot txt ফাইল-এর লাইন, শব্দ এবং অক্ষরের সংখ্যা দেখাবে ।
04:27:00 এবার লিখুন ।

"wc space test1 dot txt" ।

04:34:00 আমরা একই আউটপুট দেখছি ।
04:37:00 তাহলে পার্থক্য -টি কোথায় ?
04:39:00 "wc space test1 dot txt" লিখলে , কমান্ড-টি test1dot txt ফাইল-টি খোলে এবং সেটি থেকে পড়ে ।
04:46:00 কিন্তু উপরের কমান্ড-টি লিখলে , wc খোলার জন্য কোনো ফাইল পায়না ।
04:53:00 তাই , এটি standardin থেকে ইনপুট নিতে চেষ্টা করে ।
04:57:00 কিন্তু আমরা standardin -কে ফাইল test1dot txt -এর দিকে পরিচালিত করেছি ।
05:01:00 তাই এই কমান্ড-টি test1 থেকে পড়ে ।
05:04:00 কিন্তু প্রকৃতপক্ষে , এটা জানে না যে standardin-e কোথা থেকে তথ্য আসছে ।
05:10:00 তাহলে আমরা দেখলাম কিভাবে স্ট্যান্ডার্ড ইনপুট পুননির্দেশনা করা যায় ।
05:12:00 এবার দেখে নেওয়া যাক কিভাবে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড এরর পুননির্দেশনা করা যায় ।
05:17:00 দুটি পদ্ধতিতে আউটপুট বা এরর একটি ফাইল-এ পুননির্দেশনা করা যায় ।
05:20:00 ধরুন, n হল ফাইল descriptor ।

n একটি ডানকোণী বন্ধনী ফাইল descriptor n থেকে একটি ফাইল-এ আউটপুট redirect করে ।

05:29:00 আপনার অবশ্যই সেই ফাইল-এ লেখার অধিকার থাকতে হবে ।
05:32:00 যদি ফাইলটি উপস্থিত না থাকে, সেটি নির্মিত হয় ।
05:35:00 যদি সেটির অস্তিত্ব আগে থেকেই থাকে, তাহলে উপস্থিত বিষয়বস্তু সাধারণত কোন সতর্কত়াবাণী ছাড়াই হারিয়ে যায় ।
05:40:00 ' n ' দুটি ডানকোণী বন্ধনী ' -ও ফাইল বর্ণনাকারী n থেকে একটি ফাইল-এ আউটপুট পুননির্দেশনা করে ।
05:47:00 এক্ষেত্রেও, আপনার সেই ফাইল-এ লেখার অধিকার থাকতে হবে ।
05:50:00 যদি ফাইলটি উপস্থিত না থাকে , সেটি নির্মিত হয় ।
05:52:00 যদি ফাইলটির অস্তিত্ব আগে থেকেই থাকে, তাহলে আউটপুট সেই ফাইল-এর শেষে যুক্ত হয় ।
05:59:00 একটি ডানকোণী বন্ধনী বা দুটি ডানকোণী বন্ধনীর আগে n হল ফাইল descriptor ।
06:05:00 এটি বাদ দিলে স্ট্যান্ডার্ড আউপুট অর্থাৎ ফাইল বর্ণনাকারী ১ অনুমান করা হয় ।
06:10:00 তাহলে একটি ডানকোণী বন্ধনী এবং ১ এর পর একটি ডানকোণী বন্ধনী আসলে একই কাজ করে ।
06:15:00 কিন্তু ত্রুটির স্ট্রিম-কে redirect করতে আমাদের ২ এর পর একটি বা দুটি ডানকোণী বন্ধনী ব্যবহার করতে হয় ।
06:22:00 আসুন, এটি দেখা যাক ।
06:24:00 শেষ উদাহরণ-এ আমরা দেখেছি যে ফাইল বা standardin উপর wc কমান্ডের ফলাফল টার্মিনাল উইন্ডোর এ প্রদর্শিত হয় ।
06:31:00 কিন্তু, এটি টার্মিনালে প্রদর্শন করতে না চাইলে আমরা কি করবো ?
06:34:00 ধরুন, আমরা এটি একটি ফাইলে সংরক্ষণ করতে চাই , যাতে পরে এই তথ্য ব্যবহার করা যায় ।
06:38:00 স্বাভাভিকভাবে wc standardout -এ আউটপুট লেখে ।
06:42:00 standardout টার্মিনাল উইন্ডোর সাথে সংযুক্ত থাকে ।
06:45:00 তাই আমরা টার্মিনাল উইন্ডো-ত়ে আউটপুট দেখি ।
06:48:00 কিন্তু যদি আমরা standardout একটি ফাইল-এ redirect করতে পারি, তাহলে wc কমান্ডের ফলাফল সেই ফাইল-এ লিখিত হবে ।
06:57:00 লিখুন -

"wc space test1 dot txt ডানকোণী বন্ধনী wc_results dot txt" ।

07:09:00 এন্টার টিপুন ।
07:11:00 এখন এটি প্রকৃতপক্ষে হয়েছে কিনা দেখার জন্যে cat কমান্ড-এর দ্বারা wc_results dot txt ফাইল-এর বিষয়বস্তু দেখা যাক ।
07:23:00 হ্যা, এটি হয়েছে ।
07:24:00 ধরুন, ওই একই ডিরেক্টরি-ত়ে অন্য একটি ফাইল test2 আছে ।
07:30:00 এখন আবার আমরা test2 ফাইল-ti নিয়ে কমান্ডটি চালাব । লিখছি-

"wc space test2 dot txt ডানকোণী বন্ধনী wc_results dot txt"

07:44:00 এক্ষেত্রে, wc_results -ফাইলের বিষয়বস্তু overwrite হয়ে যাবে ।
07:48:00 এটি দেখে নেওয়া যাক ।
07:56:00 এর পরিবর্তে আমরা লিখতে পারি "wc space test1 dot txt দুটি ডানকোণী বন্ধনী wc underscore results dot txt"
08:07:00 নতুন বিষয়বস্তু ফাইল wc underscore results dot txt -এর বর্তমান উপস্থিত বিষয়বস্তু overwrite করে না, সেই ফাইল-এর শেষে যুক্ত হয়ে যায় ।
08:15:00 এটিও দেখে নেওয়া যাক । এখানে দুটি লেখাই দেখা যাচ্ছে ।
08:26:00 স্ট্যান্ডার্ড এরর অনুরূপভাবে redirect করা যায় ।
08:29:00 শুধু পার্থক্য হল, এইক্ষেত্রে একটি ডানকোণী বন্ধনী বা দুটি ডানকোণী বন্ধনীর আগে স্ট্যান্ডার্ড এরর-এর ফাইল descriptor সংখ্যা উল্লেখ করতে হয় ।
08:38:00 আমরা জানি aaa নামক কোন ফাইল উপস্থিত নেই । তাহলে লেখা যাক -

"wc space aaa" ।

08:46:00 শেল ত্রুটি জানাচ্ছে যে - “No such file or directory”।
08:50:00 ধরুন, আমরা স্ক্রিন-এ এই বার্তা দেখতে চাই না । তারজন্য, সেগুলি অন্য ফাইল-এ redirect করতে হবে ।
08:55:00 লেখা যাক -

"wc space aaa space 2 ডানকোণী বন্ধনী errorlog dot txt" ।

09:06:00 এখন ত্রুটি-গুলি টার্মিনালে প্রদর্শিত হচ্ছে না , বরং ফাইল errorlog dot txt -ত়ে লিখিত হয়ে গেছে ।
09:12:00 আমরা "cat space errorlog dot txt" কমান্ড-এর মাধ্যমে এটি দেখতে পারি ।

09:22:00 ধরুন, আমি "cat space bbb space 2 ডানকোণী বন্ধনী errorlog dot txt" কমান্ড ব্যবহার করে কিছু ক্রুটি করেছি ।
09:34:00 এখন পূর্ববর্তী ক্রুটি overwrite হয়ে যাবে এবং নতুন ক্রুটি দেখা যাবে ।
09:39:00 দেখুন "cat space errorlog dot txt"
09:46:00 কিন্তু সবকটি error-এর তালিকা দেখতে চাইলে আমরা কি করবো ?

সেক্ষেত্রে, আমরা এই কমান্ড-টি চালাব -

"wc space aaa space 2 দুটি ডানকোণী বন্ধনী errorlog dot txt" ।

09:58:00 cat কমান্ড ব্যবহার করে এটি পরীক্ষা করা যাক ।
10:06:00 তাহলে আমরা দেখলাম কিভাবে তিনটি স্ট্রিম -স্ট্যান্ডার্ড আউট, স্ট্যান্ডার্ড in ও স্ট্যান্ডার্ড এরর-কে আলাদাভাবে redirect এবং ব্যবহার করা যায় । কিন্তু এই তিনটি স্ট্রিম -কে একসাথে ব্যবহার অর্থাৎ বিভিন্ন স্ট্রিম-গুলি যুক্ত কতে পারলে, redirection আসল ক্ষমতা বোঝা যায় ।
10:20:00 একে pipelining বলা হয় ।
10:22:00 পাইপ কমান্ড-এর শৃঙ্খল তৈরী করে ।
10:25:00 পাইপ একটি কমান্ডের আউটপুট-এর সাথে পরবর্তী কমান্ডের ইনপুট যুক্ত করে ।
10:30:00 এটি লেখার নিয়ম হল -

command1 উল্লম্ব দাঁড়ি command2 hyphen option উল্লম্ব দাঁড়ি command3 hyphen option1 hyphen option2 উল্লম্ব দাঁড়ি command4 ।

10:46:00 ধরুন, আমরা বর্তমান ডিরেক্টরির মধ্যে উপস্থিত ফাইল ও ডিরেক্টরির মোট সংখ্যা জানতে চাই ।
10:51:00 তাহলে আমরা কি করবো ? আমরা জানি

"ls space minus l" বর্তমান ডিরেক্টরি-র সব ফাইল এবং সাব-ডিরেক্টরির তালিকা দেয় ।

10:58:00 আমরা আউটপুট-টিকে একটি ফাইলে redirect করতে পারি -

"ls space minus l ডানকোণী বন্ধনী files dot txt" ।

11:08:00 "cat space files dot txt" ।
11:14:00 এখানে, প্রতিটি লাইন একটি ফাইল অথবা ডিরেক্টরির নাম ।
11:17:00 যদি আমরা এই ফাইলের মোট লাইন সংখ্যা জানতে চাই, তাহলে আমরা files dot txt ফাইল-টিকে ব্যবহার করতে পারি ।
11:24:00 এটি এই কমান্ড-এর মাধ্যমে করা যায়- "wc space minus l files dot txt" ।
11:32:00 এটি আমাদের উদ্দেশ্য সাধন করলেও এর কিছু সমস্যা আছে ।
11:35:00 প্রথমত, একটি অন্তর্বর্তী ফাইল files dot txt প্রয়োজন হয় ।
11:40:00 যদি প্রথম কমান্ড অনেক তথ্য উত্পাদন করে, এটা অকারণে ডিস্ক মেমরি নষ্ট করতে পারে ।
11:46:00 এছাড়াও য বিভিন্ন কমান্ড-এর শৃঙ্খল তৈরী করতে চাইলে এই পদ্ধতিটি সময়সাপেক্ষ ।
11:50:00 আমরা এটি অনেক সহজেই পাইপ ব্যবহার করে কাজটি করতে পারি । লেখা যাক -

"ls space minus l উল্লম্ব দাঁড়ি wc space minus l" ।

12:01:00 এখন আমরা অনেক বেশি স্বাচ্ছন্দ্য-এর সঙ্গে একই ফলাফল পাচ্ছি ।
12:06:00 ls কমান্ডের আউটপুট wc কমান্ডের ইনপুট হিসেবে ব্যবহৃত হয় ।
12:10:00 এমনকি আমরা পাইপ ব্যবহার করে কমান্ড-এর আরো লম্বা শৃঙ্খল তৈরী করতে পারি ।
12:15:00 পাইপ-এর একটি সাধারণ ব্যবহার হল বিভিন্ন পৃষ্ঠায় প্রদর্শিত লেখা পড়া ।
12:19:00 লিখুন "cd space slash usr slash bin"।
12:24:00 তাহলে আমরা এখন bin ডিরেক্টরী-ত়ে আছি ।
12:28:00 এখান "ls minus l" কমান্ড-টি রান করুন ।
12:31:00 আমরা আউটপুট সঠিকভাবে দেখতে পাচ্ছিনা । কিন্তু more পাইপ-এর সাথে যুক্ত করে কমান্ড-টি ব্যবহার করলে, এটি সঠিকভাবে দেখা যাবে ।
12:37:00 এই লিস্ট-টি পুরো দেখতে এন্টার টিপুন ।
12:41:00 বেরিয়ে আসতে q টিপুন ।
12:45:00 এখানে কিছু কমান্ড আলোচিত হল যেগুলি আমাদের ফাইল নিয়ে কাজ করতে সাহায্য করে ।
12:48:00 এইপ্রকার আরো অনেক কমান্ড আছে ।
12:50:00 আলোচিত প্রত্যেকটি কমান্ড-এর অনেকগুলি অপশন আছে ।
12:54:00 'man' কমান্ড-এর সাহায্যে সেগুলির সম্পর্কে আরো বিস্তারিত ভাবে জানুন ।
12:58:00 কমান্ড শেখার সবথেকে সেরা উপায় হল সেগুলিকে বারবার ব্যবহার করা ।
13:04:00 এখানেই এই টিউটোরিয়াল্-এর সমাপ্তি হল ।
13:07:00 স্পোকেন্ টিউটোরিয়াল্ Talk to a Teacher প্রকল্পের অংশবিশেষ যা ICT এর National Mission on Education দ্বারা সমর্থিত ।
13:19:00 আমি অন্তরা এই টিউটোরিয়াল-টি অনুবাদ এবং রেকর্ড করেছি । শুভবিদায় ।

Contributors and Content Editors

Kaushik Datta, PoojaMoolya