23Aug

A Shell Scripting Kezdõ Útmutatója: Az alapok

click fraud protection

A "shell scripting" kifejezés gyakran szerepel Linux fórumokon, de sok felhasználó nem ismeri. Az egyszerű és erőteljes programozási módszer tanulásával időt takaríthat meg, jobban megtanulhatja a parancssort és elfojthatja az unalmas fájlkezelési feladatokat.

Mi a Shell Scripting?

A Linux felhasználóként a parancssorral játszhatsz. Tetszik, akár nem, csak néhány dolog van, amit sokkal könnyebben végeznek ezen a felületen keresztül, mint rámutatva és kattintva. Minél többet használsz, és megtanulod a parancssort, annál nagyobb a potenciálja. Nos, maga a parancssor egy program: a shell. A legtöbb Linux disztribúció ma használja a Bash-et, és ez az, amire valóban beírod a parancsokat.

Most, néhányan közületek, akik a Linuxot használják a Linux használatát megelőzően, emlékezhetnek a batch fájlokra. Ezek voltak a kis szöveges fájlok, amelyeket meg lehetett tölteni parancsokkal végrehajtani, és a Windows futtatni őket viszont. Ez okos és tisztességes módja annak, hogy néhány dolgot elvégezzenek, például futtassanak játékokat a középiskolai számítógépes laborban, amikor nem tudtok megnyitni a rendszermappákat vagy parancsikonokat létrehozni. A Windowsban található kötegfájlok, bár hasznosak, a shell parancsfájlok olcsó utánzata.

instagram viewer

A Shell parancsfájlok lehetővé teszik a parancsok láncolatainak programozását, és a rendszert parancsfájlként futtatják, mint a kötegfájlok. Ezenkívül sokkal több hasznos funkciót is lehetővé tesz, például a parancs helyettesítését. Meghívhatja a parancsot, például a dátumot, és felhasználhatja a kimenetet egy fájlnevezési séma részeként. Biztonsági másolatokat automatizálhat, és minden egyes másolt fájl az aktuális dátumot a név végéhez csatolhatja. A parancsfájlok nem csak parancsok meghívása. Programok a sajátjukon. A parancsfájl segítségével programozási funkciók - például "for" hurkok, /then/ egyéb nyilatkozatok és így tovább - közvetlenül az operációs rendszer felületénél használhatók.És nem kell tanulnod egy másik nyelvet, mert már használod azt, amit már tudsz: a parancssor.

Ez valójában a szkriptek ereje, azt hiszem. Megismerkedhet a már ismert parancsokkal, miközben a legfontosabb programozási nyelvekről tanul. Kell valami ismétlődő és unalmas? Script it! Szüksége van egy parancsikonra egy igazán összetévesztett parancsra? Script it! Szeretne egy igazán könnyen használható parancssori felületet létrehozni valamire? Script it!

Mielőtt elkezdené az

-t Mielőtt megkezdjük a szkriptsorozatot, fedjük le néhány alapvető információt. A bash-héjat használjuk, amelyet a legtöbb Linux disztribúció natívan használ. A Bash Mac OS felhasználók és a Cygwin Windows rendszeren is elérhető.Mivel olyan univerzális, a platformtól függetlenül képesnek kell lennie a forgatásra. Ezenkívül, mindaddig, amíg a hivatkozott parancsok mindegyike létezik, a szkriptek több platformon is dolgozhatnak, kicsit csípés nélkül. Az

parancsfájlok könnyen használhatják az "adminisztrátori" vagy "superuser" jogosultságokat, ezért a legjobb, ha tesztelni szeretné a parancsfájlokat, mielőtt üzembe helyezné azokat. Szintén használja a józan ész, mint például arról, hogy biztonsági másolatot készít a fájlokról, amelyeken szkriptet futtatsz. Nagyon fontos, hogy a megfelelő opciókat, például az -i parancsot használjuk az rm paranccsal, hogy az interakcióra szükség van. Ez megakadályozhat néhány csúnya hibát. Mint ilyen, olvasd el a letölteni kívánt szkripteket, és vigyázz az adatokra, csak akkor, ha a dolgok rosszul mennek.

A szkriptjei egyszerű szöveges fájlok. Bármelyik szövegszerkesztővel írhatsz: gedit, emacs, vim, nano. .. Ez a lista folytatódik.Ügyeljen arra, hogy egyszerű szövegként mentse el, nem pedig gazdag szövegként vagy Word-dokumentumként. Mivel szeretem a nano által nyújtott könnyű használatot, ezt használom.

parancsfájl-engedélyek és nevek

A parancsfájlok végrehajtása hasonlóan történik, és ennek érdekében meg kell adni a megfelelő jogosultságokat. A parancsfájlokat futtathatja a következő parancs futtatásával:

chmod + x ~ /somecrazyfolder/ parancsfájl1

Ez lehetővé teszi bárki számára, hogy futtassa az adott szkriptet. Ha csak a felhasználót szeretné korlátozni, használhatja ezt helyett:

chmod u + x ~ /somecrazyfolder/ parancsfájl1

