লিনাক্সে Cat মানে কনক্যাটেনেশন (concatenation - একসাথে जोড়া) এবং এটি সবচেয়ে উপযোগী ও বহুমুখী লিনাক্স কমান্ডগুলোর একটি। একটি আসল বিডালের মতো কিউট (cute) এবং কাডলি (cuddly) না হলেও, লিনাক্স cat কমান্ড স্ট্রিং, ফাইল, এবং আউটপুট ব্যবহার করে অনেক অপারেশন সাপোর্ট করতে পারে।
cat কমান্ডের টেক্সট ফাইল নিয়ে তিনটি প্রধান উদ্দেশ্য রয়েছে:
- তৈরি করা (Create)
- পড়া/দেখানো (Read/Display)
- আপডেট/মডিফাই করা (Update/Modify)
আমরা প্রতিটি কাজের জন্য কমান্ড ও অপশনগুলো দেখব।
শুরু করা যাক
শুরুতে, আসুন foo.txt এবং spam.txt নামে দুটি ফাইল তৈরি করি।
লিনাক্স কমান্ড লাইন থেকে cat > foo.txt কমান্ড দিয়ে foo.txt তৈরি করা যাক।
সতর্কতা: যদি ইতিমধ্যে foo.txt নামে ফাইল থাকে, তবে cat কমান্ড > অপারেটর ব্যবহার করলে সেটি ওভাররাইট (overwrite) করবে।
এখান থেকে প্রম্পট একটি নিউলাইন দেখাবে যা আমাদের আমাদের পছন্দের টেক্সট ইনপুট করতে দেবে। এই উদাহরণে আমরা ব্যবহার করব:
FILE 1 foo bar baz
কমান্ড লাইনে ফিরে যেতে এবং টেক্সট ফাইল তৈরি করতে আমরা CTRL + D ব্যবহার করব।
এখন cat > spam.txt দিয়ে spam.txt তৈরি করি এবং নিচের টেক্সটটি দেই:
FILE 2 spam ham eggs
যদি আমরা এই ফাইলগুলোতে আরও টেক্সট অ্যাপেন্ড (append) বা যোগ করতে চাই তবে cat >> FILENAME ব্যবহার করব এবং পছন্দের টেক্সট ইনপুট করব।
নোট করুন যে >> অপারেটর অ্যাপেন্ড করার জন্য ব্যবহৃত হয়, > অপারেটরের পরিবর্তে।
একটি টেক্সট এডিটর খুলতে হলে না, আমরা কমান্ড লাইন থেকে দ্রুত ও সহজে একটি সিম্পল টেক্সট ফাইল তৈরি করতে পেরেছি, যা সময় ও পরিশ্রম বাঁচিয়েছে।
এই সেকশন থেকে মূল শিক্ষা হচ্ছে আমরা cat > FILENAME ব্যবহার করি ফাইল তৈরি বা ওভাররাইট করার জন্য। এর পাশাপাশি, cat >> FILENAME ব্যবহার করে বিদ্যমান ফাইলে অ্যাপেন্ড করতে পারি। তারপর পছন্দের টেক্সট টাইপ করে CTRL + D দিয়ে এডিটর থেকে বের হয়ে কমান্ড লাইনে ফিরে যেতে পারি এবং ফাইলটি তৈরি হয়।
রিডিং রেইনবো (Reading Rainbow)
এখন যেহেতু আমরা কিছু তৈরি করেছি, আসুন দেখি আমরা কী বানালাম।
লক্ষ্য করুন যে নিচের কমান্ডে > বা >> অপারেটর নেই, শুধু cat এবং ফাইলনেম।
কমান্ড cat foo.txt নিচের আউটপুট দেবে:
FILE 1 foo bar baz
তো cat foo.txt আমাদের ফাইলটি পড়তে দেবে, কিন্তু আসুন দেখি আর কী কী করা যায়।
মান লें আমরা জানতে চাই যে আমরা যে ফাইলটিতে কাজ করছি তার কত লাইন। এর জন্য -n অপশন বড় কাজে লাগে।
cat -n foo.txt কমান্ড দিয়ে আমরা দেখতে পাব কত লম্বা ফাইলটি:
1 FILE 1 2 foo 3 bar 4 baz
-n দিয়ে আমরা কাজ কর रहे ফাইলটির কত লাইন সেটি সম্পর্কে ধারণা পেতে পারি। এটি কাজে লাগে যখন আমরা একটি নির্দিষ্ট দৈর্ঘ্যের ফাইল দিয়ে ইটারেট (iterate) করি।
ফাইলগুলো কনক্যাটেনেট (ConCATenating) করা
ঠিক আছে, আমরা দেখেছি cat ফাইল তৈরি ও ডিসপ্লে করতে পারে, কিন্তু কনক্যাটেনেট (যোগ) করার কী?
এই উদাহরণে আমরা foo.txt এবং spam.txt ফাইলগুলো ব্যবহার করব। যদি আমরা ফ্যান্সি (fancy) হতে চাই তবে দুটো ফাইলের কন্টেন্ট একসাথে দেখতে পারি। আমরা আবার cat কমান্ড ব্যবহার করব, এইবার cat foo.txt spam.txt।
cat foo.txt spam.txt ফলাফল:
FILE 1 foo bar baz FILE 2 spam ham eggs
লক্ষ্য করুন উপরের আউটপুটটি কেবল দুটি ফাইল দেখাচ্ছে। এই পয়েন্টে আমরা এগুলো একটি নতুন ফাইলে কনক্যাটেনেট করিনি।
ফাইলগুলো একসাথে কনক্যাটেনেট করে একটি নতুন ফাইল बनाने হলে আমরা cat foo.txt spam.txt > fooSpam.txt ব্যবহার করব যা ফলাফলটি fooSpam.txt নামে একটি নতুন ফাইলে দেবে।
cat fooSpam.txt ব্যবহার করলে টার্মিনালে নিচের আউটপুট আসবে:
FILE 1 foo bar baz FILE 2 spam ham eggs
এই কমান্ডটি তখনও কাজে লাগে যখন আমরা দুটির অধিক ফাইল একসাথে কনক্যাটেনেট করে একটি নতুন ফাইল বানাতে চাই।
এখান থেকে মূল শিক্ষাগুলো হচ্ছে আমরা cat FILENAME1 FILENAME 2 দিয়ে একাধিক ফাইল দেখতে পারি।
আরো, cat FILENAME1 FILENAME 2 > FILENAME3 কমান্ড দিয়ে একাধিক ফাইল এক ফাইলে কনক্যাটেনেট করতে পারি।
Cat(s)-এর সাথে করার অন্যান্য মজার কাজগুলো
মান লें আমরা একটি ফাইল দিয়ে কাজ করছি এবং ফাইল শেষ হওয়ার আগে কোনো কারণে বারবার এরর পাচ্ছি - এবং লাগছে এরা আমাদের এক্সপেক্টেড (expected) চেয়ে বেশি লাইন থাকতে পারে।
ফাইলটি একটু গভীরে তদন্ত করে এবং সম্ভবত সমস্যাটি সমাধান করতে আমরা -A সুইচ (switch) ব্যবহার করতে পারি। -A অপশন আমাদের দেখাবে লাইন কোথায় শেষ হয় $ চিহ্ন দিয়ে, ট্যাব ক্যারেক্টার ^I দিয়ে দেখাবে, এবং অন্যান্য নন-প্রিন্টিং (non-printing) ক্যারেক্টারও প্রদর্শন করবে।
যদি আমরা একটি নন-প্রিন্টেবল টেক্সট ফাইলের উদাহরণ cat nonPrintExample.txt দিয়ে দেখি তবে আমরা এমন কিছু পেতে পারি:
যা ঠিক আছে কিন্তু হয়তো কোনো ক্যারেক্টার বা স্ট্রিং যা সমস্যা তৈরি করছে তার পুরো কাহিনী বলছে না।
যেখানে cat -A nonPrintExample.txt আমাদের আরও উপযোগী আউটপুট দিতে পারে:
^I^I$ $ ^L$ $ ^G^H^H^H^Y^I^N^O^P^@$ ^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$ $ $ ^X$
এখানে, ট্যাব, লাইন ফিড, রিটার্ন, এবং অন্যান্য ক্যারেক্টারের মাঝপথে কী হচ্ছে সেটি আরও স্পষ্টভাবে বোঝা যায়।
এখান থেকে মূল শিক্ষা হচ্ছে cat -A FILENAME আমাদের যে ফাইলটিতে কাজ করছি তার সম্পর্কে আরও গভীর ডিটেলস দিতে পারে।
এই আর্টিকেলটি আপনাকে cat কমান্ড, সেটি কী করতে পারে, এবং এর ফাংশনালিটি সম্পর্কে একটি ভালো ওভারভিউ দেবে।