কম্পিউটার টিউটোরিয়াল

ব্যাশে ১৫টি অপরিহার্য বিল্ট-ইন কমান্ড এবং প্র্যাক্টিক্যাল উদাহরণ

ব্যাশে ১৫টি অপরিহার্য বিল্ট-ইন কমান্ড এবং প্র্যাক্টিক্যাল উদাহরণব্যাশ শেলের সাথে বেশ কিছু কমান্ড বিল্ট-ইন হিসেবে আসে (অর্থাৎ ব্যাশ শেলের ভিতরে তৈরি)।

আপনি যখন একটি বিল্ট-ইন কমান্ড এক্সিকিউট করেন, তখন ব্যাশ শেল তা অবিলম্বে এক্সিকিউট করে, অন্য কোনো প্রোগ্রাম আহ্বান ছাড়া।

ব্যাশ শেলের বিল্ট-ইন কমান্ডها এক্সটার্নাল কমান্ডের চেয়ে দ্রুত, কারণ এক্সটার্নাল কমান্ড সাধারণত এক্সিকিউশনের জন্য একটি প্রসেস ফর্ক করে।

এই আর্টিকেলে আমরা কিছু উপযোগী ব্যাশ শেল বিল্ট-ইন কমান্ড উদাহরণসহ রিভিউ করব।

১. ব্যাশ এক্সপোর্ট কমান্ড উদাহরণ

এক্সপোর্ট কমান্ড একটি ভেরিয়েবল বা ফাংশনকে বর্তমান শেলে চলমান সব চাইল্ড প্রসেসের এনভায়রনমেন্টে এক্সপোর্ট করতে ব্যবহৃত হয়।

export varname=value
export -f functionname # বর্তমান শেলে একটি ফাংশন এক্সপোর্ট করে।

এটি একটি ভেরিয়েবল বা ফাংশনকে মানসহ এক্সপোর্ট করে। "env" কমান্ড সব এনভায়রনমেন্ট ভেরিয়েবল লিস্ট করে। নিচের উদাহরণে আপনি দেখতে পাবেন যে env এক্সপোর্ট করা ভেরিয়েবলটি প্রদর্শন করে।

$ export country=India $ env SESSIONNAME=Console country=India _=/usr/bin/env

"export -p" কমান্ডও বর্তমান শেলে সকল এক্সপোর্ট করা ভেরিয়েবল দেখায়।

২. ব্যাশ ইভ্যাল কমান্ড উদাহরণ

ইভ্যাল কমান্ড সকল দिये गये আর্গুমেন্টকে কম্বাইন করে, কম্বাইন করা এক্সপ্রেশনটি ইভ্যালুয়েট করে এবং এক্সিকিউট করে, এরপর এক্সিকিউট করা কমান্ডের এক্সিট স্ট্যাটাস রিটার্ন করে।

$ cat evalex.sh if [ ! -z $1 ] then proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1" else proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu" fi eval $proccomm

উপরোক্ত কোড স্নিপেট একটি আর্গুমেন্ট গ্রহণ করে, যা গ্রেপ কমান্ডের জন্য প্যাটার্ন। এটি প্রসেসগুলোকে সিপিইউ ইউজেজ অনুযায়ী লিস্ট করে এবং কমান্ড লাইনে দেওয়া নির্দিষ্ট প্যাটার্নের জন্য গ্রেপ করে।

নোট: এই আর্টিকেল আমাদের চলমান ব্যাশ টিউটোরিয়াল সিরিজের অংশ।

৩. ব্যাশ হ্যাশ কমান্ড উদাহরণ