Ahhoz, hogy futtassa ezt a szkriptet, be kell írnia a CD-t a megfelelő könyvtárba, majd futtatnia kell ezt a szkriptet:

cd ~ / somecrazyfolder

. /script1

Ahhoz, hogy a dolgok sokkal kényelmesebbek legyenek, szkripteket helyezhet el egy "bin" mappába a saját könyvtárában:

~ / bin

Sok modern disztribúcióban ez a mappa alapértelmezés szerint már nem jön létre, de létrehozhatod. Ez általában olyan fájlokat tárol, amelyek a felhasználóhoz tartoznak, és nem a többi felhasználó számára. Ha itt helyezi a parancsfájlokat, akkor csak úgy írhatja le a nevüket, mint más parancsok, ahelyett, hogy cd-t kellene használniuk a "./" előtag használatával.

A script megnevezése előtt azonban a következő parancsot kell ellenőrizni, hogy van-e olyan program telepítve, amely ezt a nevet használja:

, amely [parancs]

Sokan nevezik korai szkriptjeiket "tesztnek", és amikor megpróbálnakfuttassa a parancssorban, semmi sem történik. Ez azért van, mert ellentmond a teszt parancsnak, ami semmit sem tesz érvek nélkül. Mindig győződjön meg róla, hogy a parancsfájlnevek nem ütköznek a parancsokkal, különben előfordulhat, hogy olyan dolgokat teszel, amelyeket nem szándékozik tenni!

Scripting Guidelines

Mint korábban említettem, minden parancsfájl lényegében egyszerű szöveg. Ez nem azt jelenti, hogy bármit írni tudsz, amit akarsz, bármit. Amikor egy szövegfájlt megpróbálnak végrehajtani, a héjok elemzést végeznek rajta, hogy vannak-e parancsfájlok, és hogy hogyan kell mindent kezelni. Emiatt néhány iránymutatást kell tudni.

  1. Minden scriptnek "#!/bin/ bash "
  2. Minden új sor egy új parancs
  3. A hozzászólói sorok egy #
  4. -el kezdődnek A parancsok körül()

A Hash-Bang Hack

Ha a shell egy szövegfájlon átmásolja, a legközvetlenebb módon azonosítja a fájltegy parancsfájl az első sor létrehozásával:

#!/bin/ bash

