عام طور تي جڏهن توهان ڪم ڪرڻ شروع ڪيو ٿا سرور اين جي اوز واري علائقي سان جي اين يو / لينڪس ۽ / يا يونڪس آپريٽنگ سسٽم، ڪو هڪ ماڻهو ڳولي ٿو (منهن) ماحول ۾ ڪم ڪري ٿو جتي عام طور تي هڪ آهي مقرر ڪيل ڪمن جا گروپ ٻيا منتظمَ لکيا ۽ اهو ڪجهه نقطي تي اسان کي لازمي آهي انتظام ڪريو لاء ڪنهن به مسئلي کي حل ڪرڻ ، بهتر ۽ / يا ختم ڪرڻ ، اداري جي نئين ضرورت کي پورو ڪرڻ لاءِ جتي هو ڪم ڪندو آهي. تنهنڪري اهو عجيب ناهي ، اهو ڪنهن به نئون سيزن ايڊمن ڪنهن ڪم جي جڳهه ۾ ، توهان ڪجهه سمجھڻ جي مشڪل ڪم سان منهن ڏئي رهيا آهيو شيل اسڪرپٽ ٻين جي طرفان پيدا ڪيل پراڻي سي ايڊمن، جيڪي شايد چ writtenي طرح نه لکيا ويا آهن ، يا منطقي يا لکت جي structureانچي ۾ آهن ، سمجهي نه ته آسان آهن ، يا بدترين حالت ۾ ، جهڳڙن سان ڪمانڊ ، ڪمانڊ ، پراڻي ، غير موثر ، يا عجيب ۽ مروڙي انداز ۾.
جڏهن خراب لکندڙ لکتون حل ڪرڻ هميشه هڪ لمحي ناراضگي آهي ، اهو ڪنهن کي سيکاريندو آهي سٺو سيس ايڊمن ڪجھ ضروري. جيڪڏهن ڪو ٺاهڻ وارو آهي شيل اسڪرپٽ ا beyond کان ٻاهر استعمال ٿيڻ لاءِ ، هميشه بهتر آهي انهن کي تمام پيشه ور ۽ معياري طريقي سان لکرايوانهي طريقي سان ، وقت سان ، ڪو ٻيو ، يا پنهنجو پاڻ سان ، ڪري سگهي ٿو گهٽ ۾ گهٽ ڪوشش ۽ understandingاڻ وقت کان گهٽ ۾ گهٽ سمجهه ۽ انتظاميه حاصل ڪري ٿو.
تنهن ڪري ، اشاعت جي عملي سيريز کان پوءِ ”شيل اسڪرپٽ سکو“ جتي اسين سادي ۽ بنيادي حڪمن سان ڪجهه عملي رسم الخط جو معائنو ڪريون ٿا ، اسان شروع ڪريون ٿا نئين سيريز سان سڏيو ويو "GNU / Linux ۾ شيل اسڪرپٽ ٺاھڻ لاءِ بھترين طريقا" ، جتي اسان انهي جي هر نن aspectڙي پاسي ۽ گهڻن شين جي سبب تي چ focusي ريت ڌيان ڏيندا ، يعني اسان ڪجهه تجويزون coverڪينداسين جيڪي اسان کي بهتر اسڪرپٽ ٺاهيندا ، پر اسان لاءِ ايترو نه ، پر ايندڙ ماڻهو (ايس ايڊ ايڊمن) لاءِ انهن کي منظم ڪريو. تنهن ڪري توهان کي اهو معلوم ڪرڻ جي ڏکيائي ۽ تڪليف واري ڪم جي ضرورت نه ٿي پوي ، جيڪو آئون ڪوڊ ڪريان ٿو ، ڪيئن ۽ ڪڏهن ، ۽ ڇو اهو هاڻي ڪم نٿو ڪري.
هن ۾ پهرين (پهرين) پوسٽ ھن نئين سيريز جو "GNU / Linux لاءِ هڪ سٺي شيل اسڪرپٽ لاءِ بهترين طريقا" جيڪو اسان وڃڻ يا وڃڻ گهرجي انهن بابت ڳالهائينداسين شيل اسڪرپٽ جو هيڊر.
=======================================
HEADER - SHELL جو انوکوشن
=======================================
#! / رستو / تشريح [پيراگراف- دليل]
مٿين ليڪ بنيادي structureانچي آهي جنهن سان GNU / Linux لاءِ شيل اسڪرپٽ سڏبو آهي. ان جا عنصر هيٺين طور بيان ڪري سگھجن ٿا.
#! => شا بينگ
شَ بينگ (#!) پيدا ٿيڻ يا ٺاھڻ واري لکت جي چوٽي تي آھي ھڪڙو اسڪرپٽ جيڪو اسان جي آپريٽنگ سسٽم کي ٻڌائي ٿو ته اسان جو فائل انهن حڪمن جو هڪ سيٽ آهي جيڪو کارايو وڃي ٿو (تفسير ڪئي ويندي) ان کان پوءِ جو حڪم ڏنو ويو آهي. ڪردار جوڙو #! اصل ۾ ، اهو هڪ آهي جادو نمبر ٻه بائيٽ ، هڪ خاص نشان جيڪو فائل جو قسم طئي ڪريو، ۽ اسان جي ڪيس ۾. هڪ قابل عمل شيل اسڪرپٽ. شيءَ کان پوءِ فوري طور تي نالي جو نالو اچي ٿو رستو جتي تعبير ڪرڻ جي لاءِ موت هجڻ گهرجي ، انهي سان گڏ مترجم جو نالو به شامل آهي. ٻين لفظن ۾ ، اهو پروگرام جو رستو آهي جيڪو اسڪرپٽ ۾ ڏنل حڪمن جي ترجمان ڪري ٿو ، ڇا اهو تعبير آهي ، پروگرامنگ جي ٻولي آهي ، يا افاديت آهي. هي شيل وري انهي اسڪرپٽ ۾ ڏنل حڪمن تي عمل ڪندو ، مٿان کان شروع ٿئي ٿو (شا بينگ کان پوءِ واري لائن) ، ۽ ڪنهن به راءِ کي نظرانداز ڪري ٿو. ڪي شاھ بنگ اهي ٿي سگهن ٿا:
#! / بن / ش
#! / بن / بيش
#! / يوٽر / بن / پرل
#! / يوٽر / بن / ٽي سي ايل
#! / بن / سي ڊي ايف
#! / usr / awk -f
مٿين بيان ڪيل هر لڪير (مثال طور) هڪ مختلف شيل کي سڏيندو آهي. لڪير / بن / ش، دعوت ڏني شيل ڊفالٽ طرفان (جي اين يو / لينڪس آپريٽنگ سسٽم تي بش) يا ٻيو ساڳيو. استعمال ڪندي #! / بن / ش، ڊفالٽ قدر بورن شيل يونڪس ۾ قائم آپريٽنگ سسٽم جي تمام گهڻن ڪمرشل ورزنن ۾ ، اهو اسڪرپٽ ٺاهي ٿو ٻين آپريٽنگ سسٽم ڏانهن پورٽيبل آهن جيڪي لينڪس صحيح طرح سان ناهن، پر ساڳيا يا انهي تي ٻڌل يا يونيڪس ، جيتوڻيڪ اها بيش جي مخصوص خاصيتن کي قربان ڪندي آهي. بهرحال ، تسلسل "#! / بن / ش" عام سان مطابقت رکي ٿو پوسٽڪس معياري.
ذهن ۾ رکو ته شا بينگ ۾ ڏنل رستو صحيح هجڻ گهرجي، ٻي صورت ۾ هڪ غلط پيغام ، عام طور تي "حڪم نه مليو"، اهو صرف رسم الخط عملدرآمد جو نتيجو هوندو. ڪردار جي جوڙي کي ياد ڪريو »#! « اهو ختم ڪري سگهجي ٿو جيڪڏهن رسم الخط صرف عام آپريٽنگ سسٽم جي حڪمن جي هڪ سيٽ تي مشتمل آهي ، يعني ، اندروني شيل هدايتون استعمال ڪرڻ کان سواءِ. ۽ هڪ ڀيرو ٻيهر اهو ذهن ۾ رکو »#! / بن / ش« طئي ٿيل شيل مترجم کي دعوت ڏئي ٿو ، جيڪو پهريان کان ڊفالٽ ڪري ٿو "# / بن / بيش" هڪ ٽيم ۾ هن سان گڏ جي اين يو / لينڪس آپريٽنگ سسٽم.
دليلن جي حوالي سان ، اهڙا ڪيترائي آهن جيڪي استعمال ڪيا ويندا هئا پر سڀ کان عام اهو آهي: »-ا«. جيڪو لکت ٺاهي ٿو ڪنهن به حڪم جي اعلى غلطين کي درست ڪريوo (عملدرآمد واري لائن) ۽ جيڪڏهن مثبت ، اسٽاپ ۽ نڪرڻ کي طاقت ڏئي ٿو، هڪ عام هڪ آهي »-ايف« لاء اشارو ڏيو ته ڪهڙو اسڪرپٽ لوڊ ڪجي ۽ هڪ گهٽ ترين آهي »-آر ايم« انهي جو انجام انهي جي ختم ٿيڻ کان پوءِ. اهو فقط ممڪن آهي جنهن ۾ وضاحت ڪئي وڃي شاھ بنگ تائين اڪيلو دليل (پيراگراف) پروگرام جي نالي تي عمل ٿيڻ لاءِ.
۽ آخرڪار ، رسم الخط ٻڌايو عالمي ڪيبليوز جيڪي توهان استعمال ڪندا انهن جي ڪوڊ جي لازمي حصن ۾، واقعن جي تصديق لاءِ ، جهڙوڪ عملدرآمد جو رستو ، بااختيار صارف ، اسڪرپٽ جو نالو ، ٻين جي وچ ۾. ۽ ختم ڪريو پروگرام جو ڊيٽا ، خالق ، تنظيم ، ٻين سان گڏ ، ۽ لائسنس تي جيڪو پروگرام تي لاڳو ٿئي ٿو.
منهنجي صلاح (بهترين طريقا) چونڊڻ بهترين شو بينگ ۽ هڪ شيل اسڪرپٽ اهي آهن:
#! / يو ايس / بن / اين وي بيش
آرڊر استعمال ڇو ڪجي »اين وي« اسان آپريٽنگ سسٽم کي اشارو ڪريون ٿا ته مترجم صحيح طريقي سان استعمال ڪيو وڃي ته ان جي اندر ترتيب ڏنل آهي ، جيڪو اسان کي انهي جي اجازت ڏي ٿو. شاھ بنگ انهي جي پورائيت وڌندي آهي ، ڇو ته سڀني ۾ نه او ايس جي اين يو / لينڪس ترجمانن يا پروگرامن جو ھڪڙو ئي طريقو آھي. ۽ دليلن کان سواءِ ، ڇاڪاڻ ته ان لاءِ اهو حڪم استعمال ڪرڻ بهتر آهي مقرر، ڇاڪاڻ ته هن سان اسين ڪري سگھون ٿا غلطيون درست ڪريو ، عام (-e) يا مخصوص (+ x / -x)، يا ڏانهن ماحول لاءِ (گلوبل) يا خاص (-u / –unset) متغير. ۽ آخرڪار ، ڏانهن مخصوص (- او) ظاهري ڪارناما انجام ڏيو لکت جي اندر.
تنهن ڪري منهنجو تجويز ڪيل هيڊر هوندو:
#! / يو ايس / بن / اين وي بيش
# آپريٽنگ سسٽم طرفان بش مترجم مطلق رستي سان اشارو ڪريو.
سيٽ ڪريو-اي ايريڪسٽ
# لکت کي روڪڻ ۽ بند ڪرڻ لاءِ جڏهن هڪ حڪم يا عملدرآمد ناڪام ٿيو.
سيٽ-نو نالي وارو
# اسڪرپٽ ٻڌايو ته بند ڪرڻ ۽ بند ڪرڻ جي صورت ۾ جڏهن اسڪرپٽ غير اعلان ٿيل متغيرات کي استعمال ڪرڻ جي ڪوشش ڪندو.
سيٽ ڪريو پائپ لائن
# آخري آرڊر جي ٻاھران حالت حاصل ڪرڻ لاءِ جيڪو ٻاھران ڪوالٽ ظاھر ڪوڊ موٽيو.
# سيٽ -و xtrace
# ڊوڙڻ لاءِ جيڪو هلندڙ آهي. ڊيبگ ڪرڻ لاءِ ڪارآمد. ان کي صرف غلطين جي چڪاس لاءِ فعال ڪريو.
انهن تجويزن تي اضافي طور عمل ڪرڻ لاءِ ياد رکو:
01.- پنهنجو ڪوڊ داخل ڪريو توهان جو ڪوڊ پڙهڻ لائق بڻائڻ تمام ضروري آهي ، ۽ اهو ڪجهه آهي جنهن کي ڪيترائي ماڻهو پڻ وسارڻ چاهيندا آهن. ڏسڻ لاءِ سٺو منطقي toانچو سمجهڻ لاءِ ضروري پهلو ٺاهڻ جي ڪوشش ڪريو.
02.- ڪوڊ حصن جي وچ ۾ جڳھ شامل ڪريو. اهو طريقي سان ڪوڊ کي وڌيڪ سمجهڻ ۾ مدد ڪري سگهي ٿو ، ڇاڪاڻ ته ماڊلز يا سيڪشن سان اسپيسنگ کي ڪوڊ پڙهڻ ۽ سمجهڻ ۾ آسان بڻائڻ ۾ مدد ملندي آهي.
03.- جيترو ممڪن ٿيس ڪوڊ بابت گھڻي راءِ ڏيو. هر ڪمانڊ آرڊر (يا بعد ۾) سيڪشن (مٿين لائين) يا ڪوڊ سيڪشن جي مٿين (يا هيٺيون) ، اهو مناسب آهي ته اسڪرپٽ (ص) جي فنڪشن جي وضاحت شامل ڪرڻ لاءِ وضاحت ڪريو ته اهو ڪوڊ پاڻ ۾ ڇا ٿيندو آهي.
04.- انهن جي ڪمرن جي وضاحتي نالن سان متغيرات ٺاهيو. وضاحتي متغير نالا مقرر ڪريو جيڪي واضح طور تي انهي فنڪشن جي نشاندهي ڪن جنهن جي لاءِ ان کي بڻايو ويندو. جيتوڻيڪ جيڪڏهن توهان عارضي ڪيفيوز ٺاهيو ٿا جيڪو ڪڏهن به ڪنهن ڪوڊ جي بلاڪ کان ٻاهر استعمال ناهي ڪيو ويندو ، اهو اڃا تائين اهو نالو رکڻ سٺو آهي جيڪو بالواسطه طور تي (معروضي طور تي) وضاحت ڪري ٿو ته اهو ڪهڙي اقدار يا افعال کي سنڀاليندو آهي.
05.- ڪتب آڻڻ لاءِ نحو VARIABLE = $ (ڪمانڊ) استعمال ڪريو: جيڪڏهن توهان هڪ متغير ٺاهڻ چاهيو ٿا جنهن جي قيمت هڪ ٻي ڪمانڊ مان نڪتل هجي ، هن کي بش ۾ ڪرڻ جا ٻه طريقا آهن. سان بيڪ ٽيڪ، اهو آهي ، اکرن سان " , اجم: VARIABLE = "حڪم-اختيارن جي ماپ"، پر اهو اڳ ئي فرسوده آهي ، تنهن ڪري نحو VARIABLE = $ (حڪم) اھو اھو سڀ کان جديد ، قبول ۽ تجويز ڪيل طريقو آھي. NO -> DATE = "تاريخ +٪ F" / YES -> DATE = $ (تاريخ +٪ F)
06.- استعمال ڪريو Superuser ۽ Authorized User Validation modules and / or variables with or without password: جيڪڏهن ضروري هجي ته سيڪيورٽي ليول وڌائڻ لاءِ.
07.- آپريٽنگ سسٽم جي صحيحيت جي ماڊلز ۽ / يا متغير استعمال ڪريو (ڊسٽرو ، نسخو ، معمار): نامناسب پليٽفارم تي استعمال کان روڪڻ.
08.- نازڪ يا بيچ جي عملن جي انجام جي تصديق ڪرڻ لاءِ ماڊيول (طريقا / سيڪشن) استعمال ڪريو (ماڊل / افعال): اصلاح ڪرڻ يا لاپرواهي جي ڪري غلطين کي گهٽائڻ لاءِ.
09.- صارف دوستي وارا انٽرفيسز (صارف دوستي) فراهم ڪريو: ٽرمينل طرفان مينيوس ۽ رنگن سان گڏ آلاپ ۽ سان گڏ Zenity ، Gxmessage سان بنيادي صارفين لاءِ گرافڪ ٻوليون. ۽ جيڪڏهن ممڪن هجي ته آواز جي مطابق شناخت واري واقعن جو شناخت ڪندڙ سونڪ الارٽس جو تعاون استعمال ڪريو. مون پنهنجي ڪوشش ڪئي جيتري ممڪن ٿي سگهي صرف طريقن / اختيارن / فعاليتن کي فعال ۽ غير فعال ڪرڻ سان ٻنهي طريقن سان ڪم ڪريو.
10.- ڀليڪار ۽ الوداع ماڊل (پيغامات) شامل ڪريو: جيڪڏهن ضروري هجي ته صارف سان رابطو وڌائڻ لاءِ.
11.- ٻٽي عملدرآمد جي تصديق واري ماڊل شامل ڪريو هڪ ئي وقت تي 1 کان وڌيڪ عملدرآمد ٿيڻ کان روڪڻ لاءِ لاڪ فائل ٺاهيو.
12.- خارجي عملن ۽ / يا ماڊلز سان اسڪرپٽ جي سائيز کي درست ڪريو. جيڪڏهن اسڪرپٽ تمام وڏو آهي ، ڪوڊ کي افعال جي استعمال سان ورهايو يا انهن کي نن scriptن نن scriptن اکرن ۾ ورهايو جيڪي مکيه ذريعي سڏيا ويا آهن.
13.- واضع ۽ واضح طريقي سان اسڪرپٽ اندر ٻين ترجمانن (پروگرامنگ ٻولين) کي سڏڻ: انهن ليڪن يا ماڊلز جي ذريعي واضح طور تي مشغول ٿي وڃي ٿو.
مثال طور
# ================================================== #
#!/bin/bash
#Llamando a un interprete externo a BASH
echo 'El siguiente texto será mostrado por el interprete de PERL'
perl -e 'print "Este texto es mostrado por un script PERL embebido.\n";'
exit 0
# ==================================================#
# ==================================================#
#!/bin/bash #Llamando al interprete de Python.
echo 'El siguiente es un script de python:'
echo print "Hola, mundo!" | tee $HOME/.testpythonbash.py
python $HOME/.testpythonbash.py exit 0
# ==================================================#
# ======================================================= #
#!/bin/bash
# bash-y-perl.sh
echo "Saludos desde la parte BASH del script."
# Es posible añadir mas comandos BASH aqui.
exit 0
# Fin de la parte BASH del script.
###########################################################
#!/usr/bin/perl
# Esta parte del script se invoca con la opcion -x.
print "Saludos desde la parte PERL del script.\n";
# Podemos añadir mas comandos PERL aqui.
# Fin de la parte PERL del script.
# ======================================================= #
مستقبل جي اشاعتن ۾ اسين مٿي بيان ڪيل هر مشق کي وڌيڪ تفصيل سان وڌائينداسين.
۽ جيڪڏهن توهان کي ڪجهه ٻيون سٺيون مشقون knowاڻايون ، توهان جو پنهنجو يا ٻيا ، انهن کان وڌيڪ مڪمل معاوضي ٺاهڻ تي تبصرو ڪرڻ ۾ مشغول نه ٿيو.
هن نئين سيريز جي ايندڙ اشاعت تائين.
6 تبصرا ، پنھنجو ڇڏ
صرف هڪ تفصيل ، اها "شيبانگ" 😛
تمام سٺي پوسٽ ، ڊگهي وقت ۾ سٺي مشق هميشه معياري ڪرڻ ۾ مدد ڪن ٿيون.
بش سڀني تقسيم تي ڊفالٽ شيل ناهي ، ۽ تنهن ڪري / بائن / ش علامتي لنڪ هميشه بيش ڏانهن اشارو نه هوندو آهي. مثال طور ڊيبين ۾ (۽ مان فرض ڪريان ٿو اوبنٽو):
$ ls -l / بن / ش
lrwxrwxrwx 1 روٽ ريٽ 4 ايزا 8 2014 / بن / ش -> ڊيش
تنهن ڪري ڊيبين تي ڊفالٽ شيل ڊيش آهي. هتي ڏسو https://wiki.debian.org/Shell
شيل کي استعمال ۾ aاڻڻ لاءِ هڪ ترڪيب:
گونج $ 0
گونج $ SHELL
اين وي | گرپ SHELL
توهان واقعي صحيح آهيو! مون ڊيبين 9 ۽ ڪالي لينڪس 2.0 تي آزمايو ۽ اهو سچ آهي! توکي ڊيش ڪ takesي ٿو. اڃا به وڌيڪ ان جي سفارش آهي: #! / يوزر / بن / اين وي بيش جيڪڏهن اها شيل آهي توهان استعمال ڪرڻ چاهيندا آهيو.
۽ توهان بلڪل صحيح آهيو هي شيبانگ ، پر ڪجهه ويب سائيٽن (فني لٽريچر) تي انهي کي شيبان يا ٻئي لفظ چوندا آهن ، انهي ڪري منهنجو انتها مثال ؛
ڳڻپيوڪرنگ ۾ ، شيبرنگ ڪيليڪٽر جو نمبر اکرن تي نشان لڳائڻ ۽ نشان لڳائڻ (#!) رسم الخط جي شروعات تي آهي. اهو پڻ ش-بنگ ، [1] [2] هشبنگ ، [3] [4] پائونڊ-بينگ ، [5] يا هش-پلنگ پڻ سڏيو وڃي ٿو.
مان: https://en.wikipedia.org/wiki/Shebang_%28Unix%29
Y باب 2. شا بنگ سان شروع ڪرڻ
مان: http://www.tldp.org/LDP/abs/html/sha-bang.html
پڻ
http://unix.stackexchange.com/questions/50425/shell-scripts-are-still-working-without-sha-bang-line
https://mohammednv.wordpress.com/2013/05/30/sha-bang-line-in-scripts/
پڻ: بنيادي نالو $ 0