Windows-dagi skript orqali ubuntu-ni boshqarish. Linux ishga tushganda yoki yopilganda skriptni bajaring. # Multimedia va kodeklar

Uchun oddiy bash skriptini yozish, biz quyidagi oddiy amallarni bajarishimiz kerak:

Hammasi qanday ishlaydi:

Skriptimiz muvaffaqiyatli bajarilishi uchun #!/bin/bash skriptimizning birinchi qatori zarur.

ikkinchi qator mkdir testdir testdir katalogini yaratadi

uchinchi qator cd testdir yaratilgan testdir katalogiga o'tish imkonini beradi

jamoa teginish keyingi qatorda teginish fayl1 fayl2 fayl3 uchta fayl yaratadi

va skriptimiz qatoridagi oxirgi buyruq ls -al joriy katalogning mazmunini ko'rsatishga imkon beradi, unda oldingi qator tufayli uchta bo'sh fayl paydo bo'ldi.

Ko'rib turganimizdek, bizning oddiy skript barcha buyruqlar bilan boshlanadi yangi qator. Har bir satr, skriptni ishga tushirishda, muayyan harakatlarni bajarib, o'z ishini ketma-ket bajaradi.

Agar siz har kuni Linuxda bir xil buyruqlar zanjirini (doimiy parametrlar bilan) bajarsangiz, ehtimol siz ham xuddi shunday yozishingiz mantiqiydir. oddiy bash skripti, bu sizning vaqtingizni tejash va ishingizni avtomatlashtirish imkonini beradi.

Avvalo, bu nima ekanligini aniqlaylik skript va nima uchun kerak.

Skript Ingliz tilidan tarjima qilingan - stsenariy. Biz hammamiz film tomosha qilamiz, ko'pchiligimiz spektakllarni tomosha qilamiz. Film/spektakl yaratish uchun ssenariy mualliflari ularga ssenariy yozadilar, shu asosda aktyorlar o‘z rollarini sahnada, sahnama-sahnada ijro etadilar, undan film/spektakl yaratilgan. Ssenariyni yaratish juda mashaqqatli ish bo'lib, bu erda siz hamma narsani eng mayda detallarigacha hisobga olishingiz kerak, shunda rassomlar oxir-oqibat ssenariy muallifining niyatini amalga oshirishi mumkin va tomoshabin to'liq asarni ko'rishi mumkin.

Xuddi shunday, skriptlar ham foydalanuvchi birlashtirgan vazifalar ro'yxatini (kodni) bajarish uchun yoziladi, bu ularni bajarishni oson va tezroq qiladi. operatsion tizim. Oddiy skriptlarni yozish uchun dasturchi ma'lumotiga ega bo'lish shart emas.

Birinchidan, eng oddiyini yarataylik skript - Shell tizimni yangilash uchun.

Men barcha harakatlarni tizim bilan bajaraman Ubuntu, lekin ular boshqa tizimlar uchun ham amal qiladi Linux dan olingan Ubuntu. Buning uchun bizga kerak: Matn muharriri uni skript (kod) yaratish uchun kerakli vazifalar bilan to'ldirish va Terminal- yaratilgan skriptni bajarish uchun. Ushbu vositalar har qanday tarqatishda o'rnatiladi Linux standart.

