بش اسڪرپٽ: شروعات

بش اسڪرپٽ: شروعات
بش اسڪرپٽ حصو 2: لوپس
بش اسڪرپٽ، حصو 3: ڪمانڊ لائن جا اختيار ۽ سوئچز
بش اسڪرپٽ حصو 4: ان پٽ ۽ آئوٽ
بش اسڪرپٽ، حصو 5: سگنل، پس منظر جا ڪم، اسڪرپٽ مينيجمينٽ
بش اسڪرپٽ، حصو 6: ڪم ۽ لائبريري ڊولپمينٽ
بش اسڪرپٽ، حصو 7: sed ۽ لفظ پروسيسنگ
بش اسڪرپٽ، حصو 8: awk ڊيٽا پروسيسنگ ٻولي
باش اسڪرپٽ حصو 9: باقاعده اظهار
بش اسڪرپٽ حصو 10: عملي مثال
بش اسڪرپٽ، حصو 11: انٽرويو يوٽيلٽيز جي توقع ۽ خودڪار

اڄ اسان بش اسڪرپٽ بابت ڳالهائينداسين. هي - ڪمانڊ لائن اسڪرپٽ، بيش شيل لاءِ لکيل آهي. اهڙا ٻيا شيل آهن جهڙوڪ zsh، tcsh، ksh، پر اسان بش تي ڌيان ڏينداسين. هي مواد هر ڪنهن لاء آهي، صرف شرط آهي ڪم ڪرڻ جي صلاحيت حڪم لائن لينڪس

بش اسڪرپٽ: شروعات

ڪمانڊ لائن اسڪرپٽ ساڳيا حڪمن جا مجموعا آهن جيڪي ڪيبورڊ مان داخل ڪري سگھجن ٿيون، فائلن ۾ گڏ ڪيون وڃن ٿيون ۽ ڪجهه عام مقصد سان متحد ٿي سگهن ٿيون. انهي صورت ۾، ٽيمن جي ڪم جا نتيجا يا ته آزاد قدر جا ٿي سگهن ٿا يا ٻين ٽيمن لاء ان پٽ ڊيٽا طور ڪم ڪري سگهن ٿيون. اسڪرپٽ هڪ طاقتور طريقو آهي خودڪار طريقي سان اڪثر ڪيل عملن کي خودڪار ڪرڻ لاء.

بش اسڪرپٽ: شروعات

تنهن ڪري، جيڪڏهن اسان ڪمانڊ لائن جي باري ۾ ڳالهايون ٿا، اهو توهان کي اجازت ڏئي ٿو ته ڪيترن ئي حڪمن کي هڪ ڀيرو تي عمل ڪرڻ جي ذريعي انهن کي هڪ سيميڪولن سان الڳ ڪري داخل ڪندي:

pwd ; whoami

حقيقت ۾، جيڪڏهن توهان پنهنجي ٽرمينل ۾ هن جي ڪوشش ڪئي، توهان جي پهرين بش اسڪرپٽ جنهن ۾ ٻه حڪم شامل آهن اڳ ۾ ئي لکيو ويو آهي. اهو هن طرح ڪم ڪري ٿو. ٽيم پهرين pwd موجوده ڪم ڪندڙ ڊاريڪٽري بابت معلومات ڏيکاري ٿو، پوء حڪم whoamiان صارف جي باري ۾ معلومات ڏيکاري ٿو جيڪو توهان لاگ ان ٿيل آهيو.

هن طريقي کي استعمال ڪندي، توهان هڪ لڪير تي ڪيترا ئي حڪم گڏ ڪري سگهو ٿا جيئن توهان چاهيو ٿا، صرف حد آهي وڌ ۾ وڌ تعداد دليلن جو جيڪو پروگرام ڏانهن منظور ڪري سگهجي ٿو. توھان ھيٺ ڏنل حڪم استعمال ڪندي ھن حد کي بيان ڪري سگھو ٿا:

getconf ARG_MAX

ڪمانڊ لائن هڪ بهترين اوزار آهي، پر توهان کي ان ۾ حڪم داخل ڪرڻو پوندو هر وقت توهان کي انهن جي ضرورت آهي. ڇا جيڪڏهن اسان هڪ فائل ۾ حڪمن جو هڪ سيٽ لکيو ۽ صرف ان فائل کي ان تي عمل ڪرڻ لاء سڏيو؟ حقيقت ۾، اسان جنهن فائل بابت ڳالهائي رهيا آهيون ان کي ڪمانڊ لائن اسڪرپٽ سڏيو ويندو آهي.