Ha egy másik héjat használ, cserélje ki az elérési útját. A megjegyzések sorai a hashokkal kezdődnek( #), de a bang( !) És a shell elérési útvonala után ez egyfajta hack, amely megkerüli ezt a megjegyzés szabályt, és kényszeríti a parancsfájlt a shell által végrehajtott parancs végrehajtására.

Új sor = Új parancs

Minden új sor új parancsnak vagy egy nagyobb rendszer elemének tekintendő.Ha például az /then/ más állítások több sorra vesznek át, de a rendszer minden egyes eleme új sorban van. Ne hagyja, hogy a parancs a következő sorba vigyázzon, mert ez megszakíthatja az előző parancsot, és hibát adhat a következő sorra. Ha a szövegszerkesztő ezt teszi, akkor a szöveges csomagolás kikapcsolása a biztonságos oldalra kell állnia. A szövegbevitelt nano bitben kikapcsolhatja, ha megnyomja az ALT + L billentyűt.

Megjegyzés Gyakran a #s

-vel Ha egy # sorral kezdődik, akkor a sort figyelmen kívül hagyja. Ez egy megjegyzéssávká alakítja, ahol emlékeztetheti magát, hogy mi volt az előző parancs kimenete, vagy amit a következő parancs fog tenni. Ismételten kapcsolja ki a szöveges csomagolást, vagy tegyen megjegyzést több olyan sorra, amelyek mindegyike hashúzással kezdődik. Rengeteg megjegyzéseket használva jó gyakorlat, hogy megtartsd, mivel lehetővé teszi, hogy Ön és más emberek egyszerűbbé tegye a szkriptjeidet. Az egyetlen kivétel a fent említett Hash-Bang hack, tehát ne kövesse #s with! S.;-)

Parancsok által körülvett zárójelek

A régebbi napokon a parancscserék egyetlen kulcsjelzéssel( `, osztozik a ~ billentyűvel) történik. Nem fogunk ezzel foglalkozni, de ahogy a legtöbb ember elindul, és feltárja az alapokat megtanulva, talán jó ötlet lenne megemlíteni, hogy helyettesítse a zárójeleket. Ez főként azért van, mert fészkeléskor - parancsokat helyeztek be más parancsokon belül - a zárójelek jobban működnek.

Az első script

Kezdjük egy egyszerű parancsfájllal, amely lehetővé teszi a fájlok másolását és dátumok hozzáadását a fájlnév végéhez. Nevezzük "datecp" -nek. Először ellenőrizzük, hogy ez a név ellentétben áll-e valamivel:

Láthatja, hogy nincs kimenete a parancsnak, ezért mindannyian arra van szükségünk, hogy ezt a nevet használjuk.

Hozzunk létre egy üres fájlt a ~ / bin mappában:

touch ~ /bin/ datecp

És változtassuk meg az engedélyt, mielőtt elfelejtenénk:

Kezdjük a script létrehozását. Nyissa meg azt a fájlt a választott szövegszerkesztőben. Mint mondtam, szeretem a nano egyszerűségét.

nano ~ /bin/ datecp

És menjünk tovább, és tegyük fel az előfeltétel első sorát, és egy megjegyzést a scripthez.

Ezután írjuk le a változót. Ha valaha is vettél algebrát, akkor valószínűleg tudod, mi az. Egy változó lehetővé teszi számunkra, hogy információkat tároljunk és dolgozzunk vele. A változók "kiterjeszthetők", ha máshol hivatkoznak. Azaz, ahelyett, hogy megjelenítenék a nevüket, megjelenítik tárolt tartalmukat. Később ugyanazt a változót meg tudja adni különböző információk tárolásához, és az ezt követő utasítások az új információkat használják. Ez egy igazán díszes helyőrző.

Mit fogunk ki a változó?Hát, tároljuk a dátumot és az időt! Ehhez felhívjuk a dátum parancsot.

Tekintse meg az alábbi képernyőképet a dátum parancs kimenetének kiépítéséhez:

Láthatja, hogy a% -al kezdődő változók hozzáadásával megváltoztathatja a parancs kimenetét a kívánt értékre. További információkért tekintse meg a dátumparancs kézi oldalát.

Használjuk a dátum parancs utáni utolsó iterációt, a "date +% m_% d_% y-% H.% M.% S" értéket, és használja ezt a szkriptünkben.

Ha most meg akarjuk menteni ezt a szkriptet, akkor futtathatnánk, és megadná nekünk a dátum parancs kimenetét, mint várnánk:

De csináljunk valami mást. Adjuk meg a változó nevét, mint a date_formatted erre a parancsra. A megfelelő szintaxis a következő:

változó = $( parancs -options arguments)

És számunkra, mi így építhetnénk:

date_formatted = $( dátum +% m_% d_% y-% H.%M.% S)

Ezt nevezzük parancs helyettesítésnek. Nyilvánvalóan azt mondjuk, hogy amikor a "date_formatted" változó megjelenik, akkor a parancsot a zárójelben belül futtathatjuk. Ezután a parancsok által kiadott kimeneteket ki kell mutatni a változó neve helyett, "date_formatted".

Itt van egy példa script és annak kimenete:

Megjegyezzük, hogy a kimeneten két szóköz van. Megjelenik az echo parancs és a változó előtt álló tér idézőjelek közötti tér. Ne használjon szóközt, ha nem akarja, hogy megjelenjenek. Ezenkívül vegye figyelembe, hogy ehhez hozzáadott "echo" vonal nélkül a forgatókönyv semmilyen kimenetet nem ad.

Menjünk vissza a forgatókönyvünkhöz. Vessük be a parancs másolásakor.

cp -iv $ 1 $ 2. $ date_formatted

A másolás parancsot a -i és -v opciókkal hívja meg. Az előbbi meg fogja kérni az ellenőrzést, mielőtt felülírná a fájlt, és az utóbbi fogja megjeleníteni, mi van a parancssorban.

Ezután láthatod, hogy hozzáadtam a "$ 1" opciót. A szkriptelés során egy dollárjel( $), amelyet egy szám követ, a forgatókönyv számozott argumentumát jelöli. Például a következő parancsban:

cp -iv Trogdor2.mp3 ringtone.mp3

Az első argumentum "Trogdor2.mp3" és a második argumentum "ringtone.mp3".

Tekintettel a forgatókönyvünkre, láthatjuk, hogy két argumentumot említünk:

Ez azt jelenti, hogy a parancsfájl futtatásakor két argumentumot kell biztosítanunk a szkript megfelelő futtatásához. Az első argumentum, $ 1, a másolandó fájl, és a "cp -iv" parancs első argumentuma.

A második argumentum, $ 2, ugyanazon parancs kimeneti fájljaként fog működni. De azt is láthatja, hogy más. Hozzáadtunk egy időszakot, és a "date_formatted" változót fent említettük.Érdekes, hogy mi ez?

Íme, mi történik a script futtatásakor:

Láthatja, hogy a kimeneti fájl szerepel a 2 dollárba beírt értékek között, ezt követi egy idő, majd a dátum parancs kimenete!Értelme van, igaz?

Most, amikor futtatom a datecp parancsot, futtatja ezt a szkriptet, és lehetővé teszi számomra, hogy minden fájlt átmásoljon egy új helyre, és automatikusan hozzáadja a dátumot és az időt a fájlnév végéhez. Hasznos archiválásra!

A Shell szkriptek középpontjában áll, hogy az operációs rendszered dolgozik az Ön számára. Nem kell új programozási nyelvet tanulnod, hogy megtörténjen. Próbáljon parancsfájlokat készíteni néhány alapvető parancs segítségével otthon, és elgondolkodjon azon, hogy mit tudsz használni.

Szkriptet csinálsz? Van tanács az újoncoknak? Ossza meg gondolatait a megjegyzésekben! Még több van a sorozatban!