Xo'sh, keling, ochamiz matn muharriri Gedit va unga chaqirilgan birinchi zarur belgilarni kiriting shebang.
shebang dasturlashda bu ikkita belgi ketma-ketligi: xesh va undov belgisi (#! ) skript faylining boshida. Va bu belgilarga bo'sh joysiz qo'shing /bin/sh- skript bajariladigan tarjimon. /bin/sh- bu odatda Bourne qobig'i yoki mos keluvchi buyruq qatori tarjimoni "yo'l/to/skript" birinchi parametr sifatida.
Skriptning birinchi talab qilinadigan qatori quyidagicha ko'rinadi:

# Mening birinchi Ubuntu yangilanish skriptimi

Satrning eng boshida joylashgan xesh belgisi (#) tarjimon/terminalga bu qatorni o'qish va bajarish kerak emasligini aniq ko'rsatadi. Ushbu skriptning kodida chiziq kerak bo'ladi, shunda skript yaratuvchisi koddagi ushbu segment/sahnada nima qilishini bilishi uchun, kelajakda bunday qatorlar ko'p bo'lganda chalkashib ketmaslik uchun. Xesh belgisi bo'lgan bunday chiziqlar deyiladi - izoh berdi .

sudo apt yangilanishi
sudo apt upgrade -y

-y ikkinchi buyruqning oxirida tarjimon/terminalga ushbu harakat/buyruq avtomatik ravishda, foydalanuvchi tomonidan tugmani bosish orqali qo'shimcha tasdiqlamasdan bajarilishi kerakligini tushuntiradi. Kirish. y- inglizcha uchun qisqa ha, ya'ni. Ha.

Ana xolos. Sizning birinchi skriptingiz yaratildi. Siz rasmga o'xshash narsani olishingiz kerak:


Faqat yaratilgan fayl/skriptni saqlash va uni berish qoladi Ism oxirida majburiy uzaytirish bilan - .sh. Kengaytma .sh bajariladigan faylga tayinlangan.
Men unga berdim Ism - update.sh, saqlash Uy papkasi foydalanuvchi:


Yaratilgan fayl/skript bajariladigan bo'lishi uchun unga ruxsat berilishi kerak. Buning uchun ikkita usul mavjud.

1. Terminalda quyidagi buyruqni bajaring:

sudo chmod +x update.sh

2. Yoki fayl boshqaruvchisini oching Uy papkasi(yaratilgan skriptni saqlagan joy), kontekst menyusida faylni o'ng tugmasini bosing - Xususiyatlar - Huquqlar va elementni faollashtiring - Ishlash: Faylni dastur sifatida bajarishga ruxsat bering:


Yaratilgan skriptni bajarish uchun siz terminalni ochishingiz kerak (maqolaning boshida terminal skriptni bajarish uchun zarur atribut/vosita ekanligini yozganman), kiriting sh, bo'sh joy bilan ajratilgan skript nomi - update.sh va tugmani bosing Kirish:


Yoki terminalda biz kiramiz sh va dan tortib torting fayl menejeri skript bilan yaratilgan fayl (shuningdek, bo'sh joy bilan ajratilgan):


Buyruqdan keyin fayl yo'li ko'rsatilgandan keyin sh va bo'sh joy uchun tugmani bosing Kirish Tizim yangilanishini amalga oshirish uchun (Kirish):


Endi istalgan vaqtda o'z skriptingiz yordamida tizimni yangilashingiz mumkin.

Ha, kimdir terminalda ushbu ikkita buyruqni bajarish orqali tizimni yangilash qiyin emas, deb bahslashishi mumkin, nega ba'zi skriptlarni puflab, yaratish kerak? Hammasi to'g'ri. Ammo bu "qozonlarni xudolar yoqib yubormasligini" ko'rsatish uchun oddiy skript yaratishning namunasidir.

Yuqorida ko'rsatilganidek, qo'lda ro'yxatdan o'tishni davom ettirishingiz mumkin bo'lsa-da, buni siz uchun avtomatik ravishda amalga oshirish uchun ba'zi skriptlarni o'rnatish yaxshiroqdir.

Skriptlar to'plami tizimga kirish jarayonini avtomatlashtiradi va PPP ni ishga tushiradi, shunda siz (root sifatida yoki PPP guruhi a'zosi sifatida) ulanishni boshlash uchun bitta buyruqni berishingiz kerak.

15.1 Foydalanuvchi nomi/parol orqali autentifikatsiya qilish uchun ulanish skriptlari

Agar provayderingiz PAP/CHAPni talab qilmasa, bular sizga kerak bo'lgan skriptlardir!

Agar ppp to'plami to'g'ri o'rnatilgan bo'lsa, sizda ikkita misol fayli bo'lishi kerak. PPP 2.1.2 uchun ular /usr/sbin va PPP 2.2 uchun ular /etc/ppp/scripts ichida. Ular chaqiriladi

PPP-2 uchun. 1.2

va PPP-2 uchun. 2

ppp-off ppp-on ppp-on-teruvchi

Endi, agar siz PPP 2.1.2 dan foydalanayotgan bo'lsangiz, men sizdan misol fayllarni olib tashlashingizni so'rayman. Ular bilan yuzaga kelishi mumkin bo'lgan muammolar mavjud (va ular ajoyib ishlayotganini aytmang), men ularni juda uzoq vaqt davomida ishlatganman (va hatto ularni ushbu QANDAY ning birinchi versiyasida tavsiya qilganman)!

PPP 2.1.2 foydalanuvchisi uchun mavjud ENG YAXSHI versiya shablon PPP 2.2 taqsimotidan olingan. Eski PPP-2.1.2 skripti o'rniga ushbu skriptlardan nusxa ko'chirish va foydalanishni tavsiya qilaman.

15.2 ppp-on skript

Bu ulanishni ishga tushiradigan PAIR skriptlarining birinchisidir.

#!/bin/sh # # PPP ulanishini boshlash uchun skript. Bu bir nechta skriptlarning birinchi qismi. # Bular maxfiy skriptlar emas, chunki kodlar ps buyrug'i bilan ko'rinadi. # Biroq, bu misol. # # Bu parametrlar. Ularni kerak bo'lganda o'zgartiring. TELEFON=555-1212 # Telefon raqami ulanishlar ACCOUNT=george # Kirish foydalanuvchi nomi ("Jorj Berns") PASSWORD=gracie # Ushbu hisob uchun parol (va "Gracie Allen") LOCAL_IP=0.0.0.0 # Mahalliy IP manzil, agar ma'lum bo'lsa. Dinamik = 0.0.0.0 REMOTE_IP=0.0.0.0 # Masofaviy IP manzil, agar kerak bo'lsa. Odatda 0.0.0.0 NETMASK=255.255.255.0 # Tegishli tarmoq niqobi, agar kerak boʻlsa # # Ularni “ppp-on-dialer”da mavjud boʻlishi uchun eksport qiling. telefon va # tizimi bilan ro'yxatdan o'tadi. Mutlaq fayl nomidan foydalaning, chunki ulanish # opsiyasi $PATH oʻzgaruvchisidan foydalanmaydi. (Agar buni qilsangiz, "root" hisobi # xavfsizlik teshigi bo'ladi, shuning uchun so'ramang.) # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # Ulanishni boshlash # # exec /usr/sbin /pppd debug / dev/ttySx 38400 \ $LOCAL_IP:$REMOTE_IP \ $DIALER_SCRIPT ni ulash

Bu ppp-on-dialer skripti:

#!/bin/sh # # Bu ppp-on skriptining ikkinchi qismi. U # kerakli ulanishni o'rnatadi. # /usr/sbin/chat -v \ TAYMAT 3 \ BORT "\nBIZ\r" \ BORT "\nJAVOB YO'Q\r" \ TO'XTIRISH "\nQO'NG'IROQ\r\n\r\nQO'NG'IROQ\r" \ "" \rAT \ "OK-+++\c-OK" ATH0 \ TAYMUT 30 \ OK ATDT$TELEPHONE \ ulaning "" \ ogin:--ogin: $ACCOUNT \ assword: $PASSWORD

PPP-2.2 uchun ppp-off skripti quyidagicha:

#!/bin/sh ############################################ ## ############################ # To'xtatilishi kerak bo'lgan qurilmani aniqlang. # if [ "$1" = "" ]; keyin QURILMA=ppp0 boshqa QURILMA=$1 fi ####################################### ############################ # Agar u erda ppp0 pid fayli bo'lsa, u holda dastur ishlaydi. Uni to'xtating. agar [ -r /var/run/$DEVICE.pid ]; keyin kill -INT `cat /var/run/$DEVICE.pid` # # Agar o'ldirish bajarilmasa, bu pid ostida hech qanday jarayon ishlamaydi. # Bu xorijiy blokirovka fayli mavjudligini ham anglatishi mumkin. # Siz uni olib tashlashni xohlashingiz mumkin. agar [! "$?" = "0" ]; keyin rm -f /var/run/$DEVICE.pid echo "XATO: O'chirilgan eski pid fayl" chiqish 1 fi # # Ajoyib. Pppd o'z xatosini tuzatishga ruxsat bering. echo "$DEVICE ga PPP havolasi tugatildi." exit 0 fi # # ppp jarayoni ppp0 uchun ishlamayapti echo "XATO: PPP havolasi $DEVICE da faol emas" chiqish 1

15.3 PPP ishga tushirish skriptlarini tahrirlash

Yangi skriptlar ikki qismga bo'linganligi sababli, biz ularni navbat bilan tahrir qilamiz.

ppp-on skripti

Skriptni provayderingizga foydalanuvchi nomingizni, internet provayderingizga parolingizni, provayder telefon raqamingizni kiritish uchun skriptni tahrirlashingiz kerak bo'ladi.

TELEPHONE= kabi satrlarning har biri aslida = ning o'ng tomonidagi ma'lumotlarni o'z ichiga olgan qobiq o'zgaruvchilari (albatta sharhlar bundan mustasno). Ushbu satrlarning har birini ISP va ulanishingizga moslashtirish uchun tahrirlang.

Bundan tashqari, /etc/ppp/options faylida IP-manzilni (agar kerak bo'lsa) o'rnatayotganingiz uchun, ko'rsatilgan qatorni O'chiring.

$LOCAL_IP:$REMOTE_IP \

Bundan tashqari, bunga ishonch hosil qiling qobiq o'zgaruvchisi DIALER_SCRIPT siz foydalanmoqchi bo'lgan terish skriptining to'liq yo'li va nomiga ishora qiladi. Shunday qilib, agar siz uni ko'chirsangiz yoki skript nomini o'zgartirsangiz, ppp-on skriptida ushbu qatorni to'g'ri tahrirlaganingizga ishonch hosil qiling!

ppp-on-dialer skripti

Bu bizning ppp ulanishimizni ko'taradigan ikkinchi skript.

Iltimos, diqqat qiling: chat skripti odatda bir qatorli skriptdir. Teskari qiyshiq chiziqlar bir nechta jismoniy chiziqlar bo'ylab (odamlar tomonidan o'qilishi uchun) chiziqlarni bo'sh joyga qo'yish uchun ishlatiladi va skriptning o'zi bir qismini tashkil qilmaslik uchun ishlatiladi.

Biroq, aslida (go'yo) nima sodir bo'layotganini tushunishimiz uchun buni batafsil ko'rib chiqish juda foydali!

15.4 Suhbat skripti nimani anglatadi...

Chat skripti - juftliklar ketma-ketligi kutilgan qatoryuborilgan qator. Xususan, shuni yodda tutingki, biz biror narsa yuborishdan oldin DOIMO nimanidir kutamiz.

Agar biz hech narsa olmasdan biror narsani jo'natishimiz kerak bo'lsa, biz bo'sh kutish qatoridan ("" bilan belgilanadi) va hech narsa yubormasdan biror narsani kutish uchun ham foydalanishimiz kerak! Bundan tashqari, agar satr bir nechta so'zlardan iborat bo'lsa (masalan, NO CARRIER), chat uni bir butun sifatida ko'rib chiqishi uchun satr atrofida tirnoq qo'yish kerak.

Shablonimizdagi chat liniyasi:

Exec /usr/sbin/chat -v

Chatga qo'ng'iroq qilganda -v opsiyasi chatga HAMMA kiritish/chiqarishni tizim jurnaliga (odatda /var/log/messages) nusxalashni aytadi. Suhbat skripti ishonchli ishlayotganiga ishonchingiz komil bo'lsa, tizim jurnalida keraksiz ma'lumotlarni saqlamaslik uchun -v ni olib tashlash uchun ushbu qatorni tahrirlang.

Bu kutilgan kirishni qabul qilish uchun pauzani 3 soniyaga o'rnatadi. Agar siz sekin modemdan foydalansangiz, bu qiymatni 5 yoki 10 soniyagacha oshirishingiz mumkin!

“\nBUSY\r”ni BORTISH

Agar BUSY qatori qabul qilinsa, operatsiya anormal tarzda bekor qilinadi.

"\nJAVOB YO'Q\r"

Agar NO ANSWER qatori qabul qilinsa, operatsiya anormal tarzda to'xtatiladi.

“\nZOʻNGIRILASH\r\n\r\nZOʻR QILISh”

Agar (takrorlaymiz) RINGING satri qabul qilinsa, operatsiya anormal tarzda to'xtatiladi.

Buning sababi kimdir sizning telefoningizda!

Biz modemdan hech narsa kutmaymiz va biz unga chiziq yuboramiz

OK-+++\c-OK ATH0

Bu biroz murakkabroq, chunki u chatning ba'zi xatolarni tiklash imkoniyatlaridan foydalanadi.

Aytgancha... Biz kutamiz KELISHDIKMI agar u qabul qilinmasa (modem buyruq rejimida bo'lmagani uchun), +++ yuboring (Xeyes-mos modemlar uchun standart qator, modemni qaytaradi. buyruq rejimi) va kuting KELISHDIKMI.

Keyin biz ATH0 (modem ulanishini to'xtatish uchun chiziq) yuboramiz. Bu sizning skriptingizga qo'ng'iroq paytida osilgan modem bilan kurashish imkonini beradi!

Qolgan skript buyruqlari uchun 30 soniya vaqt pauzasini o'rnatamiz. Agar siz pauza tufayli chat skriptini buzish bilan bog'liq muammolarga duch kelsangiz, bu qiymatni 45 soniya yoki undan ko'proqqa oshiring.

OK ATDT$TELEPHONE

Biz kutyapmiz KELISHDIKMI(modemning ATH0 buyrug'iga javobi) va biz qo'ng'iroq qilmoqchi bo'lgan raqamni tering

Biz CONNECT liniyasini kutamiz (masofaviy modem javob berganda bizning modemimiz yuboradi) va javoban hech narsa yubormaymiz.

Kirish:--login: $ACCOUNT

Shunga qaramay, biz ba'zi xatolarni tuzatmoqdamiz. Biz tizimga kirish so'rovini kutamiz (...ogin:), lekin agar pauzadan keyin biz qabul qilmasak, biz vagonga qaytish xabarini yuboramiz va keyin yana kirish so'rovini qidiramiz. Maslahat qabul qilinganda, biz foydalanuvchi nomini yuboramiz ($ACCOUNT qobiq o'zgaruvchisida saqlanadi).

Assword: $PASSWORD

Biz parol so'rovini kutamiz va parolimizni yuboramiz (shunga o'xshash qobiq o'zgaruvchisida saqlanadi).

Ushbu chat skripti xatoni tuzatish imkoniyatiga ega. chat sezilarli darajada ega katta miqdor Bu erda ko'rsatilganidan ko'ra imkoniyatlar. Uchun batafsil ma'lumot man chat (man 8 chat) bilan maslahatlashing.

Ulanishning server tomonida PPP ishga tushirilmoqda

Ppp-on-dialer skripti tizimga kirganingizdan so'ng avtomatik ravishda server tomonida pppd-ni ishga tushiradigan serverlar uchun juda yaxshi bo'lsa-da, ba'zi serverlar serverda ishga tushirish uchun PPP-ga aniq buyruq berishingizni talab qiladi.

Agar siz serverda PPP ni ishga tushirish buyrug'ini berishingiz kerak bo'lsa, ppp-on-dialer skriptini tahrirlashingiz kerak.

Skriptning oxirida (parol qatoridan keyin) login soʻrovingizni qidiradigan qoʻshimcha kutish-yuborish qatorini qoʻshing (Bourne qobigʻida alohida maʼnoga ega boʻlgan farqlovchi belgilar: $ va [ yoki ] (ochiq va yopiq) kabi kvadrat qavslar).

Chat dasturi qobiq buyruq qatorini topgandan so'ng, u sizning ISP-ning PPP serveri talab qiladigan ppp start buyrug'ini berishi kerak.

Mening PPP serverim standart bash Linux so'rovidan foydalanadi

va yozishimni so'raydi

serverda PPP ni ishga tushirish uchun.

Bu erda ba'zi xatolarni hisobga olish yaxshi bo'lar edi, shuning uchun, masalan, mening ishimda foydalanaman

Hartr--hartr ppp

Bu shuni anglatadiki, agar biz berilgan pauza ichida maslahat olmasak, biz vagonga qaytish xabarini yuboramiz va yana maslahatni qidiramiz.

Maslahat olingandan so'ng, biz ppp qatorini yuboramiz.

Oldingi satr oxiriga \ qo'shishni unutmang, shunda chat butun chat skripti bir qator deb o'ylaydi!

Afsuski, ba'zi serverlarda maslahatlar to'plami tez-tez o'zgarib turadi!

Nima bo'layotganini tushunish va otxonani topish uchun bir necha marta minikom orqali tizimga kirishingiz kerak bo'lishi mumkin kutilgan chiziq.

15.5 PAP/CHAP ulanishi uchun chat skripti

Agar provayderingiz PAP/CHAP dan foydalansa, suhbat skriptingiz ancha sodda.

Sizning butun chat skriptingiz buni qilishi kerak: telefon raqamiga qo'ng'iroq qiling, ulanishni kuting va keyin pppd loginni boshqarishiga ruxsat bering!

#!/bin/sh # # Bu ppp-on skriptining 2-qismi. U kerakli ulanish uchun # ulanish protokolini bajaradi. # exec /usr/sbin/chat -v \ TANITISH 3 \ BORTISH "\nBIZ\r" \ BEKT "\nJAVOB YO'Q\r" \ TO'XTIRISH "\nQO'NG'IROQ\r\n\r\nQO'NG'IROQ\r" \ "" \ rAT \ "OK-+++\c-OK" ATH0 \ TAYMAT 30 \ OK ATDT$TELEFON \ ulaning "" \

15.6 Nosozliklarni tuzatish pppd va fayl option_file opsiyasi

Yuqorida aytib o'tganimizdek, nosozliklarni tuzatish ma'lumotlarini pppd uchun -d opsiyasi bilan yoqishingiz mumkin. Nosozliklarni tuzatish opsiyasi unga teng.

Biz yangi skript bilan yangi ulanish o'rnatayotganimiz uchun endi disk raskadrovka opsiyasini tekshiring.

Agar diskda bo'sh joy kam bo'lsa, pppd jurnallari syslog faylingizni tezda ko'paytirishi va sizga muammo tug'dirishi mumkin.

Har bir narsa to'g'ri ishlayotganidan xursand bo'lganingizdan so'ng, ushbu parametrni olib tashlashingiz mumkin.

Agar siz ppp opsiyalari faylingizni /etc/ppp/options yoki /etc/ppp/options.ttySx dan boshqa nom bilan atagan bo'lsangiz, fayl nomini pppd fayl parametri bilan belgilang, masalan.

Exec /usr/sbin/pppd disk raskadrovka fayli options.myserver /dev/ttyS0 38400 \

Avvalo, bu nima ekanligini aniqlaylik skript va nima uchun kerak.

Skript Ingliz tilidan tarjima qilingan - stsenariy. Biz hammamiz film tomosha qilamiz, ko'pchiligimiz spektakllarni tomosha qilamiz. Film/spektakl yaratish uchun ssenariy mualliflari ularga ssenariy yozadilar, shu asosda aktyorlar o‘z rollarini sahnada, sahnama-sahnada ijro etadilar, undan film/spektakl yaratilgan. Ssenariyni yaratish juda mashaqqatli ish bo'lib, bu erda siz hamma narsani eng mayda detallarigacha hisobga olishingiz kerak, shunda rassomlar oxir-oqibat ssenariy muallifining niyatini amalga oshirishi mumkin va tomoshabin to'liq asarni ko'rishi mumkin.

Xuddi shunday, skriptlar operatsion tizimda bajarilishini oson va tezroq qilish uchun foydalanuvchi birlashtirgan (kod) vazifalar ro'yxatini bajarish uchun yoziladi. Oddiy skriptlarni yozish uchun dasturchi ma'lumotiga ega bo'lish shart emas.

Birinchidan, eng oddiyini yarataylik skript - Shell tizimni yangilash uchun.

Men barcha harakatlarni tizim bilan bajaraman Ubuntu, lekin ular boshqa tizimlar uchun ham amal qiladi Linux dan olingan Ubuntu. Buning uchun bizga kerak: Matn muharriri uni skript (kod) yaratish uchun kerakli vazifalar bilan to'ldirish va Terminal- yaratilgan skriptni bajarish uchun. Ushbu vositalar har qanday tarqatishda o'rnatiladi Linux standart.

Shunday qilib, matn muharririni oching Gedit va unga chaqirilgan birinchi zarur belgilarni kiriting shebang.
shebang dasturlashda bu ikkita belgi ketma-ketligi: xesh va undov belgisi ( #! ) skript faylining boshida. Va bu belgilarga bo'sh joysiz qo'shing /bin/sh- skript bajariladigan tarjimon. /bin/sh- bu odatda Bourne qobig'i yoki mos keluvchi buyruq qatori tarjimoni "yo'l/to/skript" birinchi parametr sifatida.
Skriptning birinchi talab qilinadigan qatori quyidagicha ko'rinadi:

# Mening birinchi Ubuntu yangilanish skriptimi

Satrning eng boshida joylashgan xesh belgisi (#) tarjimon/terminalga bu qatorni o'qish va bajarish kerak emasligini aniq ko'rsatadi. Ushbu skriptning kodida chiziq kerak bo'ladi, shunda skript yaratuvchisi koddagi ushbu segment/sahnada nima qilishini bilishi uchun, kelajakda bunday qatorlar ko'p bo'lganda chalkashib ketmaslik uchun. Xesh belgisi bo'lgan bunday chiziqlar deyiladi - izoh berdi .

sudo apt yangilanishi
sudo apt upgrade -y

-y ikkinchi buyruqning oxirida tarjimon/terminalga ushbu harakat/buyruq avtomatik ravishda, foydalanuvchi tomonidan tugmani bosish orqali qo'shimcha tasdiqlamasdan bajarilishi kerakligini tushuntiradi. Kirish. y- inglizcha uchun qisqa ha, ya'ni. Ha.

Ana xolos. Sizning birinchi skriptingiz yaratildi. Siz rasmga o'xshash narsani olishingiz kerak:


Faqat yaratilgan fayl/skriptni saqlash va uni berish qoladi Ism oxirida majburiy uzaytirish bilan - .sh. Kengaytma .sh bajariladigan faylga tayinlangan.
Men unga berdim Ism - update.sh, saqlash Uy papkasi foydalanuvchi:


Yaratilgan fayl/skript bajariladigan bo'lishi uchun unga ruxsat berilishi kerak. Buning uchun ikkita usul mavjud.

1. Terminalda quyidagi buyruqni bajaring:

sudo chmod +x update.sh

2. Yoki fayl boshqaruvchisini oching Uy papkasi(yaratilgan skriptni saqlagan joy), kontekst menyusida faylni o'ng tugmasini bosing - Xususiyatlar - Huquqlar va elementni faollashtiring - Ishlash: Faylni dastur sifatida bajarishga ruxsat bering:


Yaratilgan skriptni bajarish uchun siz terminalni ochishingiz kerak (maqolaning boshida terminal skriptni bajarish uchun zarur atribut/vosita ekanligini yozganman), kiriting sh, bo'sh joy bilan ajratilgan skript nomi - update.sh va tugmani bosing Kirish:


Yoki terminalda biz kiramiz sh va yaratilgan faylni fayl boshqaruvchisidan skript bilan sudrab boring (shuningdek, bo'sh joy bilan ajratilgan):


Buyruqdan keyin fayl yo'li ko'rsatilgandan keyin sh va bo'sh joy uchun tugmani bosing Kirish Tizim yangilanishini amalga oshirish uchun (Kirish):


Endi istalgan vaqtda o'z skriptingiz yordamida tizimni yangilashingiz mumkin.

Ha, kimdir terminalda ushbu ikkita buyruqni bajarish orqali tizimni yangilash qiyin emas, deb bahslashishi mumkin, nega ba'zi skriptlarni puflab, yaratish kerak? Hammasi to'g'ri. Lekin bu "qozonlarni xudolar yoqib yubormasligini" ko'rsatish uchun oddiy skript yaratish misoli 😃.

Oddiy skriptlarni yozish va ulardan foydalanishni o'rganganingizdan so'ng, siz tizimni sozlash uchun skript yaratishingiz mumkin, shunda tizim qayta o'rnatilgan bo'lsa, har safar shunga o'xshash sozlamalarga ega saytlarni Internetda qidirmasdan yaratilgan skriptdan foydalanishingiz mumkin.

Ko'pchiligingiz tizimni o'rnatish saytlaridan foydalanasiz, masalan, men keyingi nashrdan keyin e'lon qiladigan saytlar. Ubuntu - O'rnatishdan keyin Ubuntu yoki shunga o'xshash saytlar. Ushbu saytlardan birini oching: http://compizomania.blogspot.com/2016/04/ubuntu-1604.html, keyin skript yaratish uchun matn muharriri.
Masalan, men quyidagi bo'sh joyni qildim.

Matn muharririda birinchi talab qilinadigan qatorni kiriting:

# O'rnatishdan keyin Ubuntu-ni sozlash
# Tizim yangilanishi

Quyidagilar tizimni yangilash buyruqlari:

sudo apt yangilanishi
sudo apt upgrade -y

Tavsif qatori: omborlarni qo'shish:

# Repozitariylarni qo'shish

Va dasturiy ta'minotni keyingi o'rnatish uchun kerakli omborlarni qo'shing:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) hamkori" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa: nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

Kerakli omborlar qo'shilgandan so'ng (takrorlayman, sizning shaxsiy omborlaringiz bo'lishi mumkin, menda misol bor), siz tizimni yangilashingiz kerak:

Tavsif qatori:

# Omborlarni ulashdan keyin tizim yangilanishi

Va bajarish uchun buyruq:

sudo apt yangilanishi

Endi omborlar qo'shildi va tizim yangilandi, dasturlarni o'rnatish vaqti keldi:

# Dasturlarni o'rnatish

Dasturlarni o'rnatish uchun buyruqni bir marta kiritish kifoya sudo apt o'rnatish va keyin bo'sh joy orqali bu qator xohlaganingizcha ko'p dastur qo'shing, asosiysi ular to'g'ri tuzilgan. Agar dastur bir nechta so'zlardan iborat bo'lsa, uning buyrug'i monolit bo'lishi kerak, ya'ni. undagi barcha so'zlar tire orqali kiritilishi kerak, masalan: birlik-tweak-vositasi:

sudo apt mening ob-havo ko'rsatkichini o'rnating telegram skype lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Qo'shimcha kodeklarni o'rnatish

# Multimedia va kodeklar

sudo apt install ubuntu-restricted-extras -y

Tizimdagi nosozliklarni o'chirish

# Tizim ishdan chiqishi haqida xabar berishni o'chirib qo'ying

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/appport"

Xo'sh, ehtimol hammasi shu. Ushbu yaratilgan skript fayli quyidagicha ko'rinishi kerak:


Siz uni saqlashingiz kerak (tugmasini bosing Saqlash) va bering Ism kengaytma bilan .sh. Men uni chaqirdim Settings\Ubuntu.sh(siz uni boshqacha nomlashingiz mumkin, lekin .sh kengaytmasidan foydalaning):


Yaratilgan skriptni bajariladigan qilib yaratamiz:

sudo chmod +x Setup\Ubuntu.sh

Yaratilgan skriptni bajarish uchun terminalga kiring sh va bo'sh joy bilan ajratilgan yaratilgan skript nomi yoki sh, bo'sh joyni bosing va yaratilgan faylni eng oddiy skriptda yuqorida aytib o'tilganidek, terminalga torting va tugmani bosing. Kirish, uni amalga oshirish uchun.

Eslatma. Buyruqdagi teskari chiziq Settings\Ubuntu.sh terminal fayl nomidagi ikkita alohida so'z orasidagi bo'sh joyni qoldiradi.

Skript bajarilgandan so'ng, tizimni qayta o'rnatish va qayta sozlash uchun uni kelajakda saqlang, eng yaxshisi papkadagi qattiq diskning alohida bo'limida. /uy. Agar yo'q bo'lsa, unda bulut xizmati(Bulutli ma'lumotlarni saqlash) turi: DropBox, Cloud Mail.Ru, Mega.co va hokazo, shu bilan siz istalgan vaqtda skriptni o'zingiz ishlatishingiz yoki do'stlaringiz yoki qarindoshlaringizga tizimni sozlashda yordam berishingiz mumkin.

Shell skripti - bu siz qayta-qayta foydalanishingiz mumkin bo'lgan buyruqlar ketma-ketligi. Ushbu ketma-ketlikni bajarish odatda kiritish orqali amalga oshiriladi buyruq qatori skript nomi. Bundan tashqari, cron yordamida siz vazifalarni avtomatlashtirish uchun skriptlardan foydalanishingiz mumkin. Skriptlardan yana bir foydalanish - yuklash va to'xtatish protsedurasi UNIX tizimlari, init skriptlari demonlar va xizmatlar bilan operatsiyalarni aniqlaganda.

Shell skriptini yaratish uchun muharriringizda yangi, bo'sh faylni oching. Buning uchun har qanday matn muharriridan foydalanishingiz mumkin: vim, emacs, gedit, dtpad va hokazo.; Har qanday qiladi. Biroq, siz kabi yanada rivojlangan muharrirni tanlashingiz mumkin vim yoki emacs, chunki bunday muharrirlar qobiq va Bash sintaksisini tanib olish uchun sozlanishi va yangi boshlanuvchilar tez-tez qiladigan xatolarning oldini olishda yaxshi yordam bo'lishi mumkin, masalan, qavslarni yopishni unutish va nuqta-verguldan foydalanish.

Tering UNIX buyruqlari yangi bo'sh faylda xuddi ularni buyruq satriga kiritgandek. Oldingi bobda muhokama qilinganidek ("Buyruqni ishga tushirish" bo'limiga qarang) buyruqlar qobiq funktsiyalari, o'rnatilgan buyruqlar, UNIX buyruqlari yoki boshqa skriptlar bo'lishi mumkin.

Skriptingizga skript nima qilishini ko'rsatadigan mnemonik nom bering. Skript nomi mavjud buyruqlar bilan zid kelmasligiga ishonch hosil qiling. Har qanday chalkashmaslik uchun skript nomlari ko'pincha .sh kengaytmasi bilan tugaydi. Biroq, tizimingizda siz tanlagan bir xil nomdagi boshqa skriptlar bo'lishi mumkin. Buyruqlardan foydalanish qaysi, qayerda va boshqalar uchun ushbu nomdagi mavjud dasturlar va fayllar haqida ma'lumot qidiring:

Qaysi -skript_nomi qayerda skript_nomi skript_nomini topadi ( taxminan. : script_name ni skriptingiz nomi bilan almashtiring).

Skript script1.sh

Ushbu misolda biz buyruqdan foydalanamiz aks-sado, Bash-ga o'rnatilgan bo'lib, u foydalanuvchiga chiqishdan oldin nima qilish kerakligi haqida xabar beradi. Foydalanuvchilarga skript nima qilishi haqida xabardor bo'lishlari tavsiya etiladi Agar ularga ssenariy hech narsa qilmayotgandek tuyulsa, asabiylashmagan. “Interaktiv skript yozish” 8-bobidagi foydalanuvchilarni xabardor qilish mavzusiga qaytamiz.


2.1-rasm. Skript script1.sh

Xuddi shu skriptni o'zingiz uchun yozing. Skriptlaringiz joylashgan ~/scripts katalogini yaratish yaxshi fikr bo'ladi. Ushbu katalogni tarkibga qo'shing PATH o'zgaruvchisi:

PATH="$PATH:~/skriptlarni eksport qilish"

Agar siz Bash-ni endi boshlayotgan bo'lsangiz, turli qobiq konstruktsiyalari uchun turli ranglardan foydalanadigan matn muharriridan foydalaning. Sintaksisni ajratib ko'rsatish qo'llab-quvvatlanadi vim, gvim, (x) emacs, yozing va boshqa koʻplab muharrirlar uchun sevimli muharriringiz uchun hujjatlarni koʻring.

Skriptni bajarish

Skript ishga tushishi uchun u tegishli foydalanuvchilar uchun ishlash uchun ruxsatlarga ega bo'lishi kerak. Ruxsatlarni o'rnatganingizdan so'ng, kerakli ruxsatlarni o'rnatganingizni tekshiring. Bu bajarilgandan so'ng, skript boshqa har qanday buyruq kabi ishga tushirilishi mumkin:

Willy:~/scripts> chmod u+x script1.sh willy:~/scripts> ls -l script1.sh -rwxrw-r-- 1 willy willy 456 24-dekabr 17:11 script1.sh willy:~> script1.sh Skript hozir boshlanadi. Salom Villi! Endi men sizga bog‘langan foydalanuvchilar ro‘yxatini keltiraman: 18 kun 15:38 gacha, 5:37, 4 foydalanuvchi, o‘rtacha yuklanish: LOGIN@ IDLE JCPU PCPUDAN 0,15 FOYDALANUVCHI TTY NIMA root tty2 - shanba 14:00 16:25 0,24s 0,05s -bash Willy:0 - Shanba 14:00 ? 0,00s? - willy pts/3 - Sat 14:00 3:33m 36,39s 36,39s BitchX willy ir willy pts/2 - Sat 14:00 3:33m 0,13s 0,06s /usr/bin/screen Men hozir ikkita o'zgaruvchini o'rnatyapman. Bu qator. : qora Va bu raqam: 9 Men sizga taklifingizni qaytarib beraman. willy:~/scripts> echo $COLOUR willy:~/scripts> echo $VALUE willy:~/scripts>

Bu skriptni bajarishning eng keng tarqalgan usuli. Bunday skriptlarni pastki qavatda ishlatish afzaldir. Ushbu pastki qavatda yaratilgan o'zgaruvchilar, funktsiyalar va taxalluslar faqat ushbu pastki qavatdagi maxsus bash sessiyasida ma'lum. Ushbu qobiqdan chiqib, ota-qobiq boshqaruvni o'z qo'liga olganida, barcha sozlamalar o'chiriladi va skript tomonidan ushbu qobiq holatiga kiritilgan har qanday o'zgarishlar unutiladi.

Agar siz skriptlarni ko'rsatmagan bo'lsangiz yoki . (joriy katalog) skriptni quyidagi tarzda faollashtirishingiz mumkin:

./script_name.sh

Mavjud qobiq ichida skriptni ishga tushirish ham mumkin, lekin bu odatda faqat maxsus xususiyatlarni xohlasangiz amalga oshiriladi, masalan, skript boshqa qobiq bilan ishlashini tekshirish yoki disk raskadrovka maqsadida iz yaratish ( taxminan.- script_name o'rniga skriptingiz nomini belgilang):

Rbash script_name.sh sh script_name.sh bash -x script_name.sh

Belgilangan buyruq qobig'i joriy qobiqning pastki qobig'i sifatida ishga tushiriladi va skriptni bajaradi. Bu skriptni ma'lum parametrlar bilan yoki skriptning o'zida ko'rsatilmagan muayyan sharoitlarda ishga tushirishni xohlaganingizda amalga oshiriladi.

Agar siz yangi qobiqni ishga tushirishni xohlamasangiz, lekin skriptni joriy qobiqda ishga tushirishni istasangiz, manba buyrug'idan foydalaning:

Manba script_name.sh

Bunday holda, skript ijro huquqlariga muhtoj emas. Buyruqlar joriy qobiq kontekstida bajariladi, shuning uchun skript bajarilishini tugatgandan keyin muhitingizga kiritilgan har qanday o'zgarishlar ko'rinadigan bo'lib qoladi:

Willy:~/skriptlar> manba script1.sh --chiqish o'chirildi-- willy:~/skriptlar> echo $VALUE 9 willy:~/skriptlar>