ڪيئن bash اسڪرپٽ ڪم

ڪمانڊ استعمال ڪندي هڪ خالي فائل ٺاهيو touch. ان جي پهرين لائن کي ظاهر ڪرڻ جي ضرورت آهي ته اسان ڪهڙي شيل کي استعمال ڪرڻ وارا آهيون. اسان کي دلچسپي آهي bash، تنهنڪري فائل جي پهرين لائن هوندي:

#!/bin/bash

هن فائل ۾ ٻيون لائينون استعمال ڪن ٿيون هاش علامت تبصرن کي ظاهر ڪرڻ لاءِ ته شيل عمل نٿو ڪري. بهرحال، پهرين لڪير هڪ خاص صورت آهي، اتي هڪ هش آهي جنهن جي پٺيان هڪ عجب جي نشان (هن تسلسل کي سڏيو ويندو آهي. شيبنگ) ۽ رستو bash، سسٽم ڏانهن اشارو ڪيو ته اسڪرپٽ خاص طور تي ٺاهي وئي هئي bash.

شيل حڪمن کي لڪير فيڊ طرفان الڳ ڪيو ويو آهي، تبصرا هڪ هيش نشاني سان جدا ڪيا ويا آهن. اھو اھو آھي جيڪو ڏسڻ ۾ اچي ٿو:

#!/bin/bash
# This is a comment
pwd
whoami

هتي، ڪمانڊ لائن وانگر، توهان هڪ لڪير تي ڪمانڊ لکي سگهو ٿا، سيميڪولن سان الڳ ٿيل. بهرحال، جيڪڏهن توهان مختلف لائينن تي ڪمانڊ لکندا آهيو، فائل پڙهڻ لاء آسان آهي. ڪنهن به صورت ۾، شيل ان تي عمل ڪندو.

سيٽنگ اسڪرپٽ فائل جي اجازت

فائل محفوظ ڪريو ان کي نالو ڏيو myscript، ۽ bash اسڪرپٽ ٺاهڻ جو ڪم لڳ ڀڳ ختم ٿي چڪو آهي. ھاڻي باقي اھو آھي ته ھن فائل کي قابل عمل بڻائڻو آھي، ٻي صورت ۾، جيڪڏھن توھان ان کي هلائڻ جي ڪوشش ڪندا، توھان کي ھڪڙي نقص سان منهن ڏيڻو پوندو. Permission denied.

بش اسڪرپٽ: شروعات
غلط ترتيب ڏنل اجازتن سان اسڪرپٽ فائل کي هلائڻ جي ڪوشش

اچو ته فائل کي قابل عمل بڻايون:

chmod +x ./myscript

هاڻي اچو ته ان تي عمل ڪرڻ جي ڪوشش ڪريون:

./myscript

اجازتن کي ترتيب ڏيڻ کان پوء هر شي ڪم ڪري ٿي جيئن ان کي گهرجي.

بش اسڪرپٽ: شروعات
بش اسڪرپٽ ڪاميابي سان هلائي رهيو آهي

پيغام جي پيداوار

لينڪس ڪنسول ڏانهن ٽيڪسٽ ڪڍڻ لاء، ڪمانڊ استعمال ڪريو echo. اچو ته ھن حقيقت جي ڄاڻ کي استعمال ڪريون ۽ پنھنجي اسڪرپٽ کي ايڊٽ ڪريون، ڊيٽا جي وضاحت شامل ڪريون جيڪي اڳ ۾ ئي ڏنل حڪمن جي ذريعي ٻاھر نڪرنديون آھن:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

اپڊيٽ ٿيل اسڪرپٽ کي هلائڻ کان پوءِ ائين ٿئي ٿو.

بش اسڪرپٽ: شروعات
اسڪرپٽ مان پيغام ڪڍڻ

ھاڻي اسان ڪمانڊ استعمال ڪندي وضاحتي نوٽس ڏيکاري سگھون ٿا echo. جيڪڏهن توهان نٿا ڄاڻو ته لينڪس اوزار استعمال ڪندي فائل کي ڪيئن ايڊٽ ڪيو، يا توهان اڳ ۾ حڪم نه ڏٺو آهي echo، هڪ نظر وٺو هي مادي.

