Bash-এর বেশ কয়েকটি কমান্ড রয়েছে যা শেলের সাথে আসে (যেমন ব্যাশ শেলের ভিতরে তৈরি)।
আপনি যখন একটি অন্তর্নির্মিত কমান্ড চালান, তখন ব্যাশ শেল তা অবিলম্বে কার্যকর করে, অন্য কোনো প্রোগ্রাম না করেই।
ব্যাশ শেল বিল্ট-ইন কমান্ডগুলি বাহ্যিক কমান্ডের চেয়ে দ্রুততর, কারণ বহিরাগত কমান্ডগুলি সাধারণত এটি কার্যকর করার জন্য একটি প্রক্রিয়াকে কাঁটা দেয়৷
এই নিবন্ধে আসুন উদাহরণ সহ কিছু দরকারী ব্যাশ শেল বিল্টইন পর্যালোচনা করি।
1. ব্যাশ এক্সপোর্ট কমান্ডের উদাহরণ
এক্সপোর্ট কমান্ড বর্তমান শেলে চলমান সমস্ত চাইল্ড প্রক্রিয়ার পরিবেশে একটি পরিবর্তনশীল বা ফাংশন রপ্তানি করতে ব্যবহৃত হয়।
export varname=value
export -f functionname # exports a function in the current shell.
এটি একটি মান সহ একটি পরিবর্তনশীল বা ফাংশন রপ্তানি করে। "env" কমান্ড সমস্ত পরিবেশ ভেরিয়েবলের তালিকা করে। নিম্নলিখিত উদাহরণে, আপনি দেখতে পারেন যে env এক্সপোর্ট করা ভেরিয়েবল প্রদর্শন করে।
$ export country=India $ env SESSIONNAME=Console country=India _=/usr/bin/env
"export -p" কমান্ড বর্তমান শেলের সমস্ত রপ্তানি করা ভেরিয়েবল প্রদর্শন করে।
<কেন্দ্র> কেন্দ্র>2. ব্যাশ ইভাল কমান্ডের উদাহরণ
eval কমান্ড সমস্ত প্রদত্ত আর্গুমেন্টকে একত্রিত করে এবং সম্মিলিত অভিব্যক্তিকে মূল্যায়ন করে এবং এটি কার্যকর করে এবং কার্যকর করা কমান্ডের প্রস্থান অবস্থা ফেরত দেয়।
$ 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
উপরের কোড স্নিপেট একটি আর্গুমেন্ট গ্রহণ করে, যা একটি grep কমান্ডের প্যাটার্ন। এটি কমান্ড লাইনে প্রদত্ত একটি নির্দিষ্ট প্যাটার্নের জন্য সিপিইউ ব্যবহার এবং গ্রেপসের ক্রম অনুসারে প্রক্রিয়াগুলি তালিকাভুক্ত করে৷
দ্রষ্টব্য: এই নিবন্ধটি আমাদের চলমান ব্যাশ টিউটোরিয়াল সিরিজের অংশ।
3. ব্যাশ হ্যাশ কমান্ডের উদাহরণ
হ্যাশ কমান্ড একটি হ্যাশ টেবিল বজায় রাখে, যেখানে ব্যবহৃত কমান্ডের পথের নাম রয়েছে। আপনি যখন একটি কমান্ড চালান, তখন এটি $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
4. Bash pwd কমান্ডের উদাহরণ
pwd হল একটি শেল বিল্ট-ইন কমান্ড যা বর্তমান কার্যকারী ডিরেক্টরি প্রিন্ট করতে পারে। এটি মূলত বিল্ট ইন ভেরিয়েবল ${PWD}
এর মান প্রদান করে$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises
5. Bash শুধুমাত্র পাঠযোগ্য কমান্ড উদাহরণ
একটি ভেরিয়েবল বা ফাংশনকে শুধুমাত্র পঠনযোগ্য হিসাবে চিহ্নিত করতে readonly কমান্ড ব্যবহার করা হয়, যা আর পরিবর্তন করা যায় না।
$ cat readonly_ex.sh #!/bin/bash # Restricting an array as a readonly readonly -a shells=("ksh" "bash" "sh" "csh" ); echo ${#shells[@]} # Trying to modify an array, it throws an error shells[0]="gnu-bash" echo ${shells[@]} $ ./readonly_ex.sh 4 readonly_ex.sh: line 9: shells: readonly variable
6. ব্যাশ শিফট কমান্ডের উদাহরণ
shift কমান্ড ব্যবহার করা হয় অবস্থানগত পরামিতিগুলিকে 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
7. ব্যাশ টেস্ট কমান্ডের উদাহরণ
পরীক্ষা কমান্ড শর্তসাপেক্ষ অভিব্যক্তি মূল্যায়ন করে এবং মূল্যায়নের উপর ভিত্তি করে শূন্য বা এক প্রদান করে। আরও পরীক্ষা অপারেটরদের জন্য, ব্যাশের ম্যানুয়াল পৃষ্ঠাটি দেখুন।
#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi
8. Bash getopts কমান্ডের উদাহরণ
getopts কমান্ড প্রদত্ত কমান্ড লাইন আর্গুমেন্ট পার্স করতে ব্যবহৃত হয়। আমরা বিকল্পগুলির জন্য নিয়মগুলি সংজ্ঞায়িত করতে পারি যেমন কোন বিকল্পটি আর্গুমেন্ট গ্রহণ করে এবং কোনটি নয়। getopts কমান্ডে, যদি একটি বিকল্প একটি কোলন দ্বারা অনুসরণ করা হয়, তাহলে এটি সেই বিকল্পের জন্য একটি যুক্তি আশা করে৷
getopts দুটি ভেরিয়েবল $OPTIND এবং $OPTARG প্রদান করে যার যথাক্রমে পরবর্তী প্যারামিটার এবং বিকল্প আর্গুমেন্টের সূচক রয়েছে।
$ 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.
9. ব্যাশ লগআউট কমান্ড
একটি বর্তমান শেল থেকে প্রস্থান করার জন্য অন্তর্নির্মিত লগআউট ব্যবহার করা হয়৷
10. ব্যাশ উমাস্ক কমান্ডের উদাহরণ
umask কমান্ড একটি বর্তমান প্রক্রিয়ার জন্য একটি ফাইল মোড তৈরি মাস্ক সেট করে। যখন একজন ব্যবহারকারী একটি ফাইল তৈরি করে, তখন তার ডিফল্ট অনুমতি উমাস্কে সেট করা মানের উপর ভিত্তি করে। ফাইলের জন্য ডিফল্ট অনুমতি হল 666, এবং ব্যবহারকারী যখন একটি ফাইল তৈরি করবে তখন এটি umask বিট দিয়ে মাস্ক করা হবে।
আরও বিশদ বিবরণের জন্য অনুগ্রহ করে আমাদের নিবন্ধটি দেখুন ফাইল এবং ডিরেক্টরি অনুমতিগুলি৷
৷যখন ব্যবহারকারী একটি ফাইল তৈরি করে 666 022 দিয়ে মাস্ক করা হয়, তাই ডিফল্ট ফাইলের অনুমতি 644 হবে।
$ umask 0022 $ > temporary $ ls -l temporary -rw-r--r-- 1 root root 4 Jul 26 07:48 temporary
11. ব্যাশ সেট কমান্ড উদাহরণ
সেট হল একটি শেল বিল্ট-ইন কমান্ড, যা শেলের অভ্যন্তরীণ ভেরিয়েবল সেট এবং পরিবর্তন করতে ব্যবহৃত হয়। আর্গুমেন্ট ছাড়াই সেট কমান্ড সমস্ত ভেরিয়েবল এবং এর মান তালিকাভুক্ত করে। সেট কমান্ডটি অবস্থানগত পরামিতিগুলির জন্য মান সেট করতেও ব্যবহৃত হয়।
$ set +o history # To disable the history storing. +o disables the given options. $ set -o history -o enables the history $ 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
12. ব্যাশ আনসেট কমান্ড উদাহরণ
আনসেট বিল্ট-ইন শেল ভেরিয়েবলকে নাল সেট করতে ব্যবহৃত হয়। আনসেট এছাড়াও একটি অ্যারের একটি উপাদান মুছে ফেলার জন্য এবং
সম্পূর্ণ অ্যারে মুছে ফেলার জন্য ব্যবহৃত হয়।
ব্যাশ অ্যারে সম্পর্কে আরও বিশদ বিবরণের জন্য, আমাদের আগের নিবন্ধ 15 ব্যাশ অ্যারে অপারেশনস
পড়ুন$ cat unset.sh #!/bin/bash #Assign values and print it var="welcome to thegeekstuff" echo $var #unset the variable unset var echo $var $ ./unset.sh welcome to thegeekstuff
উপরের উদাহরণে, আনসেট করার পর ভেরিয়েবল "var" নাল স্ট্রিং দিয়ে বরাদ্দ করা হবে।
13. ব্যাশ লেট কমান্ড উদাহরণ
let কমান্ডগুলি শেল ভেরিয়েবলে গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে ব্যবহৃত হয়।
$ 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
14. ব্যাশ শপ কমান্ডের উদাহরণ
শপ বিল্ট ইন কমান্ড একটি শেল বিকল্প সেট এবং আনসেট করতে ব্যবহৃত হয়। এই কমান্ডটি ব্যবহার করে, আপনি শেল বুদ্ধিমত্তা ব্যবহার করতে পারেন।
$cat shopt.sh #! /bin/bash ## Before enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" shopt -s xpg_echo ## After enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" # Before disabling aliases alias l.='ls -l .' l. # After disabling aliases 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 বিকল্প সক্রিয় করার আগে, ইকো স্টেটমেন্ট এস্কেপ সিকোয়েন্স প্রসারিত করেনি। "l" বর্তমান ডিরেক্টরির ls -l এর উপনাম করা হয়। শেলে expand_aliases অপশনটি নিষ্ক্রিয় করার পরে, এটি উপনামগুলি প্রসারিত করেনি, আপনি একটি ত্রুটি লক্ষ্য করতে পারেন। কমান্ড পাওয়া যায়নি।
15. Bash printf কমান্ডের উদাহরণ
সি ল্যাঙ্গুয়েজে printf-এর মতোই, bash printf বিল্ট-ইন প্রিন্ট অপারেশন ফরম্যাট করতে ব্যবহৃত হয়।
উদাহরণ 13, স্ক্রিপ্ট দুটি ইনপুট উপর পাটিগণিত অপারেশন করে. ইকো স্টেটমেন্টের পরিবর্তে সেই স্ক্রিপ্টে, আপনি নিচের মতো ফর্ম্যাট করা আউটপুট প্রিন্ট করতে printf স্টেটমেন্ট ব্যবহার করতে পারেন।
arith.sh-এ, এই printf স্টেটমেন্ট দিয়ে ইকো স্টেটমেন্ট প্রতিস্থাপন করুন।
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