Što je Shell Scripting?
Budući da ste Linux korisnik znači da se igrate okolo s naredbenom retkom. Svidjelo se to ili ne, samo su neke stvari koje se čine lakšim putem ovog sučelja nego pokažući i kliknuvši. Što više upotrebljavate i saznate naredbeni redak, to više vidite njezin potencijal. Pa, zapovjedna linija sama je program: ljuska. Većina Linux distros danas koristi Bash, i to je ono što stvarno unosite naredbe.
Neki od vas koji su koristili Windows prije korištenja Linuxa mogu se sjetiti batch datoteka. To su bile male tekstualne datoteke koje biste mogli ispuniti naredbama za izvršavanje i Windows će ih pokrenuti zauzvrat. Bilo je to pametan i uredan način da se neke stvari naprave, poput igranja igara u vašem laboratoriju računalnih srednjih škola kada niste mogli otvoriti mape sustava ili stvoriti prečace. Batch datoteke u sustavu Windows, dok su korisne, je jeftina imitacija sheme skripti.
To je stvarno moć skriptiranja, mislim. Možete se programirati s naredbama koje već znate, dok učite grafikone većine glavnih programskih jezika. Trebate učiniti nešto ponavljajuće i zamorno? Skripta je! Trebate prečicu za stvarno zapetljanu naredbu? Skripta je! Želite li izgraditi stvarno jednostavan za korištenje sučelje naredbenog retka za nešto? Skripta je!
Prije nego što počneš
Prije nego započnemo serija skriptnih, pokrimo neke osnovne informacije. Koristit ćemo bash shell, koji većina Linux distribucija koristi nativno. Bash je dostupan za korisnike Mac OS i Cygwin na Windowsu. Budući da je tako univerzalna, trebali biste biti u stanju pisati bez obzira na platformu. Osim toga, sve dok se sve naredbe koje se upućuju postoje, skripte mogu raditi na više platformi s malo ili nikakvim ugađanjem.
Skriptiranje može lako iskoristiti privilegije "administratora" ili "superkorisnika", stoga je najbolje testirati skripte prije nego ih stavite na posao. Također koristite zdrav razum, kao što ste bili sigurni da imate sigurnosne kopije datoteka na kojima želite pokrenuti skriptu. Također je jako važno koristiti odgovarajuće opcije, kao što je -i za naredbu rm, tako da je potrebna vaša interakcija. To može spriječiti neke gadne pogreške. Kao takav, pročitajte skripte koje preuzimate i budite oprezni s podacima koje imate, samo u slučaju da stvari krenu krivo.
U svojoj jezgri, skripte su samo obične tekstualne datoteke. Možete koristiti bilo koji tekst editor za pisanje: gedit, emacs, vim, nano … Ovaj popis ide dalje. Samo ga svakako spremite kao običan tekst, a ne kao bogati tekst ili dokument Word. Budući da volim jednostavnost korištenja koju nano pruža, koristit ću to.
Dozvole i imena skripata
Skripte se izvode poput programa, a kako bi se to dogodilo, moraju imati odgovarajuće dozvole. Skripte možete izvršiti izvršavanjem naredbe na njemu:
chmod +x ~/somecrazyfolder/script1
To će omogućiti svakome pokretanje te određene skripte. Ako želite ograničiti njegovu upotrebu samo svom korisniku, možete to upotrijebiti umjesto toga:
chmod u+x ~/somecrazyfolder/script1
Da biste pokrenuli ovu skriptu, trebali biste upisati CD u odgovarajući direktorij, a zatim pokrenuti skriptu ovako:
cd ~/somecrazyfolder
./script1
Da bi stvari bile prikladnije, skripte možete staviti u mapu "bin" u vašem kućnom imeniku:
~/bin
U mnogim modernim distributerima ova mapa više se ne proizvodi prema zadanim postavkama, ali ga možete izraditi. Ovo je obično mjesto gdje se pohranjuju izvršne datoteke koje pripadaju vašem korisniku, a ne drugim korisnicima. Postavljanjem skripti ovdje možete ih pokrenuti upisivanjem njihovog imena, baš kao i ostalih naredbi, umjesto da se morate nalaziti oko CD-a i koristiti './' prefiks.
Prije nego nazovete skriptu, trebali biste sljedeće naredbu provjeriti imate li instaliran program koji koristi taj naziv:
which [command]
Mnogi ljudi imenuju svoje rane skripte "test", a kad ih pokušaju pokrenuti u naredbenom retku, ništa se ne događa. To je zato što je u sukobu s testnom naredbom, koja ništa ne čini bez argumenata. Uvijek budite sigurni da imena skripte nisu u sukobu s naredbama, inače se možete naći da radite stvari koje ne namjeravate učiniti!
Smjernice za skriptiranje
- Svaka skripta treba biti s "#! / Bin / bash"
- Svaka nova linija je nova naredba
- Redak komentara započinje s #
- Naredbe su okružene ()
Hash-Bang Hack
Kada ljuska analizira tekstnu datoteku, najizravniji način prepoznavanja datoteke kao skripte jest izrada prve linije:
#!/bin/bash
Ako koristite drugu ljusku, ovdje zamijenite njezin put. Redak komentara započinje s brisanjem (#), ali dodavanjem bang (!) I putanje ljuske nakon što je to vrsta hakiranja koja će zaobići ovo pravilo komentara i prisiliti skriptu da se izvrši s ljuskom koju ova linija ukazuje.
Nova linija = nova naredba
Svaka nova linija treba smatrati novom naredbom ili komponentom većeg sustava. Ako, primjerice, / onda / else izjave preuzmu više redaka, ali svaka komponenta tog sustava nalazi se u novom retku. Nemojte dopustiti da naredba padne u sljedeći redak jer to može skratiti prethodnu naredbu i dati vam pogrešku na sljedećem retku. Ako vaš urednik teksta to radi, trebali biste isključiti tekstualno umetanje da biste bili sigurni. Možete isključiti omotavanje teksta u nano bita koji će pritisnuti ALT + L.
Komentar Često s #s
Ako započnete redak s #, linija se zanemaruje. To ga pretvara u liniju komentara, gdje se možete podsjetiti na ono što je izlaz prethodne naredbe bio, ili što će sljedeća naredba učiniti. Ponovno isključite tekstualno umetanje ili izbacite komentar u više redaka koji počinju s hashom. Korištenje velikog broja komentara je dobra praksa da zadržite, jer vam omogućuje da i vi i drugi ljudi lakše podešavate svoje skripte. Jedina iznimka je gore spomenuti Hash-Bang hack, stoga nemojte slijediti #s with! S.;-)
Zapovjedi su okruženi roditeljima
U starijim danima, zamjene naredbi bile su učinjene s jednim oznakama (`, dionice ~ ključa). Nećemo se dotaknuti još toga, ali budući da većina ljudi ide i istražuje nakon što je naučila osnove, vjerojatno je dobro napomenuti da umjesto toga trebate koristiti zagrade. To je uglavnom zato što, kada gnjavite - stavite naredbe unutar drugih naredbi - zagrade se bolje ponašaju.
Vaša prva skripta
Počnimo s jednostavnom skriptom koja vam omogućuje kopiranje datoteka i dodavanje datuma do kraja naziva datoteke. Nazovimo ga "datecp". Najprije provjerimo da li se to ime u sukobu s nečim:
Napravimo praznu datoteku u mapi ~ / bin:
touch ~/bin/datecp
nano ~/bin/datecp
I, idemo naprijed i postavimo preduvjet prvog retka, i komentar o tome što ova skripta radi.
Što ćemo staviti varijablu? Pa, spremimo datum i vrijeme! Da bismo to učinili, pozvat ćemo naredbu datuma.
Pogledajte donji screenshot kako biste izradili izlaz naredbe datuma:
Koristimo tu posljednju iteraciju naredbe datuma, "datum +% m_% d_% y-% H.% M.% S", a koristite to u našoj skripti.
variable=$(command –options arguments)
A za nas, gradimo ga ovako:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Evo primjera skripte i njegovog izlaza:
Vratimo se našem scenariju. Dovoljno je dodati u dijelu kopiranja naredbe.
cp –iv $1 $2.$date_formatted
Zatim možete vidjeti da sam dodao opciju "$ 1".Prilikom skriptiranja znak dolara ($) nakon kojeg slijedi broj označava taj brojni argument skripte kada se poziva. Na primjer, u sljedećoj naredbi:
cp –iv Trogdor2.mp3 ringtone.mp3
Prvi argument je "Tucdordor2.mp3", a drugi argument je "zvonjenje.mp3".
Gledajući unatrag našu pismu, možemo vidjeti da se mi navodimo na dva argumenta:
Drugi argument, $ 2, djelovat će kao izlazna datoteka za istu naredbu. Ali, također možete vidjeti da je drugačiji. Dodali smo razdoblje, a iznad smo se pozvali na varijablu "Datum". Znatiželjan o tome što to radi?
Ovdje se događa kada se skripta izvodi:
Sada kada pokrenem naredbu datecp, pokrenut će ovu skriptu i omogućiti kopiranje bilo koje datoteke na novu lokaciju i automatski dodati datum i vrijeme na kraj naziva datoteke. Korisno za arhiviranje stvari!
Shell skriptiranje je u središtu stvaranja vašeg operativnog sustava za vas. Ne morate naučiti novi programski jezik kako bi se to dogodilo. Pokušajte skriptirati s nekim osnovnim naredbama kod kuće i započeti razmišljati o tome što možete koristiti za to.
Jeste li skripti? Imate savjete za novorođenče? Podijelite svoje misli u komentarima! Tu je više za ulazak u ovu seriju!