Algaja juhend Shelli skriptimise kohta
Terminit "shell scripting" nimetatakse sageli Linuxi foorumites, kuid paljud kasutajad ei tunne seda. Selle lihtsa ja võimsa programmeerimismeetodi õppimine aitab teil säästa aega, õppida käsurealt paremini ja kustutada tüütuid failihaldusülesandeid.
Mis on Shelli skriptimine?
Linuxi kasutajaks olemine tähendab, et mängid käsurealt. Nagu see või mitte, on vaid mõned asjad, mida selle liidese kaudu palju lihtsamalt teha saab kui klõpsates ja klõpsates. Mida rohkem kasutate ja õppisite käsurida, seda rohkem näete selle potentsiaali. Noh, käsurida ise on programm: kest. Enamik Linuxi distros'e kasutavad täna Bashit ja see on see, mida sa tegelikult sisestad.
Nüüd võivad mõned teist, kes kasutasid Windowsi enne Linuxi kasutamist, mäletada pakettfaile. Need olid väikesed tekstifailid, mida saab täita käskudega ja Windows käivitaks need omakorda. See oli tark ja puhas viis mõned asjad teha, nagu näiteks mängida oma keskkooli arvutiklassis, kui te ei suutnud avada süsteemi kaustu või luua otseteid. Windowsi pakettfailid on kasulikud, kuid need on odavad skriptide imitatsioonid.
Shelli skriptid võimaldavad programmeerida ahelate käske ja lasta süsteemil neid skriptitud sündmustena täita, nagu partiifaile. Need võimaldavad ka palju rohkem kasulikke funktsioone, nagu näiteks käskude asendamine. Võite kasutada käsku nagu kuupäev ja kasutada selle väljundit failide nimetamise skeemi osana. Varundamist saab automatiseerida ja iga kopeeritud fail võib selle kuupäeva lõppu lisada selle nime lõppu. Skriptid ei ole ainult käskude sissetungid. Nad on omaette programmid. Skriptimine võimaldab teil kasutada programmeerimisfunktsioone - näiteks "silmuste", kui / siis / muu avaldusi jne - otse oma operatsioonisüsteemi liideses. Ja te ei pea õppima teist keelt, sest sa kasutad seda, mida te juba teate: käsurida.
See on tõesti skriptimise jõud, ma arvan. Sa saad programmeerida juba teadaolevate käskudega, õppides enamiku suuremate programmeerimiskeeltega klambreid. Kas vajate midagi korduvat ja tüütu? Skript seda! Kas vajate otsetee tõeliselt keerulise käsu jaoks? Skript seda! Tahad ehitada midagi lihtsat ja kasutatavat käsurealiidest? Skriptige see!
Enne alustamist
Enne kui alustame oma skriptide seeriat, katkem mõned põhiandmed. Me kasutame bash shellit, mida enamik Linuxi distributsioone kasutab sisuliselt. Bash on saadaval ka Mac OS kasutajatele ja Cygwinile ka Windowsis. Kuna see on nii universaalne, peaksite saama skripti sõltumata teie platvormist. Lisaks sellele võivad skriptid töötada mitmel platvormil, kui vaja on kõiki viitavaid viiteid, kui nõutud viited on olemas.
Skriptimine võib hõlpsasti kasutada „administraatori“ või „ülikasutaja” õigusi, seega on kõige parem testida skripte enne nende töötamist. Kasutage ka tervet mõistust, näiteks veenduge, et teil on varukoopia failidest, mida skript on käivitamas. Samuti on tõesti oluline kasutada õigeid valikuid, nagu -i rm käsu jaoks, nii et teie suhtlemine oleks vajalik. See võib takistada mõningaid ebameeldivaid vigu. Sellisena lugege läbi skriptid, mida laadite alla, ja olge oma andmetega ettevaatlik, kui asjad lähevad valesti.
Skriptid on nende põhiosas vaid lihttekstifailid. Nende kirjutamiseks võite kasutada mis tahes tekstiredaktorit: gedit, emacs, vim, nano ... See nimekiri jätkub. Salvestage see lihtsalt lihttekstina, mitte rikas tekstina või Wordi dokumendina. Kuna ma armastan seda lihtsust, mida nano pakub, kasutan seda.
Skripti õigused ja nimed
Skriptid täidetakse sarnaste programmidena ja selleks, et see juhtuks, peavad neil olema õiged õigused. Te saate skripte käivitada järgmise käsu abil:
chmod + x ~ / somecrazyfolder / script1
See võimaldab kellelgi käivitada selle konkreetse skripti. Kui soovite selle kasutamist ainult oma kasutajale piirata, saate seda kasutada:
chmod u + x ~ / somecrazyfolder / script1
Selle skripti käivitamiseks peate cd õigesse kataloogi ja käivitama skripti selliselt:
cd ~ / somecrazyfolder
./ script1
Asjade mugavamaks muutmiseks saate skripte oma kodukataloogi kausta „bin” panna:
~ / bin
Paljudes kaasaegsetes piirkondades pole seda kausta enam vaikimisi loodud, kuid saate selle luua. Tavaliselt salvestatakse need failid, mis kuuluvad teie kasutajale ja mitte teistele kasutajatele. Skriptide siinse asetamisega saate lihtsalt neid käivitada, kirjutades nende nime, nagu teisedki käskud, selle asemel, et cd ümber ja kasutada eesliidet ./..
Enne skripti nime saamist peaksite kontrollima, kas teil on installitud programm, mis kasutab seda nime:
mis [käsk]
Paljud inimesed nimetavad oma varajast skripti “testiks” ja kui nad püüavad seda käsurealt käivitada, ei juhtu midagi. Seda seetõttu, et see on vastuolus testikäsuga, mis ei tee midagi ilma argumentideta. Veenduge alati, et teie skripti nimed ei oleks vastuolus käskudega, vastasel juhul võite leida endale asju, mida te ei kavatse teha!
Skriptimissuunised
Nagu ma varem mainisin, on iga skriptifail põhiliselt tavaline tekst. See ei tähenda, et sa saad kirjutada, mida sa tahad, kõik, kes on nilli-nilly. Kui tekstifaili püütakse teostada, analüüsivad need koopiad, et saada vihjeid selle kohta, kas nad on skriptid või mitte, ning kuidas kõike korralikult käsitseda. Seetõttu on mõned juhised, mida pead teadma.
- Iga skript peaks olema koos # # / bin / bash
- Iga uus rida on uus käsk
- Kommentaaride read algavad numbriga #
- Käsud on ümbritsetud ()
Hash-Bang Hack
Kui kesta parseks tekstifaili kaudu, on kõige otsesem viis faili skriptiks identifitseerimiseks, tehes esimese rea:
#! / bin / bash
Kui kasutate teist kesta, asenda siin oma tee. Kommentaarijooned algavad hashidega (#), kuid bangi (!) Ja shelliraja lisamine pärast seda, kui see on omamoodi häkk, mis möödub sellest kommentaarireeglist ja sunnib skripti täitma koos selle koorega, mida see rida näitab.
Uus rida = uus käsk
Iga uut rida tuleks lugeda uueks käsuks või suurema süsteemi komponendiks. Näiteks kui / siis / other avaldused võtavad üle mitu rida, kuid selle süsteemi iga komponent on uues reas. Ära lase käsku järgmisele reale üle voolata, sest see võib kärpida eelmise käsu ja anda teile järgmise rea. Kui teie tekstiredaktor seda teeb, peaksite tekstipakendamise välja lülitama, et see oleks turvalisel poolel. Saate välja lülitada tekstipakendamise nano bitiga, mis tabab ALT + L.
Kommentaar Sageli # -i puhul
Kui käivitate joonega #, jäetakse rida tähelepanuta. See muudab selle kommentaarireaks, kus saab ennast meelde tuletada eelmise käsu väljundist või sellest, mida järgmine käsk teeb. Jällegi lülitage teksti murdmine välja või katkestage kommentaar mitmesse rida, mis kõik algavad räsiga. Paljude kommentaaride kasutamine on hea tava, sest see võimaldab teil ja teistel inimestel oma skripte kergemini muuta. Ainus erand on eespool mainitud Hash-Bang hack, nii et ärge järgige #! ;-)
Käsud on ümbritsetud parentheses
Vanematel päevadel tehti käskude asendused ühe märgiga (', jagab ~ klahvi). Me ei puuduta seda veel, kuid kuna enamik inimesi väljub ja uurib pärast põhitõdede õppimist, on ilmselt hea mõte mainida, et selle asemel peaksite kasutama sulgusid. See on peamiselt sellepärast, et kui pesad käsud teiste käskude sisse - sulgud toimivad paremini.
Sinu esimene skript
Alustame lihtsa skriptiga, mis võimaldab faile kopeerida ja lisada failinime lõppu kuupäevad. Kutsume seda "datecpiks". Esmalt kontrollime, kas see nimi on midagi vastuolus:
Näete, et selle käsu väljundit pole, nii et me kõik oleme selle nime kasutanud.
Looge ~ / bin kaustas tühi fail:
puudutage ~ / bin / datecp
Ja muutkem nüüd luba, enne kui me unustame:
Alustame siis oma skripti ehitamist. Avage see fail oma tekstiredaktoris. Nagu ma ütlesin, mulle meeldib nano lihtsus.
nano ~ / bin / datecp
Ja lähme edasi ja paneme eeltingimusesse esimese rea ning kommenteerige seda, mida see skript teeb.
Edasi kuulutame muutuja. Kui olete kunagi algebrat kasutanud, siis te teate, mis see on. Muutuja võimaldab meil salvestada teavet ja teha sellega asju. Muutujad võivad mujal viidates „laieneda”. See tähendab, et selle asemel, et kuvada oma nime, kuvatakse nende salvestatud sisu. Hiljem saate sama muutujale öelda, et see salvestab erinevat teavet ja mis tahes pärast seda toimuvat käsku kasutab uut teavet. See on tõesti väljamõeldud kohahoidja.
Mida me muutume? Noh, salvestage kuupäev ja kellaaeg! Selleks kutsume üles kuupäeva käsu.
Vaadake allolevat pilti, kuidas ehitada kuupäeva käsu väljundit:
Te näete, et erinevate muutujate lisamisega, mis algavad% -ga, saate muuta käsu väljundit, mida soovite. Lisateabe saamiseks vaadake kuupäeva käsu käsitsi lehekülge.
Kasutame seda kuupäeva käsu viimast iteratsiooni, “kuupäev +% m_% d_% y-% H.% M.% S” ja kasutage seda meie skriptis.
Kui me selle skripti kohe salvestaksime, võiksime seda käivitada ja see annaks meile sellist kuupäeva käsu nagu me oodata:
Aga teeme midagi muud. Anname muutuja nime, nagu see käsk on date_formatted. Selle õige süntaks on järgmine:
muutuja = $ (käsk -optsioonid)
Ja meie jaoks ehitaksime seda nii:
date_formatted = $ (kuupäev +% m_% d_% y-% H.% M.% S)
Seda me nimetame käsu asenduseks. Me ütleme põhiliselt bashile, et kui muutuja “date_formatted” ilmub, käivitab sulgude sees käsu. Seejärel tuleb muutuja nime, “date_formatted” asemel näidata, millised väljundid annavad..
Siin on näite skript ja selle väljund:
Pange tähele, et väljundis on kaks tühikut. Kuvatakse kajasignaali jutumärkides olev ruum ja muutuja ees olev ruum. Ärge kasutage ruume, kui te ei soovi, et need ilmuksid. Pange tähele ka seda, et ilma selle lisatud "kaja" reaga ei anna skript mingit väljundit.
Lähme tagasi meie skripti juurde. Järgmisena lisame käsu kopeerimisosasse.
cp -iv $ 1 $ 2. $ date_formatted
See käivitab kopeerimiskäsku -i ja -v valikuga. Esimene palub teil enne faili ülekirjutamist kontrollida ja viimane näitab, mis on käsureal.
Järgmisena näete, et olen lisanud „$ 1” valiku. Skriptimisel tähistab dollari märk ($), millele järgneb number, skripti nummerdatud argumenti, kui seda kutsuti. Näiteks järgmises käsus:
cp -iv Trogdor2.mp3 ringtone.mp3
Esimene argument on “Trogdor2.mp3” ja teine argument „ringtone.mp3”.
Vaadates tagasi meie skripti, näeme, et me viitame kahele argumendile:
See tähendab, et skripti käivitamisel peame skripti õigeks töötamiseks esitama kaks argumenti. Esimene argument, $ 1, on kopeeritav fail, mis on asendatud käsuga “cp -iv” esimene argument.
Teine argument, $ 2, toimib sama käsu väljundfailina. Kuid näete ka, et see on erinev. Oleme lisanud perioodi ja oleme viinud "date_formatted" muutuja ülalt. Uudishimulik, mida see teeb?
Järgneb see, mis juhtub, kui skript käivitatakse:
Näete, et väljundfail on loetletud kui $ 2 jaoks sisestatud fail, millele järgneb periood, seejärel kuupäeva käsu väljund! Mõistab, õigus?
Nüüd, kui käivitan datecp käsu, käivitab see selle skripti ja lubab mul kopeerida mis tahes faili uude asukohta ning lisada automaatselt kuupäeva ja kellaaja faili nime lõppu. Kasulik arhiveerimiseks!
Shelli skriptimine on teie operatsioonisüsteemi toimimise keskmes. Samuti ei pea te õppima uut programmeerimiskeelt, et see juhtuks. Proovige skriptimist mõningate põhiliste käskudega kodus ja hakata mõtlema sellele, mida saate seda kasutada.
Kas sa skriptid? Kas teil on nõu algajaid? Jagage oma mõtteid kommentaarides! Selles seerias on veel palju!