বাশে সব অক্ষর সমান নয়। তাদের মধ্যে কিছু বিশেষ ফাংশন পরিচালনা করে, কমান্ড টুইক করে এবং ডেটা ম্যানিপুলেট করতে আমাদের সাহায্য করে। এজন্য আমরা সবচেয়ে গুরুত্বপূর্ণ ব্যাশ বিশেষ অক্ষর সহ নিম্নলিখিত তালিকাটি সংকলন করেছি। এগুলি কীভাবে ব্যবহার করবেন এবং কীভাবে তারা আপনার দৈনন্দিন ব্যাশ জীবনকে সহজ করে তুলতে পারে তা জানতে পড়ুন৷
৷ফোল্ডার পাথ বিভাজক (/)
ব্যাশে, ফরোয়ার্ড-স্ল্যাশ (/
)একটি পথের অংশ, সাবফোল্ডার-ভিতরে-ফোল্ডারগুলিকে আলাদা করে। আপনার হোম ফোল্ডারের ভিতরে "ছবি" নামের ফোল্ডারটি দেখার জন্য, আপনাকে cd
কমান্ডটি ব্যবহার করতে হবে যেমন:
cd /home/USERNAME/pictures
উপরের উদাহরণে একটি ফরোয়ার্ড স্ল্যাশের পরে সবকিছুই স্ল্যাশের আগে যা আছে তার মধ্যে থাকে।
হোম ডিরেক্টরি (~)
আপনার ব্যাশ টার্মিনালে আপনার হোম ফোল্ডারের পুরো নাম টাইপ করার পরিবর্তে, আপনি টিল্ড অক্ষরটি ব্যবহার করতে পারেন (~
) উদাহরণস্বরূপ, আপনার হোম ফোল্ডারে যেতে, ব্যবহার করুন:
cd ~
আপনি এটি আরও জটিল পাথগুলিতে অন্তর্ভুক্ত করতে পারেন। উদাহরণস্বরূপ, আপনার হোম ডিরেক্টরিতে "ব্যক্তিগত" ফোল্ডারের ভিতরে "mydata.txt" নামের একটি ফাইল সম্পাদনা করতে, ব্যবহার করুন:
nano ~/Personal/mydata.txt
বর্তমান / উপরের ফোল্ডার (.)
আপনি একটি একক (.
) ব্যবহার করতে পারেন ) বা ডবল ডট (..
)যথাক্রমে বর্তমান ডিরেক্টরি বা উপরের একটির ভিতরে একটি ক্রিয়া সম্পাদন করা উচিত কিনা তা নির্ধারণ করতে। একটি একক ডট (.) বর্তমান ফোল্ডারে ম্যাপ করে যখন একটি ডবল ডট (..) এর উপরের ফোল্ডারে ম্যাপ করে৷
ধরা যাক আপনি "/home/USERNAME/pictures" ফোল্ডারে আছেন এবং একই ডিরেক্টরির মধ্যে "transform_images.sh" নামক স্ক্রিপ্টটি চালাতে চান৷ এই ক্ষেত্রে, টাইপ করুন:
sh ./transform_images.sh
যদি, স্ক্রিপ্টটি কার্যকর করার পরে, আপনি বর্তমানে যে ফোল্ডারে আছেন তার উপরের ফোল্ডারে ফিরে যেতে চান, টাইপ করুন:
cd ..
এটি আপনাকে "/home/USERNAME/pictures" ফোল্ডার থেকে "/home/USERNAME" এ ফিরিয়ে দেবে৷
মন্তব্য এবং বাতিল (#)
হ্যাশ প্রতীক (#
) ব্যাশ স্ক্রিপ্ট লেখার সময় আরও কার্যকর কারণ এটি আপনাকে ভবিষ্যতের রেফারেন্সের জন্য মন্তব্য যোগ করতে দেয়। ব্যাশ হ্যাশ চিহ্ন অনুসরণ করে সবকিছু উপেক্ষা করে।
নিম্নলিখিত স্ক্রিপ্টে, প্রথম লাইনটি এটি একটি ব্যাশ স্ক্রিপ্ট, দ্বিতীয়টি একটি মন্তব্য যা উপেক্ষা করা হয়েছে এবং তৃতীয়টি একটি সাধারণ কপি কমান্ড:
#!/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
আপনি দ্বিতীয় সংস্করণে শুধুমাত্র "আমি আছি" দেখতে পাবেন কারণ হ্যাশ পরবর্তী সমস্ত কিছু বাতিল করে দেবে।
পরিসীমা ([])
আপনি অক্ষরের রেঞ্জগুলিকে বন্ধনীতে আবদ্ধ করে সংজ্ঞায়িত করতে পারেন ([]
) এটি কার্যকরভাবে দেখতে, ধরুন আপনি ফোল্ডারের নামগুলি খুঁজতে চান যা D বা M দিয়ে শুরু হয়। টাইপ:
ls [DM]*
সম্ভবত আপনি প্রতি বছরের পরিবর্তে সাবফোল্ডার দিয়ে ভরা একটি ফোল্ডারে আছেন। /home/USERNAME/backup
-এ আগের পাঁচ বছরের ফোল্ডার কপি করতে , ব্যবহার করুন:
cp -r 201[56789] /home/USERNAME/backup
এমনকি আপনি একটি ড্যাশ (-):
দিয়ে তাদের আরও সরল করতে পারেনcp 201[5-9] /home/USERNAME/backup
ব্যাশ তাদের মধ্যে সংখ্যা অন্তর্ভুক্ত করতে 5 থেকে 9 পর্যন্ত পুনরাবৃত্তি করবে।
পুনঃনির্দেশ (<>)
কোণ বন্ধনী ব্যবহার করে (<>
), আপনি একটি কমান্ডের ইনপুট বা আউটপুট পুনর্নির্দেশ করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ড:
ls >> list.txt
ls
এর আউটপুট পুনর্নির্দেশ করবে এবং এটিকে “list.txt” ফাইলে সংরক্ষণ করুন।
মনে রাখবেন একটি ডবল ডান-কোণ বন্ধনী (>>
) সংযুক্ত হয় একটি ফাইলে একটি কমান্ডের আউটপুট। আপনি যদি একই কমান্ড পুনরায় চালান, তাহলে এটি বিদ্যমান সামগ্রীর শেষে এর আউটপুট যুক্ত করবে। প্রতিস্থাপন করতে নতুন ফলাফল সহ এর বিষয়বস্তু, একটি একক ডান-কোণ বন্ধনী ব্যবহার করুন (>
):
ls > list.txt
পাইপ (|)
আপনি পাইপ (|
) এগুলি কিছুটা পুনঃনির্দেশের অনুরূপ (এখানে তাদের মিল এবং পার্থক্য সম্পর্কে আরও বেশি)।
ধরুন আপনার হাজার হাজার এন্ট্রি সহ একটি বিশাল ফাইল রয়েছে এবং আপনি এতে আপনার নামটি সনাক্ত করতে চান। পাঠ্য সম্পাদকে এটি অনুসন্ধান করার পরিবর্তে, নিম্নলিখিতগুলি করুন:
cat entries.txt | grep 'YourName'
এই ক্ষেত্রে, “entries.txt”-এর আউটপুট grep
-এ পাইপ করা হবে আদেশ।
কমান্ড বিভাজক (;)
ব্যাশ আপনাকে সেমিকোলন (;
) দিয়ে আলাদা করে একযোগে একাধিক কমান্ড ইস্যু করতে দেয় ) উদাহরণস্বরূপ, একটি কমান্ড দিয়ে দুটি ফোল্ডার দুটি ভিন্ন গন্তব্যে অনুলিপি করতে:
cp folder1 destination1; cp folder2 destination2
সেমিকোলন দুটি কমান্ডকে আলাদা করে এবং ব্যাশকে সেগুলিকে ক্রমানুসারে কার্যকর করতে বলে। মনে রাখবেন আপনি চাইলে দুইটির বেশি কমান্ড ব্যবহার করতে পারেন।
ওয়াইল্ডকার্ড (*)
আপনি সম্ভবত ইতিমধ্যেই তারকাচিহ্ন (*
) ব্যবহার করেছেন ) কিছু কমান্ডে। এটি অক্ষরের যেকোনো ক্রম মেলে এবং সমস্ত JPG ফাইল এক ফোল্ডার থেকে অন্য ফোল্ডারে অনুলিপি করার মত ক্রিয়াকলাপের অনুমতি দেয়:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
প্রশ্ন চিহ্ন (?
) এছাড়াও ব্যাশে একটি ওয়াইল্ডকার্ড কিন্তু শুধুমাত্র একটি একক অক্ষরের সাথে মেলে৷ যেমন:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
উপরের কমান্ডটি "201" দিয়ে শুরু হওয়া ফোল্ডারে সমস্ত jpg ফাইল কপি করবে। যেহেতু ওয়াইল্ডকার্ড যেকোন আলফানিউমেরিক অক্ষরে অনুবাদ করে, শুধুমাত্র সংখ্যা নয়, উপরের কমান্ডটি "201A" বা "201z" নামের যেকোন ফোল্ডারও কপি করবে৷
ব্যাকগ্রাউন্ডে লঞ্চ করুন (&)
আপনি শুধুমাত্র একটি অ্যাম্পারস্যান্ড চিহ্ন (&
) দিয়ে কমান্ড যুক্ত করে ব্যাকগ্রাউন্ড প্রসেস হিসাবে কমান্ড চালাতে পারেন ):
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
উপরের বিশাল_file.zip ফাইলটি অনুলিপি করা শুরু করবে এবং অবিলম্বে পটভূমিতে চলে যাবে, আপনাকে টার্মিনাল ব্যবহার চালিয়ে যেতে দেবে। কমান্ডটি সম্পূর্ণ হলে স্বয়ংক্রিয়ভাবে প্রস্থান হবে। আপনি যদি এটিকে আবার সামনে আনতে চান, তাহলে আপনি fg
টাইপ করে তা করতে পারেন এর পরে এন্টার।
ভেরিয়েবল ($)
ডলার চিহ্ন ($
) আপনাকে আপনার কমান্ডে ব্যবহারের জন্য ভেরিয়েবল সেট আপ করতে দেয়। তাদের কার্যকারিতা দেখতে, আপনার টার্মিনালে নিম্নলিখিতটি প্রবেশ করার চেষ্টা করুন:
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
নোট করুন যে ভেরিয়েবলের মান নির্ধারণ করার সময় কোন ডলার চিহ্ন নেই।
Escapes (\) এবং উদ্ধৃতি (”)
আপনি যদি কোনও বিশেষ অক্ষর ব্যবহার করতে চান যেমন এটি একটি কমান্ডে রয়েছে, তবে আপনাকে এটি এড়িয়ে যেতে হবে। আপনি একটি ব্যাকস্ল্যাশ (\
) দিয়ে বিশেষ অক্ষরের আগে এটি করতে পারেন ) উদাহরণ স্বরূপ, আপনার কাছে যদি বিস্ময়বোধক চিহ্ন যুক্ত নামের একটি ফাইল থাকে, তাহলে আপনাকে টাইপ করতে হবে \!
পরিবর্তে ব্যাশ এটিকে একটি বিস্ময় চিহ্ন হিসাবে ব্যাখ্যা করতে এবং একটি বিশেষ অক্ষর হিসাবে নয়।
আরেকটি উপায় হল একক (''
) ব্যবহার করা ) বা ডবল-উদ্ধৃতি (""
) উদ্ধৃতিগুলির মধ্যে একটি স্ট্রিং আবদ্ধ করে, এতে যে কোনও বিশেষ অক্ষরকে প্রকৃত চরিত্র হিসাবে গণ্য করা হবে। একক এবং দ্বিগুণ উদ্ধৃতিগুলির মধ্যেও পার্থক্য রয়েছে। একক উদ্ধৃতি আবদ্ধ স্ট্রিংকে পাঠ্য হিসাবে মূল্যায়ন করবে যখন দ্বিগুণ উদ্ধৃতিগুলি আপনাকে আবদ্ধ স্ট্রিং-এর মধ্যে ভেরিয়েবল ($) ব্যবহার করতে দেয়৷
র্যাপিং আপ
উপরেরগুলি ব্যাশের একমাত্র বিশেষ অক্ষর নয়, তবে এগুলিকে আমরা টার্মিনালে আমাদের প্রতিদিনের অ্যাডভেঞ্চারের জন্য সবচেয়ে দরকারী বলে মনে করি। ব্যাশে দ্রুত ঘোরাঘুরি করতে এই কীবোর্ড শর্টকাটগুলি পরীক্ষা করতে ভুলবেন না। আমরা যদি কোনো গুরুত্বপূর্ণ বিশেষ চরিত্র মিস করে থাকি তাহলে নীচের মন্তব্য বিভাগে আমাদের জানান৷