Bash-এ সব ক্যারেক্টার সমান নয়। उनमें से কিছু স্পেশাল ফাংশন ক্যারি করে, কমান্ড টুইক করে, এবং ডেটা ম্যানিপুলেট করতে সাহায্য করে। তাই আমরা নিচের লিস্টটি কম্পাইল করেছি সবচেয়ে গুরুত্বপূর্ণ Bash স্পেশাল ক্যারেক্টারগুলোর সাথে। পড়ুন যেন জানতে পারেন কীভাবে সেগুলো ব্যবহার করবেন এবং কীভাবে সেগুলো আপনার দৈনন্দিন Bash জীবন সহজ করতে পারে।
ফোল্ডার পাথ সেপারেটর (/)
Bash-এ, ফরওয়ার্ড স্ল্যাশ (/) একটি পাথের অংশগুলো আলাদা করে, সাবফোল্ডার-উইথিন-ফোল্ডার। আপনার হোম ফোল্ডারের ভেতরে "pictures" নামে ফোল্ডার ভিজিট করতে, আপনাকে cd কমান্ড ব্যবহার করতে হবে:
cd /home/USERNAME/pictures
উপরের উদাহরণে একটি ফরওয়ার্ড স্ল্যাশের পরে যা আছে সেটি স্ল্যাশের আগের জিনিসের ভিতরে রয়েছে।
হোম ডিরেক্টরি (~)
আপনার হোম ফোল্ডারের পুরো নাম আপনার Bash টার্মিনালে টাইপ করার বদলে, আপনি টিল্ড ক্যারেক্টার (~) ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনার হোম ফোল্ডারে যেতে, ব্যবহার করুন:
cd ~
আপনি আরও জটিল পাথেও এটিকে ইনকর্পোরেট করতে পারেন। উদাহরণস্বরূপ, আপনার হোম ডিরেক্টরির "Personal" ফোল্ডারের ভেতরে "mydata.txt" নামে একটি ফাইল এডিট করতে, ব্যবহার করুন:
nano ~/Personal/mydata.txt
কারেন্ট / উপরের ফোল্ডার (.)
আপনি একটি সিঙ্গল (.) বা ডাবল ডট (..) ব্যবহার করতে পারেন ডিফাইন করতে কোনো অ্যাকশন করেন্ট ডিরেক্টরির ভিতরে হবেনা বা তার উপরেরটায়। একটি সিঙ্গল ডট (.) করেন্ট ফোল্ডারকে ম্যাপ করে যখন ডাবল ডট (..) তার উপরের ফোল্ডারকে ম্যাপ করে।
ধরি আপনি "/home/USERNAME/pictures" ফোল্ডারে আছেন এবং একই ডিরেক্টরিতে "transform_images.sh" নামের স্ক্রিপ্টটি এক্সিকিউট করতে চান। এই কেসে, টাইপ করুন:
sh ./transform_images.sh
যদি, স্ক্রিপ্ট এক্সিকিউট করার পর, আপনি আপনি যে ফোল্ডারে আছেন তার উপরের ফোল্ডারে ফিরে যেতে চান, টাইপ করুন:
cd ..
এটি আপনাকে "/home/USERNAME/pictures" ফোল্ডার থেকে "/home/USERNAME"-এ রিটার্ন করবে।
কমেন্ট এবং ক্যান্সেল (#)
হ্যাশ সিম্বল (#) Bash স্ক্রিপ্ট লিখার সময় বেশি উপকারী, কারণ এটি আপনাকে ভবিষ্যতের রেফারেন্সের জন্য স্ক্রিপ্টে কমেন্ট যোগ করতে দেয়। Bash হ্যাশ সিম্বলের পরে যা কিছু আছে সেটি ইগনোর করে।
নিচের স্ক্রিপ্টে, প্রথম লাইন এটি একটি Bash স্ক্রিপ্ট ডিফাইন করে, দ্বিতীয় একটি কমেন্ট যা ইগনোর করা হয়, এবং তৃতীয় একটি সাধারণ কপি কমান্ড:
#!/bin/bash # This is a comment - you can type anything you want here cp file1.txt /home/USERNAME/scripts/file2.txt
হ্যাশগুলো উপকারী এমনকি আপনি স্ক্রিপ্ট লিখছেন না যদি, কারণ সেগুলো আপনাকে কমান্ডের অংশ ক্যান্সেল করতে দেয়। সেটি একশনে দেখতে, নিচের সহজ কমান্ডটি ট্রাই করুন:
echo I am YOUR_NAME
তারপর, নিচেরটি ট্রাই করুন:
echo I am #YOUR_NAME
আপনি সেকেন্ড ভার্সনে শুধু "I am" রিটার্ন দেখবেন কারণ হ্যাশটি তার পরে যা কিছু ছিল সেটি ক্যান্সেল করল।
রেঞ্জ ([])
আপনি ব্র্যাকেট ([]) এনক্লোজ করে ক্যারেক্টার রেঞ্জ ডিফাইন করতে পারেন। সেটি একশনে দেখতে, ধরি আপনি ফোল্ডার নাম খুঁজছেন যেগুলো D বা M দিয়ে শুরু হয়। টাইপ করুন:
ls [DM]*
হয়তো আপনি বছরের নামে নামকৃত সাবফোল্ডার দিয়ে পূর্ণ একটি ফোল্ডারে আছেন। গত পাঁচ বছরের ফোল্ডারগুলো /home/USERNAME/backup-এ কপি করতে, ব্যবহার করুন:
cp -r 201[56789] /home/USERNAME/backup
আপনি এতদর къামিয়াব করতে পারেন একটি ড্যাশ (-) দিয়ে:
cp 201[5-9] /home/USERNAME/backup
Bash 5 থেকে 9 পর্যন্ত ইটারেট করবে তাদের মাঝপথের নাম্বারগুলো ইনক্লুড করার জন্য।
রিডাইরেকশন (<>)
এ্যাঙ্গেল ব্র্যাকেট (<>) ব্যবহার করে আপনি একটি কমান্ডের ইনপুট বা আউটপুট রিডাইরেক্ট করতে পারেন। উদাহরণস্বরূপ, নিচের কমান্ড:
ls >> list.txt
ls-এর আউটপুট রিডাইরেক্ট করবে এবং "list.txt" ফাইলে সেভ করবে।
লক্ষ্য করুন যে একটি ডাবল রাইট-এ্যাঙ্গেল ব্র্যাকেট (>>) অ্যাপেন্ড করে একটি কমান্ডের আউটপুটকে একটি ফাইলে। আপনি যদি একই কমান্ডটি আবার রান করেন, তবে এটি এর আউটপুট এক্সিস্টিং কন্টেন্টের শেষে অ্যাপেন্ড করবে। এর কন্টেন্ট রিপ্লেস করতে নতুন ফলাফল দিয়ে, একটি সিঙ্গল রাইট-এ্যাঙ্গেল ব্র্যাকেট (>) ব্যবহার করুন:
ls > list.txt
পাইপ (|)
আপনি বিভিন্ন কমান্ড কম্বাইন করে একটি বড় geheel বানাতে পারেন আরও জটিল ফলাফল অর্জনের জন্য পাইপ (|) ব্যবহার করে। সেগুলো কিছুটা রিডাইরেকশনের সাথে সাদৃশ্যপূর্ণ (তাদের সাদৃশ্য ও পার্থক্য সম্পর্কে আরো জানতে এখানে ক্লিক করুন)।
ধরি আপনার একটি বড় ফাইল আছে হাজার হাজার এন্ট্রির সাথে এবং আপনি সেটিতে আপনার নাম লোকেট করতে চান। টেক্সট এডিটরে সার্চ করার বদলে, নিচেরটি করুন:
cat entries.txt | grep 'YourName'
এই কেসে, "entries.txt"-এর আউটপুট grep কমান্ডে পাইপ হবে।
কমান্ড সেপারেটর (;)
Bash আপনাকে একবারে একাধিক কমান্ড ইস্যু করতে দেয় সেমিকোলন (;) দিয়ে সেগুলো আলাদা করে। উদাহরণস্বরূপ, দুটি ফোল্ডার দুটি ভিন্ন ডেস্টিনেশনে এক কমান্ডে কপি করতে:
cp folder1 destination1; cp folder2 destination2
সেমিকোলন দুটি কমান্ড আলাদা করে এবং Bash-কে সেগুলো সিকোয়েনশিয়ালি এক্সিকিউট করতে বলে। লক্ষ্য করুন যে আপনি দুইটির চেয়ে বেশি কমান্ডও ব্যবহার করতে পারেন আপনি চাইলে।
ওয়াইল্ডকার্ড (*)
আপনি সম্ভবত ইতিমধ্যে কিছু কমান্ডে এস্টেরিস্ক (*) ব্যবহার করেছেন। এটি যেকোনো ক্যারেক্টার সিকোয়েন্স ম্যাচ করে এবং যেসব অ্যাকশন অনুমতি দেয় যেমন একটি ফোল্ডার থেকে অন্য ফোল্ডারে সকল JPG ফাইল কপি করা:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
কোয়েশ্চন মার্ক (?) Bash-এ একটি ওয়াইল্ডকার্ড কিন্তু কেবল একটি সিঙ্গেল ক্যারেক্টার ম্যাচ করে। উদাহরণস্বরূপ:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
উপরের কমান্ড "201" দিয়ে শুরু হওয়া ফোল্ডারগুলোর সকল jpg ফাইল কপি করবে। যেহেতু ওয়াইল্ডকার্ড যেকোনো অ্যালফানিউমেরিক ক্যারেক্টারকে ট্রান্সলেট করে, শুধু নাম্বার নয়, উপরের কমান্ড যেকোনো ফোল্ডার কপি করবে যা "201A" বা "201z" নামে থাকতে পারে।
ব্যাকগ্রাউন্ডে লঞ্চ (&)
আপনি কমান্ডগুলো ব্যাকগ্রাউন্ড প্রসেস হিসেবে রান করতে পারেন শুধু কমান্ডে অ্যাম্পারস্যান্ড সিম্বল (&) অ্যাপেন্ড করে:
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
উপরের কমান্ড huge_file.zip কপি করা শুরু করবে এবং অবিলম্বে ব্যাকগ্রাউন্ডে যাবে, আপনাকে টার্মিনাল ব্যবহার চালু রাখতে দিয়ে। কমান্ডটি অটোমেটিক্যালি এক্সিট করবে যখন এটি কমপ্লিট হবে। আপনি যদি এটিকে আবার ফরওয়ার্ড আনা চান, তবে fg টাইপ করুন এবং Enter চাপুন।
ভেরিয়েবল ($)
ডলার সাইন ($) আপনাকে আপনার কমান্ডগুলোর জন্য ভেরিয়েবল সেট আপ করতে দেয়। সেগুলো একশনে দেখতে, আপনার টার্মিনালে নিচেরটি ইনপুট করুন:
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
লক্ষ্য করুন যে ভেরিয়েবলে ভ্যালু অ্যাসাইন করার সময় কোনো ডলার সাইন নেই।
এস্কেপ (\) এবং কোট (“)
আপনি যদি স্পেশাল ক্যারেক্টারগুলোকে যেন একটি কমান্ডে 그대로 ব্যবহার করতে চান, তবে আপনাকে সেটি এস্কেপ করতে হবে। আপনি সেটি করতে পারেন স্পেশাল ক্যারেক্টারের আগে একটি ব্যাকস্ল্যাশ (\) দিয়ে। উদাহরণস্বরূপ, আপনার একটি ফাইল আছে যার নামে একটি এক্সক্লামেশন মার্ক আছে, তবে আপনাকে \! টাইপ করতে হবে Bash-এর জন্য যাতে সেটি এক্সক্লামেশন মার্ক হিসেবে ইন্টারপ্রেট করে এবং স্পেশাল ক্যারেক্টার হিসেবে না।
এনাথর উপায় হলো সিঙ্গল ('') বা ডবল-কোট ("") ব্যবহার করা। একটি স্ট্রিং কোটে এনক্লোজ করলে, সেটির মধ্যে যেকোনো স্পেশাল ক্যারেক্টার একচুয়াল ক্যারেক্টার হিসেবে ট리트 হবে। সিঙ্গল এবং ডবল কোটের মধ্যে পার্থক্যও আছে। সিঙ্গল কোট এনক্লোজড স্ট্রিংকে টেক্সট হিসেবে ইভ্যালুয়েট করবে যখন ডবল কোট আপনাকে এনক্লোজড স্ট্রিংয়ের ভিতরে ভেরিয়েবল ($) ব্যবহার করতে দেবে।
উপসংহার
উপরেরগুলো Bash-এ একমাত্র স্পেশাল ক্যারেক্টার নয়, কিন্তু সেগুলোই যা আমরা আমাদের দৈনন্দিন টার্মিনাল অভিজ্ঞতার জন্য সবচেয়ে উপকারী মনে করি। Bash-এ দ্রুত घুরে বের হওয়ার জন্য এই কীবোর্ড শর্টকাটগুলো চেক আউট करना ভুলবেন না। কমেন্ট সেকশনে নিচে আমাদের জানাতে দিন যদি আমরা কোনো গুরুত্বপূর্ণ স্পেশাল ক্যারেক্টার মিস করেছি।