হ্যাশ কমান্ড একটি হ্যাশ টেবিল মেইনটেইন করে, যেখানে ব্যবহৃত কমান্ডের পাথ নাম থাকে। আপনি যখন কোনো কমান্ড এক্সিকিউট করেন, তখন এটি $PATH ভেরিয়েবলে কমান্ডটি খুঁজে বেড়ায়।
কিন্তু যদি কমান্ডটি হ্যাশ টেবিলে উপলব্ধ থাকে, তবে সেটি সেখান থেকে নিয়ে এক্সিকিউট করে। হ্যাশ টেবিলে ওই শেলে अब পর্যন্ত ব্যবহৃত প্রতিটি কমান্ডের হিট সংখ্যা থাকে।

$ hash hits command 1 /usr/bin/cat 2 /usr/bin/ps 4 /usr/bin/ls

আপনি -d অপশন দিয়ে হ্যাশ টেবিল থেকে কোনো নির্দিষ্ট কমান্ড মুছে ফেলতে পারেন, এবং -r অপশন দিয়ে পুরো হ্যাশ টেবিল রিসেট করতে পারেন।

$ hash -d cat $ hash hits command 2 /usr/bin/ps 4 /usr/bin/ls

৪. ব্যাশ পিডব্লিউডি কমান্ড উদাহরণ

পিডব্লিউডি একটি শেল বিল্ট-ইন কমান্ড যা বর্তমান ওয়ার্কিং ডিরেক্টরি প্রিন্ট করে। এটি মূলত বিল্ট-ইন ভেরিয়েবল ${PWD} এর মান রিটার্ন করে।

$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises

৫. ব্যাশ রিড-অনলি কমান্ড উদাহরণ

রিড-অনলি কমান্ড একটি ভেরিয়েবল বা ফাংশনকে রিড-অনলি হিসেবে চিহ্নিত করতে ব্যবহৃত হয়, যা পরবর্তীতে পরিবর্তন করা যাবে না।

$ cat readonly_ex.sh #!/bin/bash # একটি অ্যারে রিড-অনলি হিসেবে রেস্ট্রিক্ট করা readonly -a shells=("ksh" "bash" "sh" "csh" ); echo ${#shells[@]} # অ্যারে মডিফাই করার চেষ্টা, এরর থ্রো করে shells[0]="gnu-bash" echo ${shells[@]} $ ./readonly_ex.sh 4 readonly_ex.sh: line 9: shells: readonly variable

৬. ব্যাশ শিফট কমান্ড উদাহরণ

শিফট কমান্ড পজিশনাল প্যারামিটারهاকে N বার বামে শিফট করে এবং শিফট করার পর ভেরিয়েবলهاকে উপযুক্তভাবে রিনেম করে।

$ cat shift.sh #! /bin/bash while [ $# -gt 0 ] do case "$1" in -l) echo "List command" ls shift ;; -p) echo "Process command" ps -a shift ;; -t) echo "Hash Table command" hash shift ;; -h) echo "Help command" help shift ;; esac done $./shift.sh -l -t List command analysis break testing t1.sh temp Hash Table command hits command 1 /usr/bin/ls

৭. ব্যাশ টেস্ট কমান্ড উদাহরণ

টেস্ট কমান্ড কন্ডিশনাল এক্সপ্রেশন ইভ্যালুয়েট করে এবং ইভ্যালুয়েশনের ভিত্তিতে শূন্য বা এক রিটার্ন করে। আরও টেস্ট অপারেটরের জন্য ব্যাশের ম্যানুয়াল পেজ রেফার করুন।

#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi

৮. ব্যাশ গেটঅপ্টস কমান্ড উদাহরণ

গেটঅপ্টস কমান্ড দেওয়া কমান্ড লাইন আর্গুমেন্টগুলো পার্স করতে ব্যবহৃত হয়। আমরা অপশনদের জন্য নিয়ম সংজ্ঞায়িত করতে পারি, অর্থাৎ কোন অপশন আর্গুমেন্ট এক্সপেক্ট করে এবং কোনটি করে না। গেটঅপ্টস কমান্ডে, যদি কোনো অপশনের পর কোলন থাকে, তবে সেটি সেই অপশনের জন্য আর্গুমেন্ট এক্সপেক্ট করে।