variables استعمال ڪندي

متغير توهان کي اسڪرپٽ فائل ۾ معلومات ذخيرو ڪرڻ جي اجازت ڏين ٿا، جهڙوڪ حڪمن جا نتيجا، ٻين حڪمن جي استعمال لاءِ.

انهن جي نتيجن کي محفوظ ڪرڻ کان سواء انفرادي حڪمن تي عمل ڪرڻ ۾ ڪجھ به غلط ناهي، پر اهو طريقو پنهنجي صلاحيتن ۾ ڪافي محدود آهي.

اتي ٻه قسم جا متغير آھن جيڪي بش اسڪرپٽ ۾ استعمال ڪري سگھجن ٿيون:

  • ماحولياتي تبديليون
  • استعمال ڪندڙ متغير

ماحولياتي تبديليون

ڪڏهن ڪڏهن شيل حڪمن کي ڪجهه سسٽم ڊيٽا سان ڪم ڪرڻ جي ضرورت آهي. ھتي ھڪڙو مثال آھي موجوده صارف جي گھر ڊاريڪٽري کي ڪيئن ڏيکاريندي:

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

مهرباني ڪري نوٽ ڪريو ته اسان هڪ سسٽم متغير استعمال ڪري سگهون ٿا $HOME ٻٽي حوالن ۾، اهو سسٽم کي ان کي سڃاڻڻ کان روڪي نه سگهندو. اھو اھو آھي جيڪو توھان حاصل ڪيو جيڪڏھن توھان مٿي ڏنل منظر کي هلائيندا آھيو.

بش اسڪرپٽ: شروعات
اسڪرپٽ ۾ ماحول جي متغير کي استعمال ڪندي

ڇا توهان کي اسڪرين تي ڊالر جي نشاني ڏيکارڻ جي ضرورت آهي؟ اچو ته اها ڪوشش ڪريون:

echo "I have $1 in my pocket"

سسٽم هڪ حوالو ڪيل اسٽرنگ ۾ ڊالر جي نشاني کي ڳوليندو ۽ فرض ڪري ٿو ته اسان هڪ متغير جو حوالو ڏنو آهي. اسڪرپٽ هڪ اڻ ڄاڻايل متغير جي قيمت کي ظاهر ڪرڻ جي ڪوشش ڪندو $1. اهو نه آهي جيڪو اسان کي گهرجي. ڇا ڪجي؟

هن صورتحال ۾، فرار جي ڪردار کي استعمال ڪندي، هڪ پٺتي پيل، ڊالر جي نشاني کان اڳ مدد ڪندي:

echo "I have $1 in my pocket"

اسڪرپٽ ھاڻي ٻاھر نڪرندي جيڪا توقع ڪئي وئي آھي.

بش اسڪرپٽ: شروعات
ڊالر جي نشاني کي پرنٽ ڪرڻ لاءِ فرار جو سلسلو استعمال ڪريو

استعمال ڪندڙ متغير

ماحوليات جي متغيرن کان علاوه، بش اسڪرپٽ توهان کي اسڪرپٽ ۾ توهان جي پنهنجي متغيرن جي وضاحت ۽ استعمال ڪرڻ جي اجازت ڏين ٿا. اهڙا متغير هڪ قدر رکندا آهن جيستائين اسڪرپٽ عمل مڪمل نه ٿئي.

جيئن ته سسٽم متغيرن سان، صارف متغير ڊالر جي نشاني استعمال ڪندي پهچائي سگھجي ٿو:
TNW-CUS-FMP - اسان جي خدمتن تي 10٪ رعايت لاءِ پرومو ڪوڊ، 7 ڏينهن اندر فعال ٿيڻ لاءِ دستياب آهي

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

اهڙي اسڪرپٽ هلائڻ کان پوءِ ائين ئي ٿيندو آهي.

بش اسڪرپٽ: شروعات
اسڪرپٽ ۾ ڪسٽم متغير

حڪم جي متبادل

