BOSS-Linux/C2/Redirection-Pipes/Bengali
Time | Narration |
---|---|
00:00 | Redirection এবং Pipes সংক্রান্ত এই কথ্য টিউটোরিয়ালটিতে আপনাদের স্বাগত জানাচ্ছি । |
00:07 | আমি লিনাক্স অপারেটিং সিস্টেম ব্যবহার করছি। |
00:09 | আমি ধরে নিচ্ছি, লিনাক্স অপারেটিং সিস্টেম এবং মৌলিক নির্দেশাবলী সম্পর্কে আপনার কিছু ধারণা আছে । |
00:16 | সেই সংক্রান্ত মৌখিক টিউটোরিয়াল এই ওয়েবসাইট-টিতে প্রাপ্তিসাধ্য । |
00:22 | মনে রাখবেন যে লিনাক্স case sensitive । |
00:25 | অন্যথায় উল্লেখ করা না থাকলে এই টিউটোরিয়ালটিতে ব্যবহৃত সমস্ত র্নিদেশাবলী ছোট হাতের অক্ষরে আছে । |
00:32 | লিনাক্স-এ অধিকাংশ কাজ-ই টার্মিনাল-এর মাধ্যমে হয় । |
00:35 | যখন আমরা একটি কমান্ড চালাতে চাই, আমরা কিবোর্ডের মাধ্যমে সেটি লিখি । |
00:39 | ধরুন, আমরা তারিখ এবং সময় দেখতে চাইছি । |
00:41 | কিবোর্ড-এর মাধ্যমে "date" লিখুন এবং এন্টার টিপুন । |
00:46 | সাধারণত আমরা কিবোর্ড-এর মাধ্যমে ইনপুট দিয়ে থাকি । |
00:48 | অনুরূপভাবে, কমান্ডের আউটপুট, টার্মিনাল উইন্ডোত়ে প্রদর্শিত হয় । |
00:56 | এছাড়াও কোনো কমান্ড চানালোর সময় কিছু ত্রুটি ঘটতে পারে । |
00:59 | উদাহরস্বরূপ, লিখুন "cat space aaa" । এন্টার টিপুন । |
01:05 | aaa নামক কোনো ফাইলের অস্তিত্ব নেই । |
01:08 | সেই ত্রুটি- সংক্রান্ত বার্তা এখানে দেখা যাচ্ছে । |
01:10 | এখন এই ত্রুটি-টিও টার্মিনাল উইন্ডোর উপর দেখা যাচ্ছে । |
01:20 | কমান্ড সংক্রান্ত তিনটি বিশেষ কর্ম হল ইনপুট নেওয়া, আউটপুট দেখানো এবং error বা ত্রুটি রিপোর্ট করা । |
01:24 | Redirection শেখার পূর্বে আমাদের দুটি গুরুত্বপূর্ণ ধারণা সম্পর্কে জানা উচিত। সেগুলি হল - স্ট্রিম এবং file descriptor । |
01:31 | লিনাক্স শেল যেমন Bash, অক্ষরের স্ট্রিম-এর মাধ্যমে ইনপুট গ্রহণ করে ও আউটপুট পাঠায় । |
01:37 | কোনো অক্ষর তার আগের এবং পরের অক্ষরের উপর নির্ভর করে না । |
01:41 | স্ট্রিম-গুলি ফাইল IO পদ্ধতির দ্বারা ব্যবহার করা হয় । |
01:44 | অক্ষরের স্ট্রিম-টি কোনো একটি ফাইল বা কীবোর্ড বা উইন্ডো ইত্যাদি কোথা থেকে আসছে বা কোথায় যাচ্ছে, ত়া কোনো মূল্য রাখে না । |
01:51 | লিনাক্স-এ প্রত্যেক খোলা ফাইল-এর সঙ্গে একটি পূর্ণসংখ্যা সংখ্যা যুক্ত থাকে । |
01:57 | এটিকে file descriptor বলা হয় । |
02:05 | লিনাক্স শেল তিনটি স্ট্যান্ডার্ড I/O স্ট্রিম ব্যবহার করে । |
02:08 | প্রতিটি একটি সুনির্দিষ্ট ফাইল descriptor-এর সাথে যুক্ত থাকে । |
02:12 | stdin হল স্ট্যান্ডার্ড ইনপুট স্ট্রিম । |
02:15 | এটি কমান্ড-এ ইনপুট দেয় । |
02:17 | এর ফাইল descriptor মান 0 । |
02:19 | stdout হল স্ট্যান্ডার্ড আউটপুট স্ট্রিম । |
02:22 | এটি কমান্ড-এর আউটপুট দেখায় । এর ফাইল বর্ণনাকারীর মান ১ । |
02:26 | stderr হল স্ট্যান্ডার্ড এরর স্ট্রিম । এটি কমান্ড-এর ত্রুটি-গুলি প্রদর্শন করে । এর ফাইল descriptor হল ২ । |
02:36 | ইনপুট স্ট্রিম প্রোগ্রামের ইনপুট প্রদান করে । |
02:40 | সাধারনতঃ এটি টার্মিনাল keystrokes থেকে ইনপুট নেয় । |
02:44 | আউটপুট স্ট্রিম সাধারনতঃ টার্মিনালে অক্ষর প্রিন্ট করে । |
02:47 | আগে টার্মিনাল ছিল ASCII typewriter বা display terminal । |
02:52 | কিন্তু এখন এটি গ্রাফিকাল ডেস্কটপ-এর উপর একটি টেক্সট উইন্ডো । |
02:56 | আমরা দেখেছি যে ৩ টি স্ট্রিমই স্বাভাবিকভাবে কোনো ফাইল-এর সাথে সংযুক্ত থাকে । |
03:01 | কিন্তু লিনাক্সে আমরা এটির পরিবর্তন করতে পারি । |
03:04 | আমরা এই ৩-টি স্ট্রিম অন্যান্য ফাইলের সাথে সংযুক্ত করতে পারি । |
03:07 | এই প্রক্রিয়া-টিকে redirection বা পুনর্নির্দেশনা বলা হয় । |
03:09 | এখন দেখা যাক কিভাবে এই ৩ স্ট্রিম-এ পুনর্নির্দেশনা করা যায় । |
03:14 | প্রথমে দেখা যাক স্ট্যান্ডার্ড ইনপুট কিভাবে পুনঃনির্দেশিত করা যায় । |
03:17 | আমরা একটি ফাইল থেকে standardin, <(বামকোণী বন্ধনী) অপারেটর ব্যবহার করে পুনঃনির্দেশিত করতে পারি । |
03:22 | আমরা জানি যে একটি ফাইলের লাইন, শব্দ এবং অক্ষরের সংখ্যা জানতে wc কমান্ডের ব্যবহার করা হয় । |
03:28 | টার্মিনাল উইন্ডো-ত়ে wc লিখুন । |
03:31 | এন্টার টিপুন । কারসর-টি দপদপ করছে অর্থাৎ আমাদের কিবোর্ড-এর মাধ্যমে ইনপুট দিতে হবে । |
03:37 | কিছু লেখা যাক "This tutorial is very important" । |
03:46 | এন্টার টিপুন । |
03:48 | এবার ctrl ও d কী একসাথে টিপুন । |
03:52 | এখন যে লাইনগুলি আমরা লিখেছি, তার উপর কমান্ড-টি কাজ করেছে । |
03:55 | এই কমান্ড-টি টার্মিনাল-এ আউটপুট দেখাছে । |
03:57 | এখানে wc কমান্ড-এর পর কোনো ফাইল উল্লেখ করা হয়নি । |
04:01 | তাই কমান্ড-টি স্ট্যান্ডার্ড ইনপুট স্ট্রিম থেকে ইনপুট নিয়েছে । |
04:04 | স্ট্যান্ডার্ড ইনপুট স্ট্রিম স্বাভাবিকভাবে-ই কিবোর্ড-এর সাথে যুক্ত থাকে । তাই wc কিবোর্ড থেকে ইনপুট নেয় । |
04:12 | এখন যদি আমরা লিখি -
"wc space বামকোণী বন্ধনী space test1 dot txt" । |
04:19 | তাহলে wc test1 dot txt ফাইল-এর লাইন, শব্দ এবং অক্ষরের সংখ্যা দেখাবে । |
04:27 | এবার লিখুন ।
"wc space test1 dot txt" । |
04:34 | আমরা একই আউটপুট দেখছি । |
04:37 | তাহলে পার্থক্য -টি কোথায় ? |
04:39 | "wc space test1 dot txt" লিখলে , কমান্ড-টি test1dot txt ফাইল-টি খোলে এবং সেটি থেকে পড়ে । |
04:46 | কিন্তু উপরের কমান্ড-টি লিখলে , wc খোলার জন্য কোনো ফাইল পায়না । |
04:53 | তাই , এটি standardin থেকে ইনপুট নিতে চেষ্টা করে । |
04:57 | কিন্তু আমরা standardin -কে ফাইল test1dot txt -এর দিকে পরিচালিত করেছি । |
05:01 | তাই এই কমান্ড-টি test1 থেকে পড়ে । |
05:04 | কিন্তু প্রকৃতপক্ষে , এটা জানে না যে standardin-e কোথা থেকে তথ্য আসছে । |
05:10 | তাহলে আমরা দেখলাম কিভাবে স্ট্যান্ডার্ড ইনপুট পুননির্দেশনা করা যায় । |
05:12 | এবার দেখে নেওয়া যাক কিভাবে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড এরর পুননির্দেশনা করা যায় । |
05:17 | দুটি পদ্ধতিতে আউটপুট বা এরর একটি ফাইল-এ পুননির্দেশনা করা যায় । |
05:20 | ধরুন, n হল ফাইল descriptor ।
n একটি ডানকোণী বন্ধনী ফাইল descriptor n থেকে একটি ফাইল-এ আউটপুট redirect করে । |
05:29 | আপনার অবশ্যই সেই ফাইল-এ লেখার অধিকার থাকতে হবে । |
05:32 | যদি ফাইলটি উপস্থিত না থাকে, সেটি নির্মিত হয় । |
05:35 | যদি সেটির অস্তিত্ব আগে থেকেই থাকে, তাহলে উপস্থিত বিষয়বস্তু সাধারণত কোন সতর্কত়াবাণী ছাড়াই হারিয়ে যায় । |
05:40 | ' n ' দুটি ডানকোণী বন্ধনী ' -ও ফাইল বর্ণনাকারী n থেকে একটি ফাইল-এ আউটপুট পুননির্দেশনা করে । |
05:47 | এক্ষেত্রেও, আপনার সেই ফাইল-এ লেখার অধিকার থাকতে হবে । |
05:50 | যদি ফাইলটি উপস্থিত না থাকে , সেটি নির্মিত হয় । |
05:52 | যদি ফাইলটির অস্তিত্ব আগে থেকেই থাকে, তাহলে আউটপুট সেই ফাইল-এর শেষে যুক্ত হয় । |
05:59 | একটি ডানকোণী বন্ধনী বা দুটি ডানকোণী বন্ধনীর আগে n হল ফাইল descriptor । |
06:05 | এটি বাদ দিলে স্ট্যান্ডার্ড আউপুট অর্থাৎ ফাইল বর্ণনাকারী ১ অনুমান করা হয় । |
06:10 | তাহলে একটি ডানকোণী বন্ধনী এবং ১ এর পর একটি ডানকোণী বন্ধনী আসলে একই কাজ করে । |
06:15 | কিন্তু ত্রুটির স্ট্রিম-কে redirect করতে আমাদের ২ এর পর একটি বা দুটি ডানকোণী বন্ধনী ব্যবহার করতে হয় । |
06:22 | আসুন, এটি দেখা যাক । |
06:24 | শেষ উদাহরণ-এ আমরা দেখেছি যে ফাইল বা standardin উপর wc কমান্ডের ফলাফল টার্মিনাল উইন্ডোর এ প্রদর্শিত হয় । |
06:31 | কিন্তু, এটি টার্মিনালে প্রদর্শন করতে না চাইলে আমরা কি করবো ? |
06:34 | ধরুন, আমরা এটি একটি ফাইলে সংরক্ষণ করতে চাই , যাতে পরে এই তথ্য ব্যবহার করা যায় । |
06:38 | স্বাভাভিকভাবে wc standardout -এ আউটপুট লেখে । |
06:42 | standardout টার্মিনাল উইন্ডোর সাথে সংযুক্ত থাকে । |
06:45 | তাই আমরা টার্মিনাল উইন্ডো-ত়ে আউটপুট দেখি । |
06:48 | কিন্তু যদি আমরা standardout একটি ফাইল-এ redirect করতে পারি, তাহলে wc কমান্ডের ফলাফল সেই ফাইল-এ লিখিত হবে । |
06:57 | লিখুন -
"wc space test1 dot txt ডানকোণী বন্ধনী wc_results dot txt" । |
07:09 | এন্টার টিপুন । |
07:11 | এখন এটি প্রকৃতপক্ষে হয়েছে কিনা দেখার জন্যে cat কমান্ড-এর দ্বারা wc_results dot txt ফাইল-এর বিষয়বস্তু দেখা যাক । |
07:23 | হ্যা, এটি হয়েছে । ধরুন, ওই একই ডিরেক্টরি-ত়ে অন্য একটি ফাইল test2 আছে । |
07:30 | এখন আবার আমরা test2 ফাইল-ti নিয়ে কমান্ডটি চালাব । লিখছি-
"wc space test2 dot txt ডানকোণী বন্ধনী wc_results dot txt" |
07:44 | এক্ষেত্রে, wc_results -ফাইলের বিষয়বস্তু overwrite হয়ে যাবে । |
07:48 | এটি দেখে নেওয়া যাক । |
07:56 | এর পরিবর্তে আমরা লিখতে পারি "wc space test1 dot txt দুটি ডানকোণী বন্ধনী wc underscore results dot txt" |
08:07 | নতুন বিষয়বস্তু ফাইল wc underscore results dot txt -এর বর্তমান উপস্থিত বিষয়বস্তু overwrite করে না, সেই ফাইল-এর শেষে যুক্ত হয়ে যায় । |
08:15 | এটিও দেখে নেওয়া যাক । এখানে দুটি লেখাই দেখা যাচ্ছে । |
08:26 | স্ট্যান্ডার্ড এরর অনুরূপভাবে redirect করা যায় । |
08:29 | শুধু পার্থক্য হল, এইক্ষেত্রে একটি ডানকোণী বন্ধনী বা দুটি ডানকোণী বন্ধনীর আগে স্ট্যান্ডার্ড এরর-এর ফাইল descriptor সংখ্যা উল্লেখ করতে হয় । |
08:38 | আমরা জানি aaa নামক কোন ফাইল উপস্থিত নেই । তাহলে লেখা যাক -
"wc space aaa" । |
08:46 | শেল ত্রুটি জানাচ্ছে যে - “No such file or directory”। |
08:50 | ধরুন, আমরা স্ক্রিন-এ এই বার্তা দেখতে চাই না । তারজন্য, সেগুলি অন্য ফাইল-এ redirect করতে হবে । |
08:55 | লেখা যাক -
"wc space aaa space 2 ডানকোণী বন্ধনী errorlog dot txt" । |
09:06 | এখন ত্রুটি-গুলি টার্মিনালে প্রদর্শিত হচ্ছে না , বরং ফাইল errorlog dot txt -ত়ে লিখিত হয়ে গেছে । |
09:12 | আমরা "cat space errorlog dot txt" কমান্ড-এর মাধ্যমে এটি দেখতে পারি ।
। |
09:22 | ধরুন, আমি "cat space bbb space 2 ডানকোণী বন্ধনী errorlog dot txt" কমান্ড ব্যবহার করে কিছু ক্রুটি করেছি । |
09:34 | এখন পূর্ববর্তী ক্রুটি overwrite হয়ে যাবে এবং নতুন ক্রুটি দেখা যাবে । |
09:39 | দেখুন "cat space errorlog dot txt" |
09:46 | কিন্তু সবকটি error-এর তালিকা দেখতে চাইলে আমরা কি করবো ?
সেক্ষেত্রে, আমরা এই কমান্ড-টি চালাব - "wc space aaa space 2 দুটি ডানকোণী বন্ধনী errorlog dot txt" । |
09:58 | cat কমান্ড ব্যবহার করে এটি পরীক্ষা করা যাক । |
10:06 | তাহলে আমরা দেখলাম কিভাবে তিনটি স্ট্রিম -স্ট্যান্ডার্ড আউট, স্ট্যান্ডার্ড in ও স্ট্যান্ডার্ড এরর-কে আলাদাভাবে redirect এবং ব্যবহার করা যায় । কিন্তু এই তিনটি স্ট্রিম -কে একসাথে ব্যবহার অর্থাৎ বিভিন্ন স্ট্রিম-গুলি যুক্ত কতে পারলে, redirection আসল ক্ষমতা বোঝা যায় । |
10:20 | একে pipelining বলা হয় । |
10:22 | পাইপ কমান্ড-এর শৃঙ্খল তৈরী করে । |
10:25 | পাইপ একটি কমান্ডের আউটপুট-এর সাথে পরবর্তী কমান্ডের ইনপুট যুক্ত করে । |
10:30 | এটি লেখার নিয়ম হল -
command1 উল্লম্ব দাঁড়ি command2 hyphen option উল্লম্ব দাঁড়ি command3 hyphen option1 hyphen option2 উল্লম্ব দাঁড়ি command4 । |
10:46 | ধরুন, আমরা বর্তমান ডিরেক্টরির মধ্যে উপস্থিত ফাইল ও ডিরেক্টরির মোট সংখ্যা জানতে চাই । |
10:51 | তাহলে আমরা কি করবো ? আমরা জানি
"ls space minus l" বর্তমান ডিরেক্টরি-র সব ফাইল এবং সাব-ডিরেক্টরির তালিকা দেয় । |
10:58 | আমরা আউটপুট-টিকে একটি ফাইলে redirect করতে পারি -
"ls space minus l ডানকোণী বন্ধনী files dot txt" । |
11:08 | "cat space files dot txt" । |
11:14 | এখানে, প্রতিটি লাইন একটি ফাইল অথবা ডিরেক্টরির নাম । |
11:17 | যদি আমরা এই ফাইলের মোট লাইন সংখ্যা জানতে চাই, তাহলে আমরা files dot txt ফাইল-টিকে ব্যবহার করতে পারি । |
11:24 | এটি এই কমান্ড-এর মাধ্যমে করা যায়- "wc space minus l files dot txt" । |
11:32 | এটি আমাদের উদ্দেশ্য সাধন করলেও এর কিছু সমস্যা আছে । |
11:35 | প্রথমত, একটি অন্তর্বর্তী ফাইল files dot txt প্রয়োজন হয় । |
11:40 | যদি প্রথম কমান্ড অনেক তথ্য উত্পাদন করে, এটা অকারণে ডিস্ক মেমরি নষ্ট করতে পারে । |
11:46 | এছাড়াও য বিভিন্ন কমান্ড-এর শৃঙ্খল তৈরী করতে চাইলে এই পদ্ধতিটি সময়সাপেক্ষ । |
11:50 | আমরা এটি অনেক সহজেই পাইপ ব্যবহার করে কাজটি করতে পারি । লেখা যাক -
"ls space minus l উল্লম্ব দাঁড়ি wc space minus l" । |
12:01 | এখন আমরা অনেক বেশি স্বাচ্ছন্দ্য-এর সঙ্গে একই ফলাফল পাচ্ছি । |
12:06 | ls কমান্ডের আউটপুট wc কমান্ডের ইনপুট হিসেবে ব্যবহৃত হয় । |
12:10 | এমনকি আমরা পাইপ ব্যবহার করে কমান্ড-এর আরো লম্বা শৃঙ্খল তৈরী করতে পারি । |
12:15 | পাইপ-এর একটি সাধারণ ব্যবহার হল বিভিন্ন পৃষ্ঠায় প্রদর্শিত লেখা পড়া । |
12:19 | লিখুন "cd space slash usr slash bin"। |
12:24 | তাহলে আমরা এখন bin ডিরেক্টরী-ত়ে আছি । |
12:28 | এখান "ls minus l" কমান্ড-টি রান করুন । |
12:31 | আমরা আউটপুট সঠিকভাবে দেখতে পাচ্ছিনা । কিন্তু more পাইপ-এর সাথে যুক্ত করে কমান্ড-টি ব্যবহার করলে, এটি সঠিকভাবে দেখা যাবে । |
12:37 | এই লিস্ট-টি পুরো দেখতে এন্টার টিপুন । |
12:41 | বেরিয়ে আসতে q টিপুন । |
12:45 | এখানে কিছু কমান্ড আলোচিত হল যেগুলি আমাদের ফাইল নিয়ে কাজ করতে সাহায্য করে । |
12:48 | এইপ্রকার আরো অনেক কমান্ড আছে । |
12:50 | আলোচিত প্রত্যেকটি কমান্ড-এর অনেকগুলি অপশন আছে । |
12:54 | 'man' কমান্ড-এর সাহায্যে সেগুলির সম্পর্কে আরো বিস্তারিত ভাবে জানুন । |
12:58 | কমান্ড শেখার সবথেকে সেরা উপায় হল সেগুলিকে বারবার ব্যবহার করা । |
13:04 | এখানেই এই টিউটোরিয়াল্-এর সমাপ্তি হল । |
13:07 | স্পোকেন্ টিউটোরিয়াল্ Talk to a Teacher প্রকল্পের অংশবিশেষ যা ICT এর National Mission on Education দ্বারা সমর্থিত । |
13:19 | আমি অন্তরা এই টিউটোরিয়াল-টি অনুবাদ এবং রেকর্ড করেছি । শুভবিদায় । |