23Aug
Pojem "shell skriptovanie" sa často spomína v fórach Linux, ale mnohí používatelia s ním nie sú oboznámení.Učíte sa, že táto jednoduchá a výkonná programovacia metóda vám pomôže ušetriť čas, lepšie sa naučiť príkazový riadok a vyhnúť únavným úlohám pri správe súborov.
Čo je Shell skriptovanie?
Používanie Linuxu znamená, že hráte s príkazovým riadkom. Páči sa vám to alebo nie, existujú len niektoré veci, ktoré sa cez toto rozhranie dajú oveľa ľahšie ako pomocou ukazovateľov a kliknutí.Čím viac používate a učia sa príkazové riadky, tým viac vidíte jeho potenciál. Príkazový riadok samotný je program: shell. Väčšina linuxových distribúcií dnes používa Bash a práve to naozaj vstupujete do príkazov.
Teraz niektorí z vás, ktorí používali systém Windows pred použitím Linuxu, si môžu pamätať dávkové súbory. Jednalo sa o malé textové súbory, ktoré by ste mohli vyplniť príkazmi na spustenie a systém Windows ich spustil. Bol to šikovný a elegantný spôsob, ako urobiť nejaké veci, ako napríklad spustiť hry vo vašej strednej škole počítačovej laboratóriu, keď ste nemohli otvoriť systémové zložky alebo vytvoriť skratky. Dávkové súbory v systéme Windows, aj keď sú užitočné, sú lacnou imitáciou shell skriptov.
Shell skripty nám umožňujú naprogramovať príkazy v reťaziach a nechať ich spustiť ako scripted udalosť, rovnako ako dávkové súbory. Umožňujú tiež oveľa viac užitočných funkcií, ako je napríklad náhrada velenia. Môžete vyvolať príkaz, ako dátum, a použiť jeho výstup ako súčasť schémy pomenovania súborov. Môžete automatizovať zálohy a každý skopírovaný súbor môže mať aktuálny dátum pripojený na koniec svojho mena. Skripty nie sú len vyvolaním príkazov. Sú programy samy osebe. Skriptovanie vám umožňuje používať programovacie funkcie - napríklad slučky 'pre', ak sú premenné /then/ else a tak ďalej - priamo v rozhraní vášho operačného systému. A nemusíte sa učiť iný jazyk, pretože používate to, čo už viete: príkazový riadok.
To je vlastne skriptovací výkon, myslím. Môžete programovať pomocou príkazov, ktoré už poznáte, zatiaľ čo sa učia staples väčšiny hlavných programovacích jazykov. Potrebujete robiť niečo opakujúce a zdĺhavé?Script to! Potrebujete skratku pre skutočne komplikovaný príkaz? Script to! Chcete vytvoriť naozaj jednoduché rozhranie príkazového riadka pre niečo? Script to!
Skôr než začnete
Skôr než začneme naše skriptovacie série, poďme sa zaoberať niektorými základnými informáciami. Budeme používať bash shell, ktorý väčšinu linuxových distribúcií používa natívne. Bash je k dispozícii aj pre používateľov operačného systému Mac OS a Cygwin pre systém Windows. Keďže je to tak univerzálne, mali by ste byť schopní skriptovať bez ohľadu na vašu platformu. Okrem toho, ak existujú všetky príkazy, na ktoré odkazujeme, skripty môžu pracovať na viacerých platformách, ktoré vyžadujú malé alebo žiadne ladenie.
Skriptovanie môže ľahko využívať privilégiá "administrátora" alebo "superužívateľa", takže je najlepšie vyskúšať skripty skôr, ako ich začnete pracovať.Tiež používajte zdravý rozum, ako napríklad uistiť sa, že máte zálohy súborov, na ktorých sa chystáte spustiť skript. Je tiež naozaj dôležité používať správne možnosti, napríklad -i pre príkaz rm, aby ste potrebovali interakciu. To môže zabrániť niektorým škaredým chybám. Ako taký, prečítajte si skripty, ktoré si stiahnete, a buďte opatrní s údajmi, ktoré máte, len v prípade, že sa veci pokazia.
V ich jadre skripty sú len textové súbory. Na ich zápis môžete použiť ľubovoľný textový editor: gedit, emacs, vim, nano. .. Tento zoznam pokračuje. Stačí ho uložiť ako obyčajný text, nie ako bohatý text alebo dokument programu Word. Keďže mám rád jednoduchosť používania, ktorú nano poskytuje, budem ju používať.
povolenia skriptov a mená Skripty
sa vykonávajú ako programy a na to, aby sa to stalo, musia mať správne povolenia. Skriptov môžete spustiť spustením spustením nasledujúceho príkazu:
chmod + x ~ /somecrazyfolder/ skript1
Umožní to každému spustiť daný skript. Ak chcete obmedziť jeho použitie len na svojho používateľa, môžete ho použiť:
chmod u + x ~ /somecrazyfolder/ skript1
Ak chcete spustiť tento skript, budete musieť cd do správneho adresára a potom spustiť skript ako tento:
cd ~ / somecrazyfolder
. /script1
Ak chcete urobiť veci pohodlnejšie, môžete umiestniť skripty do priečinka "bin" vo vašom domovskom adresári:
~ / bin
V mnohých moderných distribuciách už nie je táto zložka vytvorená predvolene, ale môžete ju vytvoriť.Toto je zvyčajne miesto, kde sú uložené spustiteľné súbory, ktoré patria vášmu používateľovi, a nie ostatným používateľom. Umiestnením skriptov tu môžete jednoducho spustiť zadaním ich mena, rovnako ako ostatné príkazy, namiesto toho, aby ste museli cd okolo a používať predponu './'.
Skôr než napíšete skript, mali by ste skontrolovať, či máte nainštalovaný program, ktorý používa tento názov:
, ktorý [command]
Veľa ľudí pomenuje skoré skripty "test" a keď sa pokúšajúspustite ho v príkazovom riadku, nič sa nestane. Je to preto, že je v rozpore s testovacím príkazom, ktorý nerobí nič bez argumentov. Vždy sa uistite, že názvy vašich skriptov nie sú v rozpore s príkazmi, inak môžete zistiť, že robíte veci, ktoré nemáte v úmysle urobiť!Pokyny pre skriptovanie
Ako som už spomenul, každý súbor skriptu je v podstate prostý text. To neznamená, že by ste mohli napísať to, čo chcete všetko bezbožným. Keď sa pokúsi o vykonanie textového súboru, shelly budú analyzovať pomocou nich informácie o tom, či sú skripty alebo nie, a ako všetko správne spracovať.Z tohto dôvodu existuje niekoľko pokynov, ktoré musíte vedieť.
- Každý skript by mal byť "#!
- bash "
- Každý nový riadok je nový príkaz
- Riadky s poznámkami začínajúc #
- Príkazy sú obklopené()
Hash-Bang Hack
Keď shell analyzuje textový súbor, najpriamejší spôsob identifikácie súboruskript je vytvorením prvého riadka:
#!/bin/ bash
Ak používate iný shell, nahraďte ho tu. Riadky s poznámkami začínajú s hashes( #), ale pridávajú tón( !) A cestu shell potom, čo je to nejaký hack, ktorý obíde toto pravidlo komentára a núti skript spúšťať s shell, ktorý tento riadok ukazuje.
Nová linka = nový príkaz
Každý nový riadok by sa mal považovať za nový príkaz alebo za komponent väčšieho systému. Ak napríklad príkazy /then/ else prevezmú viac riadkov, každá súčasť tohto systému sa nachádza v novom riadku. Nedovoľte, aby príkaz krváral do ďalšieho riadku, pretože to môže skrátiť predchádzajúci príkaz a dať vám chybu na nasledujúcom riadku. Ak to váš textový editor robí, mali by ste vypnúť text-wrapping byť na bezpečnej strane. Textové balenie môžete vypnúť v nano bitovom stlačení ALT + L.
Komentár Často s #s
Ak spustíte riadok s #, riadok sa ignoruje. To sa zmení na riadok komentárov, kde si môžete pripomenúť, aký bol výstup predchádzajúceho príkazu alebo čo bude robiť ďalší príkaz. Znova vypnite obtékání textu alebo rozbiť komentár na viacero riadkov, ktoré začínajú všetkým hash. Použitie veľkého počtu pripomienok je dobrá prax, ktorú si udržať, pretože vám a ostatným ľuďom môžete ľahšie upraviť svoje skripty. Jedinou výnimkou je vyššie uvedený Hash-Bang hack, takže nesledujte #s s! S.;-) Príkazy
sú obklopené zátvorkami
V starších dňoch boli príkazy nahradené jedinými značkami( `, zdieľa kľúč ~).Nebudeme sa k tomu ešte dotýkať, ale keďže väčšina ľudí odíde a skúma po tom, ako sa učia základy, je pravdepodobne dobré spomenúť, že by ste mali používať zátvorky. Je to hlavne preto, že keď ste hniezdia - vložte príkazy do iných príkazov - zátvorky fungujú lepšie.
Váš prvý skript
Začnime jednoduchým skriptom, ktorý umožňuje kopírovať súbory a pridať dátumy do konca názvu súboru. Povedzme to "datecp".Najprv skontrolujte, či sa s týmto menom niečo stotožňuje:
Môžete vidieť, že neexistuje žiadny výstup tohto príkazu, takže sme všetci nastavili tento názov.
Vytvoríme prázdny súbor v priečinku ~ / bin:
touch ~ /bin/ datecp
A teraz zmeníme povolenie, skôr ako zabudneme:
Začneme vytvárať skript potom. Otvorte súbor v textovom editore výberu. Ako som povedal, páči sa mi jednoduchosť nano.
nano ~ /bin/ datecp
A poďme ďalej a vložme predpokladaný prvý riadok a komentár k tomu, čo tento skript robí.
Ďalej deklarujeme premennú.Ak ste niekedy absolvovali algebru, pravdepodobne viete, čo to je. Premenná nám umožňuje ukladať informácie a robiť veci s nimi. Premenné sa môžu rozširovať, keď sú uvedené inde. To znamená, že namiesto zobrazenia svojho mena sa zobrazí ich uložený obsah. Neskôr môžete zistiť, že tá istá premenná ukladá rôzne informácie a akékoľvek inštrukcie, ktoré sa objavia po tom, použijú nové informácie. Je to naozaj skvelý zástupný symbol.
Čo budeme vložiť do premennej? No, uložme si dátum a čas! Ak to chcete urobiť, zavoláme príkaz dátumu.
Pozrite si nižšie uvedený obrázok, ako vytvoriť výstup dátového príkazu:
Môžete vidieť, že pridaním rôznych premenných, ktoré začínajú%, môžete zmeniť výstup príkazu na to, čo chcete.Ďalšie informácie nájdete na príručke pre príručku dátumu.
Použite túto poslednú iteráciu príkazu dátum, "dátum +% m_% d_% y-% H.% M.% S" a použite to v našom skripte.
Ak by sme tento skript ušetrili práve teraz, mohli by sme ho spustiť a dali by nám výstup dátového príkazu, ako by sme očakávali:
Ale urobme niečo iné.Uveďte názov premennej, napríklad date_formatted na tento príkaz. Správna syntax je nasledovná:
variable = $( príkaz -options arguments)
A pre nás by sme si ju zostavili takto:
date_formatted = $( dátum +% m_% d_% y-% H.%M.% S)
Toto je to, čo nazývame príkazom nahradenie. V podstate hovoríme, že vždy, keď sa zobrazí premenná "date_formatted", spustite príkaz v zátvorkách. Potom sa má namiesto názvu premennej zobraziť ľubovoľný výstup, ktorý majú príkazy, "date_formatted".
Tu je príklad skript a jeho výstup:
Všimnite si, že na výstupe sú dva medzery. Pri oboch príkazoch echo príkazu a priestore pred premennou sa zobrazia obidva miesta. Nepoužívajte medzery, ak nechcete, aby sa zobrazovali. Tiež si všimnite, že bez tohto pridaného riadku "echo" skript by nedal absolútne žiadny výstup.
Vráťme sa k nášmu skriptu.Ďalej pridáme časť kopírovania príkazu.
cp -iv $ 1 $ 2. $ date_formatted
Toto vyvolá príkaz kopírovanie s možnosťami -i a -v. Prvý z nich vás požiada o overenie skôr, než prepíše súbor a ten druhý zobrazí, čo sa deje na príkazovom riadku.
Ďalej uvidíte, že som pridal možnosť "$ 1".Pri skriptovaní bude znak dolára( $) nasledovaný číslom označovať tento očíslovaný argument skriptu, keď bol vyvolaný.Napríklad v nasledujúcom príkaze:
cp -iv Trogdor2.mp3 ringtone.mp3
Prvý argument je "Trogdor2.mp3" a druhý argument je "ringtone.mp3".
Pri pohľade späť na náš skript môžeme vidieť, že odkazujeme na dva argumenty:
To znamená, že keď spúšťame skript, budeme musieť poskytnúť dva argumenty, aby skript správne fungoval. Prvý argument, $ 1, je súbor, ktorý sa skopíruje a je nahradený prvým argumentom príkazu "cp -iv".
Druhý argument, $ 2, bude slúžiť ako výstupný súbor pre ten istý príkaz. Ale môžete tiež vidieť, že je to iné.Pridali sme obdobie a odkazovali sme na premennú "date_formatted" vyššie. Zvedavý, čo to robí?
Tu je to, čo sa stane pri spustení skriptu:
Môžete vidieť, že výstupný súbor je uvedený ako čokoľvek, čo som zadal za $ 2, po ktorom nasleduje perióda, potom výstup príkazu dátum! Má zmysel, že?
Teraz, keď spustím príkaz datecp, spustí tento skript a dovolí mi skopírovať akýkoľvek súbor na nové miesto a automaticky pridá dátum a čas do konca názvu súboru. Užitočné pre archiváciu!
Shell skriptovanie je v centre vášho operačného systému pracovať pre vás. Nemusíte sa naučiť nový programovací jazyk, aby sa to stalo. Skúste skriptovať s niektorými základnými príkazmi doma a začnite premýšľať o tom, na čo môžete použiť.
Skriptujete? Máte nejaké rady pre nováčikov? Zdieľajte svoje myšlienky v komentároch! V tejto sérii príde viac!