bash اسڪرپٽ جي سڀ کان وڌيڪ مفيد خاصيتن مان هڪ آهي حڪم جي آئوٽ مان معلومات ڪڍڻ ۽ ان کي متغير ڏانهن تفويض ڪرڻ جي صلاحيت، توهان کي هن معلومات کي اسڪرپٽ فائل ۾ ڪٿي به استعمال ڪرڻ جي اجازت ڏئي ٿي.

هن کي ڪرڻ جا ٻه طريقا آهن.

  • backtick استعمال ڪندي "`"
  • ڊزائين ذريعي $()

جڏهن پهريون طريقو استعمال ڪيو، محتاط رکو ته پٺتي جي جاء تي هڪ واحد ڪوٽا نشان شامل نه ڪيو وڃي. حڪم کي ٻن اهڙن آئڪن ۾ بند ڪيو وڃي:

mydir=`pwd`

ٻئي طريقي ۾، ساڳي شيء هن طرح لکيل آهي:

mydir=$(pwd)

۽ اسڪرپٽ ختم ٿي سگهي ٿي هن طرح ڏسڻ ۾:

#!/bin/bash
mydir=$(pwd)
echo $mydir

ان جي آپريشن دوران، حڪم جي پيداوار pwdvariable ۾ محفوظ ڪيو ويندو mydir، جنهن جو مواد، حڪم استعمال ڪندي echo، ڪنسول ڏانھن ويندا.

بش اسڪرپٽ: شروعات
ھڪڙي رسم الخط جيڪو ھڪڙي حڪم جي نتيجن کي ھڪڙي متغير ۾ محفوظ ڪري ٿو

رياضياتي عمل

اسڪرپٽ فائل ۾ رياضياتي عملن کي انجام ڏيڻ لاء، توھان استعمال ڪري سگھو ٿا ھڪڙي تعمير وانگر $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

بش اسڪرپٽ: شروعات
اسڪرپٽ ۾ رياضياتي عمل

if-پوءِ ڪنٽرول ٺاھڻ

ڪجهه حالتن ۾، توهان کي حڪم جي عمل جي وهڪري کي ڪنٽرول ڪرڻ جي ضرورت آهي. مثال طور، جيڪڏهن هڪ خاص قدر پنجن کان وڌيڪ آهي، توهان کي هڪ عمل ڪرڻ جي ضرورت آهي، ٻي صورت ۾، ٻيو. اهو ڪيترن ئي حالتن ۾ لاڳو ٿئي ٿو، ۽ هتي ڪنٽرول جوڙجڪ اسان جي مدد ڪندو if-then. ان جي آسان ترين شڪل ۾ اهو هن طرح نظر اچي ٿو:

if команда
then
команды
fi

هتي هڪ ڪم ڪندڙ مثال آهي:

#!/bin/bash
if pwd
then
echo "It works"
fi

انهي صورت ۾، جيڪڏهن حڪم جاري آهي pwdڪاميابي سان مڪمل ٿيندو، متن "اهو ڪم ڪري ٿو" ڪنسول ۾ ڏيکاريو ويندو.

اچو ته اسان وٽ موجود علم کي استعمال ڪريون ۽ وڌيڪ پيچيده رسم الخط لکون. اچو ته اسان کي هڪ خاص صارف ڳولڻ جي ضرورت آهي /etc/passwd، ۽ جيڪڏھن توھان ان کي ڳولڻ ۾ ڪامياب ٿيو، رپورٽ ڪريو ته اھو موجود آھي.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

هن اسڪرپٽ کي هلائڻ کان پوءِ ائين ٿئي ٿو.

بش اسڪرپٽ: شروعات
استعمال ڪندڙ جي ڳولا

هتي اسان ڪمانڊ استعمال ڪيو grepفائل ۾ استعمال ڪندڙ کي ڳولڻ لاء /etc/passwd. جيڪڏهن ٽيم grepتوهان کي اڻ واقف، ان جي وضاحت ملي سگهي ٿي هتي.

هن مثال ۾، جيڪڏهن صارف مليو آهي، اسڪرپٽ هڪ لاڳاپيل پيغام ڏيکاريندو. ڇا جيڪڏهن صارف نه ملي سگهيو؟ انهي صورت ۾، اسڪرپٽ اسان کي ڪجهه به ٻڌائڻ کان سواء مڪمل طور تي عمل مڪمل ڪندو. اسان چاهيون ٿا ته هو اسان کي ان بابت پڻ ٻڌائي، تنهنڪري اسان ڪوڊ کي بهتر ڪنداسين.

