बैश में कई कमांड हैं जो शेल के साथ आती हैं (यानी बैश शेल के अंदर निर्मित)।
जब आप एक बिल्ट-इन कमांड निष्पादित करते हैं, तो बैश शेल किसी अन्य प्रोग्राम को लागू किए बिना इसे तुरंत निष्पादित करता है।
बैश शेल बिल्ट-इन कमांड बाहरी कमांड की तुलना में तेज़ होते हैं, क्योंकि बाहरी कमांड आमतौर पर इसे निष्पादित करने के लिए एक प्रक्रिया को फोर्क करते हैं।
इस लेख में आइए उदाहरणों के साथ कुछ उपयोगी बैश शेल बिलिन्स की समीक्षा करें।
निर्यात कमांड का उपयोग वर्तमान शेल में चल रही सभी चाइल्ड प्रक्रियाओं के वातावरण में एक चर या फ़ंक्शन को निर्यात करने के लिए किया जाता है।
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
"निर्यात -पी" कमांड वर्तमान शेल में सभी निर्यात किए गए चर को भी प्रदर्शित करता है।
<केंद्र> केंद्र> <एच3>2. बैश eval कमांड उदाहरण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 कमांड का पैटर्न है। यह कमांड लाइन में दिए गए एक विशेष पैटर्न के लिए सीपीयू उपयोग और greps के क्रम में प्रक्रियाओं को सूचीबद्ध करता है।
नोट: यह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है।
<एच3>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<एच3>4. बैश pwd कमांड उदाहरण
pwd वर्तमान वर्किंग डायरेक्टरी को प्रिंट करने के लिए एक शेल बिल्ट-इन कमांड है। यह मूल रूप से बिल्ट इन वेरिएबल ${PWD}
. का मान लौटाता है$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises
5. बैश रीड ओनली कमांड उदाहरण
केवल पढ़ने के लिए कमांड का उपयोग एक चर या फ़ंक्शन को केवल-पढ़ने के लिए चिह्नित करने के लिए किया जाता है, जिसे आगे नहीं बदला जा सकता है।
$ 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<एच3>6. बैश शिफ्ट कमांड उदाहरण
शिफ्ट कमांड का उपयोग एन द्वारा छोड़े गए स्थितीय मापदंडों को कई बार शिफ्ट करने के लिए किया जाता है और शिफ्टिंग के बाद वेरिएबल का नाम बदल देता है।
$ 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<एच3>7. बैश टेस्ट कमांड उदाहरण
परीक्षण कमांड सशर्त अभिव्यक्ति का मूल्यांकन करता है और मूल्यांकन के आधार पर शून्य या एक देता है। अधिक परीक्षण ऑपरेटरों के लिए बैश के मैनुअल पेज को देखें।
#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi
8. बैश 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. बैश लॉगआउट कमांड
लॉगआउट बिल्ट इन मौजूदा शेल से बाहर निकलने के लिए उपयोग किया जाता है।
<एच3>10. बैश उमास्क कमांड उदाहरणumask कमांड वर्तमान प्रक्रिया के लिए फ़ाइल मोड निर्माण मास्क सेट करता है। जब कोई उपयोगकर्ता कोई फ़ाइल बनाता है, तो उसकी डिफ़ॉल्ट अनुमति 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<एच3>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<एच3>14. बैश शॉपट कमांड उदाहरण
Shopt बिल्ट इन कमांड का उपयोग शेल विकल्पों को सेट और अनसेट करने के लिए किया जाता है। इस कमांड का उपयोग करके आप शेल इंटेलिजेंस का उपयोग कर सकते हैं।
$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 विकल्प को सक्षम करने से पहले, इको स्टेटमेंट ने एस्केप सीक्वेंस का विस्तार नहीं किया। "एल।" वर्तमान निर्देशिका के ls -l से अलियास किया गया है। शेल में Expand_aliases विकल्प को अक्षम करने के बाद, इसने उपनामों का विस्तार नहीं किया, आप एक त्रुटि l देख सकते हैं। आदेश नहीं मिला।
<एच3>15. बैश प्रिंटफ कमांड उदाहरणसी भाषा में प्रिंटफ के समान, प्रिंट ऑपरेशंस को प्रारूपित करने के लिए बिल्ट-इन बैश प्रिंटफ का उपयोग किया जाता है।
उदाहरण 13 में, स्क्रिप्ट दो इनपुट पर अंकगणितीय ऑपरेशन करती है। उस स्क्रिप्ट में इको स्टेटमेंट के बजाय, आप नीचे दिखाए गए स्वरूपित आउटपुट को प्रिंट करने के लिए प्रिंटफ स्टेटमेंट का उपयोग कर सकते हैं।
arith.sh में, इको स्टेटमेंट को इस प्रिंटफ स्टेटमेंट से बदलें।
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