গেটঅপ্টস দুটি ভেরিয়েবল প্রদান করে: $OPTIND এবং $OPTARG, য亨利 NCSTAR তালিকায় পরবর্তী প্যারামিটারের সূচক এবং অপশন আর্গুমেন্ট থাকে।

$ cat options.sh #! /bin/bash while getopts :h:r:l: OPTION do case $OPTION in h) echo "help of $OPTARG" help "$OPTARG" ;; r) echo "Going to remove a file $OPTARG" rm -f "$OPTARG" ;; esac done $ ./options.sh -h jobs help of jobs jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Lists the active jobs. The -l option lists process id's in addition to the normal information; the -p option lists process id's only.

৯. ব্যাশ লগআউট কমান্ড

লগআউট বিল্ট-ইন করেন্ট শেল থেকে বের হতে ব্যবহৃত হয়।

১০. ব্যাশ ইউমাস্ক কমান্ড উদাহরণ

ইউমাস্ক কমান্ড বর্তমান প্রসেসের জন্য ফাইল মোড ক্রিয়েশন মাস্ক সেট করে। যখন কোনো ইউজার ফাইল তৈরি করে, তখন এর ডিফল্ট পারমিশন ইউমাস্কে সেট করা ভ্যালুর উপর ভিত্তি করে হয়। ফাইলের ডিফল্ট পারমিশন ৬৬৬, এবং ইউজার ফাইল তৈরি করার সময় এটি ইউমাস্ক বিটসদ্বারা মাস্ক করা হয়।

বিস্তারিত জানতে আমাদের আর্টিকেল "File and Directory permissions" দেখুন।

যখন ইউজার ফাইল তৈরি করে, ৬৬৬ কে ০২২ দিয়ে মাস্ক করা হয়, তাই ডিফল্ট ফাইল পারমিশন হবে ৬৪৪।

$ umask 0022 $ > temporary $ ls -l temporary -rw-r--r-- 1 root root 4 Jul 26 07:48 temporary

১১. ব্যাশ সেট কমান্ড উদাহরণ

সেট একটি শেল বিল্ট-ইন কমান্ড, যা শেলের ইন্টারনাল ভেরিয়েবল সেট ও মডিফাই করতে ব্যবহৃত হয়। আর্গুমেন্ট ছাড়া সেট কমান্ড সকল ভেরিয়েবল এবং তার মান লিস্ট করে। সেট কমান্ড পজিশনাল প্যারামিটারদের মান সেট করতে ও ব্যবহৃত হয়।

$ set +o history # হিস্টরি স্টোরিং ডিজেবল করতে। +o দিয়ে অপশন ডিজেবল করা হয়। $ set -o history -o হিস্টরি ইনেবল করে $ cat set.sh var="Welcome to thegeekstuff" set -- $var echo "\$1=" $1 echo "\$2=" $2 echo "\$3=" $3 $ ./set.sh $1=Welcome $2=to $3=thegeekstuff

১২. ব্যাশ আনসেট কমান্ড উদাহরণ

আনসেট বিল্ট-ইন শেল ভেরিয়েবলকে নাল সেট করতে ব্যবহৃত হয়। আনসেট অ্যারের একটি এলিমেন্ট বা পুরো অ্যারে ডিলিট করতে ও ব্যবহৃত হয়।

ব্যাশ অ্যারে সম্পর্কে আরও জানতে আমাদের পূর্বের আর্টিকেল "15 Bash Array Operations" দেখুন।

$ cat unset.sh #!/bin/bash # মান অ্যাসাইন ও প্রিন্ট করা var="welcome to thegeekstuff" echo $var # ভেরিয়েবল আনসেট করা unset var echo $var $ ./unset.sh welcome to thegeekstuff