جيڪڏھن-تو-ٻيو ڪنٽرول ٺاھيو

پروگرام جي ڪامياب ڳولا ۽ ناڪامي جي ٻنهي نتيجن کي رپورٽ ڪرڻ جي قابل ٿيڻ لاء، اسان تعمير استعمال ڪنداسين if-then-else. هتي اهو ڪيئن ڪم ڪري ٿو:

if команда
then
команды
else
команды
fi

جيڪڏهن پهريون حڪم صفر واپس اچي ٿو، جنهن جو مطلب آهي ته اهو ڪاميابي سان عمل ڪيو ويو، شرط صحيح ٿي ويندي ۽ عمل شاخ سان اڳتي نه وڌندو. else. ٻي صورت ۾، جيڪڏهن صفر کان سواء ٻيو ڪجهه واپس آيو آهي، جيڪو ظاهر ڪري ٿو ناڪامي، يا غلط نتيجو، حڪمن کان پوء else.

اچو ته هيٺ ڏنل اسڪرپٽ لکون:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

سندس ڦاهيءَ جو خاتمو ٿي ويو else.

بش اسڪرپٽ: شروعات
if-then-else اڏاوت سان اسڪرپٽ هلائڻ

خير، اچو ته اڳتي وڌون ۽ پاڻ کان وڌيڪ پيچيده حالتن بابت پڇون. ڇا جيڪڏهن توهان کي هڪ شرط نه، پر ڪيترن ئي جانچڻ جي ضرورت آهي؟ مثال طور، جيڪڏهن گهربل صارف مليو آهي، هڪ پيغام ظاهر ٿيڻ گهرجي، جيڪڏهن ڪجهه ٻيو شرط ملن ٿا، ٻيو پيغام ڏيکاريو وڃي، وغيره. اهڙيءَ حالت ۾ نراسائي حالتون اسان جي مدد ڪنديون. اهو هن طرح نظر اچي ٿو:

if команда1
then
команды
elif команда2
then
команды
fi

جيڪڏهن پهريون حڪم صفر واپس اچي ٿو، جيڪو ان جي ڪامياب عمل کي ظاهر ڪري ٿو، پهرين بلاڪ ۾ حڪم جاري ڪيا ويندا. then، ٻي صورت ۾، جيڪڏهن پهرين شرط غلط آهي ۽ جيڪڏهن ٻيو حڪم واپسي صفر، ڪوڊ جو ٻيو بلاڪ عمل ڪيو ويندو.

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

اهڙي رسم الخط ۾، توهان ڪري سگهو ٿا، مثال طور، حڪم استعمال ڪندي هڪ نئون صارف ٺاهي useradd,جيڪڏهن ڳولها نتيجا پيدا نه ڪري، يا ڪجھ ٻيو مفيد ڪم ڪريو.

انگن جو مقابلو

لکت ۾ توهان عددي قدرن جو مقابلو ڪري سگهو ٿا. هيٺ ڏنل لاڳاپيل حڪمن جي هڪ فهرست آهي.

n1 -eq n2واپسي سچي جيڪڏھن n1 برابر n2.
n1 -ge n2 واپسي سچي جيڪڏھن n1وڌيڪ يا برابر n2.
n1 -gt n2واپسي سچي جيڪڏھن n1 کان وڌيڪ n2.
n1 -le n2واپسي سچي جيڪڏھن n1گهٽ يا برابر n2.
n1 -lt n2واپسي صحيح آھي جيڪڏھن n1 کان گھٽ آھي n2.
n1 -ne n2واپسي سچي جيڪڏھن n1برابر نه آهي n2.

مثال طور، اچو ته مقابلي جي آپريٽرن مان هڪ ڪوشش ڪريون. نوٽ ڪريو ته اظهار چورس بریکٹ ۾ بند ٿيل آهي.

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

اھو اھو آھي جيڪو ھن حڪم کي ٻاھر ڪڍندو.

بش اسڪرپٽ: شروعات
لکت ۾ انگن جو مقابلو

متغير قدر val15 کان وڌيڪ، شاخ ختم ٿي ويندي آهي thencomparison آپريٽر ۽ هڪ لاڳاپيل پيغام ڪنسول ۾ ڏيکاريل آهي.