উপরোক্ত উদাহরণে, ভেরিয়েবল "var" আনসেট করার পর সেটি নাল স্ট্রিংয়ে অ্যাসাইন হয়ে যাবে।

১৩. ব্যাশ লেট কমান্ড উদাহরণ

লেট কমান্ড শেল ভেরিয়েবলের ওপর অ্যারিথমেটিক অপারেশন করতে ব্যবহৃত হয়।

$ cat arith.sh #! /bin/bash let arg1=12 let arg2=11 let add=$arg1+$arg2 let sub=$arg1-$arg2 let mul=$arg1*$arg2 let div=$arg1/$arg2 echo $add $sub $mul $div $ ./arith.sh 23 1 132 1

১৪. ব্যাশ শপ্ট কমান্ড উদাহরণ

শপ্ট বিল্ট-ইন কমান্ড শেল অপশন সেট ও আনসেট করতে ব্যবহৃত হয়। এই কমান্ড দিয়ে আপনি শেলের বুদ্ধিমত্তা ব্যবহার করতে পারেন।

$cat shopt.sh #! /bin/bash ## xpg_echo ইনেবল করার আগে echo "WELCOME\n" echo "GEEKSTUF\n" shopt -s xpg_echo ## xpg_echo ইনেবল করার পর echo "WELCOME\n" echo "GEEKSTUF\n" # অ্যালিয়াস ডিজেবল করার আগে alias l.='ls -l .' l. # অ্যালিয়াস ডিজেবল করার পর shopt -u expand_aliases l. $ ./shopt.sh WELCOME\n GEEKSTUF\n WELCOME GEEKSTUF total 3300 -rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg -r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop shopt.sh: line 17: l.: command not found

xpg_echo অপশন ইনেবল করার আগে, echo স্টেটমেন্ট এস্কেপ সিকোয়েন্স এক্সপ্যান্ড করত না। "l." করেন্ট ডিরেক্টরির ls -l এর অ্যালিয়াস। শেলে expand_aliases অপশন ডিজেবল করার পর, এটি অ্যালিয়াস এক্সপ্যান্ড করল না, ফলে "l. command not found" এরর দেখায়।

১৫. ব্যাশ প্রিন্টএফ কমান্ড উদাহরণ

সি ল্যাঙ্গুয়েজের printf এর মতো, ব্যাশ প্রিন্টএফ বিল্ট-ইন ফরম্যাটেড প্রিন্ট অপারেশনের জন্য ব্যবহৃত হয়।

উদাহরণ ১৩-এ, স্ক্রিপ্টটি দুটি ইনপুটের ওপর অ্যারিথমেটিক অপারেশন করে। সেই স্ক্রিপ্টে echo স্টেটমেন্টের বদলে প্রিন্টএফ স্টেটমেন্ট ব্যবহার করে ফরম্যাটেড আউটপুট প্রিন্ট করা যায়, নিচে দেখানো হলো।

arith.sh-এ, echo স্টেটমেন্টটি এই প্রিন্টএফ স্টেটমেন্ট দিয়ে রিপ্লেস করুন।

printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div $ ./arith.sh Addition=23 Subtraction=1 Multiplication=132 Division=1.000000

  1. লিনাক্স কমান্ড চেইনিং মাস্টার করুন: ১০টি অপরিহার্য অপারেটর প্র্যাক্টিক্যাল উদাহরণসহ

  2. ব্যাশ শেল ফাংশন মাস্টার করুন: ৬টি প্র্যাক্টিক্যাল উদাহরণ ও টিপস

  3. ব্যাশ স্ক্রিপ্টিং মাস্টার করুন: ৫টি রিয়েল-ওয়ার্ল্ড উদাহরণসহ প্র্যাক্টিক্যাল ইন্ট্রোডাকশন

  4. উইন্ডোজ কমান্ড প্রম্পট মাস্টার করুন: প্রতিটি ব্যবহারকারীর জানা দরকার ১০টি এসেনশিয়াল কমান্ড