اسٽرنگ جو مقابلو

اسڪرپٽ پڻ اسٽرنگ جي قيمتن جو مقابلو ڪري سگھن ٿا. مقابلي وارا آپريٽرس بلڪل سادو نظر اچن ٿا، پر اسٽرنگ جي مقابلي واري عملن ۾ ڪجھ خاصيتون آھن، جن کي اسين ھيٺ لھينداسين. هتي آپريٽرز جي هڪ فهرست آهي.

str1 = str2 برابري لاءِ اسٽرنگ کي آزمائي ٿو، صحيح موٽڻ جي صورت ۾ جيڪڏهن تار هڪجهڙا آهن.
str1 != str2واپسي صحيح آهي جيڪڏهن تار هڪجهڙا نه آهن.
str1 < str2واپسي سچي جيڪڏھن str1کان گهٽ str2.
str1 > str2 واپسي سچي جيڪڏھن str1ڪان وڌيڪ str2.
-n str1 واپسي صحيح آھي جيڪڏھن ڊگھائي str1صفر کان مٿي.
-z str1واپسي صحيح آھي جيڪڏھن ڊگھائي str1صفر جي برابر.

هتي اسڪرپٽ ۾ تارن جي مقابلي جو هڪ مثال آهي:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

رسم الخط تي عمل ڪرڻ جي نتيجي ۾، اسان ھيٺ ڏنل حاصل ڪندا آھيون.

بش اسڪرپٽ: شروعات
اسڪرپٽ ۾ تارن جي ڀيٽ ڪرڻ

ھتي ھڪڙي خصوصيت آھي سٹرنگ جي مقابلي ۾ جيڪا قابل ذڪر آھي. يعني، ">" ۽ "" نشاني کي آئوٽ ريڊائريشن ڪمانڊ جي طور تي بيان ڪري ٿو.

هتي اهو آهي ته انهن آپريٽرن سان ڪم ڪندڙ ڪوڊ وانگر ڏسڻ ۾ اچي ٿو:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

هتي لکت جا نتيجا آهن.

بش اسڪرپٽ: شروعات
تارن جو مقابلو، ڊيڄاريندڙ

مهرباني ڪري نوٽ ڪريو ته رسم الخط، جيتوڻيڪ عمل ڪيو ويو، هڪ ڊيڄاريندڙ مسئلا:

./myscript: line 5: [: too many arguments

هن ڊيڄاريندڙ کان نجات حاصل ڪرڻ لاء، اسان نتيجو ڪيو $val2 ٻٽي حوالن ۾:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

هاڻي هر شي ڪم ڪري ٿي جيئن ان کي گهرجي.

بش اسڪرپٽ: شروعات
اسٽرنگ جو مقابلو

">" ۽ "<" آپريٽرز جي هڪ ٻي خصوصيت اها آهي ته اهي ڪيئن ڪم ڪن ٿا اپر ڪيز ۽ لوئر ڪيز اکرن سان. ھن خصوصيت کي سمجھڻ لاءِ، اچو ته ھيٺ ڏنل مواد سان ٽيڪسٽ فائل تيار ڪريون.

Likegeeks
likegeeks

اچو ته ان کي نالو ڏئي بچايو myfile، پوءِ ٽرمينل ۾ ھيٺ ڏنل حڪم ھلايو:

sort myfile

اهو هن طرح فائل مان لائينون ترتيب ڏيندو:

likegeeks
Likegeeks

ٽيم sort, ڊفالٽ طور، تارن کي وڌندي ترتيب ۾ ترتيب ڏئي ٿو، يعني اسان جي مثال ۾ ننڍو اکر وڏي اکر کان ننڍو آهي. هاڻي اچو ته هڪ اسڪرپٽ تيار ڪريون جيڪا ساڳي تارن جو مقابلو ڪندي:

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

جيڪڏهن توهان ان کي هلائيندا آهيو، اهو ظاهر ٿئي ٿو ته هر شيء ٻئي طريقي سان آهي - ننڍو اکر هاڻي وڏي اک کان وڏو آهي.

بش اسڪرپٽ: شروعات
ترتيب ڏيڻ جو حڪم ۽ اسڪرپٽ فائل ۾ تارن جو مقابلو ڪرڻ

مقابلي جي حڪمن ۾، وڏا اکر ننڍا اکر کان ننڍا هوندا آهن. اسٽرنگ جو مقابلو هتي ڪيو ويو آهي اکرن جي ASCII ڪوڊس جي مقابلي سان، ترتيب ترتيب اهڙي طرح ڪردارن جي ڪوڊس تي منحصر آهي.

ٽيم sort, موڙ ۾، استعمال ڪري ٿو ترتيب ترتيب ترتيب ڏنل سسٽم ٻولي سيٽنگون ۾.

فائل چيڪ ڪريو

شايد هيٺيان حڪم اڪثر استعمال ڪيا ويندا آهن bash اسڪرپٽ ۾. اهي توهان کي فائلن جي حوالي سان مختلف حالتون چيڪ ڪرڻ جي اجازت ڏين ٿا. هتي انهن حڪمن جي هڪ فهرست آهي.

-d fileچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ ڊاريڪٽري آهي.
-e fileچيڪ ڪريو ته فائل موجود آهي.
-f file چيڪ ڪري ٿو ته ڇا هڪ فائل موجود آهي ۽ هڪ فائل آهي.
-r fileچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ پڙهڻ جي قابل آهي.
-s file Пچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ خالي ناهي.
-w fileچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ لکڻ جي قابل آهي.
-x fileچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ قابل عمل آهي.
file1 -nt file2 چيڪ ڪري ٿو ته اهو نئون آهي file1کان سواء file2.
file1 -ot file2چيڪ ڪري ٿو ته پراڻا file1کان سواء file2.
-O file چيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ موجوده صارف جي ملڪيت آهي.
-G fileچيڪ ڪري ٿو ته ڇا فائل موجود آهي ۽ ڇا ان جي گروپ جي ID موجوده صارف جي گروپ جي ID سان ملي ٿي.

اهي حڪم، گڏوگڏ ٻيا ڪيترائي اڄ بحث ڪيا ويا آهن، ياد رکڻ آسان آهن. انهن جا نالا، مختلف لفظن جا مخفف آهن، سڌو سنئون ظاهر ڪن ٿا ته اهي چيڪ ڪن ٿا.

اچو ته عملي طور تي ھڪڙي حڪم جي ڪوشش ڪريو:

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

هي اسڪرپٽ، موجوده ڊاريڪٽري لاءِ، ان جو مواد ڏيکاريندو.

بش اسڪرپٽ: شروعات
ڊاريڪٽري جي مواد جي لسٽنگ

اسان يقين رکون ٿا ته توهان باقي حڪمن سان پاڻ کي تجربو ڪري سگهو ٿا؛ اهي سڀئي ساڳيا اصول جي مطابق استعمال ڪيا ويا آهن.

نتيجو

اڄ اسان ڳالهايوسين ته ڪيئن شروع ڪجي بش اسڪرپٽ لکڻ ۽ ڪجهه بنيادي شين کي ڍڪي ڇڏيو. حقيقت ۾، بش پروگرامنگ جو موضوع تمام وڏو آهي. هي مضمون 11 مواد جي وڏي سيريز جي پهرين حصي جو ترجمو آهي. جيڪڏھن توھان ھاڻي جاري رکڻ چاھيو ٿا، ھتي انھن مواد جي اصل جي ھڪڙي فهرست آھي. سهولت لاءِ، جنهن جو ترجمو توهان صرف پڙهيو آهي هتي شامل ڪيو ويو آهي.

  1. بش اسڪرپٽ قدم بہ قدم - هتي اسان ڳالهائي رهيا آهيون ته بش اسڪرپٽ ٺاهڻ ڪيئن شروع ڪجي، متغيرن جي استعمال تي غور ڪيو وڃي، مشروط ڍانچي، حساب، انگن جو مقابلو، اسٽرنگ، ۽ فائلن جي باري ۾ معلومات ڳولڻ جي وضاحت ڪئي وئي آهي.
  2. بش اسڪرپٽنگ حصو 2، بيش شاندار - هتي ڪم ڪرڻ جون خاصيتون ۽ جڏهن لوپ ظاهر ڪيا ويا آهن.
  3. بش اسڪرپٽنگ حصو 3، پيرا ميٽرز ۽ اختيارن - هي مواد ڪمانڊ لائن پيرا ميٽرز ۽ ڪنجين لاءِ وقف ڪيو ويو آهي جيڪي اسڪرپٽ ڏانهن منتقل ڪري سگھجن ٿيون، ڊيٽا سان ڪم ڪندي جيڪو صارف داخل ڪري ٿو ۽ جيڪو فائلن مان پڙهي سگهجي ٿو.
  4. بش اسڪرپٽنگ حصو 4، ان پٽ ۽ آئوٽ - هتي اسان فائل بيان ڪندڙن جي باري ۾ ڳالهائي رهيا آهيون ۽ انهن سان گڏ ڪم ڪرڻ بابت، ان پٽ، آئوٽ، غلطي اسٽريمز، ۽ آئوٽ ريڊريشن بابت.
  5. باش اسڪرپٽنگ حصو 5، سيگل ۽ نوڪريون - هي مواد لينڪس سگنلن لاءِ وقف ٿيل آهي، انهن جي اسڪرپٽ ۾ پروسيسنگ، ۽ شيڊول تي اسڪرپٽ لانچ ڪرڻ.
  6. بش اسڪرپٽنگ حصو 6، افعال — ھتي توھان سکي سگھوٿا اسڪرپٽ ۽ ڊولپمينٽ لئبرريءَ ۾ افعال ٺاھڻ ۽ استعمال ڪرڻ بابت.
  7. بش اسڪرپٽنگ حصو 7، استعمال ڪندي sed - هي آرٽيڪل sed اسٽريمنگ ٽيڪسٽ ايڊيٽر سان ڪم ڪرڻ لاءِ وقف آهي.
  8. بش اسڪرپٽنگ حصو 8، awk استعمال ڪندي - هي مواد awk ڊيٽا پروسيسنگ ٻولي ۾ پروگرامنگ لاءِ وقف آهي.
  9. بش اسڪرپٽنگ حصو 9، باقاعده اظهار - هتي توهان باش اسڪرپٽ ۾ باقاعده اظهار استعمال ڪرڻ بابت پڙهي سگهو ٿا.
  10. بش اسڪرپٽنگ حصو 10، عملي مثال - هتي پيغامن سان ڪم ڪرڻ لاءِ ٽيڪنالاجيون آهن جيڪي صارفين ڏانهن موڪلي سگھجن ٿيون، ۽ گڏوگڏ ڊسڪ مانيٽرنگ جو طريقو.
  11. بش اسڪرپٽنگ حصو 11، حڪم جي توقع ڪريو — هي مواد Expect ٽول لاءِ وقف ڪيو ويو آهي، جنهن سان توهان انٽرايڪٽو يوٽيلٽيز سان رابطي کي خودڪار ڪري سگهو ٿا. خاص طور تي، اسان بابت ڳالهائي رهيا آهيون توقع اسڪرپٽ ۽ انهن جي رابطي سان بش اسڪرپٽ ۽ ٻين پروگرامن سان.

اسان سمجهون ٿا ته مضمونن جي هن سيريز جي هڪ قيمتي خصوصيت اها آهي ته، آسان کان شروع ٿي، ڪنهن به سطح جي استعمال ڪندڙن لاءِ موزون، اهو آهستي آهستي ڪافي سنجيده موضوعن ڏانهن وٺي وڃي ٿو، جيڪو هر ڪنهن کي لينڪس ڪمانڊ لائن اسڪرپٽ ٺاهڻ ۾ اڳتي وڌڻ جو موقعو ڏئي ٿو. .

پيارا پڙهندڙ! اسان بش پروگرامنگ گروس کان پڇون ٿا ته انهن بابت ڳالهائڻ لاءِ ته اهي ڪيئن پنهنجي مهارت جي بلندين تي پهچي ويا، انهن جا راز شيئر ڪن، ۽ اسان منتظر آهيون انهن کان تاثرات حاصل ڪرڻ لاءِ جن صرف پنهنجو پهريون اسڪرپٽ لکيو آهي.

بش اسڪرپٽ: شروعات

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

ڇا مان مضمونن جي باقي سيريز جو ترجمو ڪريان؟

  • ها!

  • نه ڪا ضرورت ناهي

1030 صارفين ووٽ ڏنو. 106 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو