Mi a Shell Scripting?
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.
Néhányan közületek, akik a Windows használatát használta a Linux használata előtt, emlékezhetnek a kötegelt 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.
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 elkezded
Mielőtt elkezdjü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.
A parancsfájlok egyszerűen használhatják az "adminisztrátor" vagy a "felettes felhasználó" jogosultságait, ezért a legjobb, ha tesztelni szeretné a szkripteket, mielőtt üzembe helyezné őket. 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 magukban a szkriptek egyszerű szöveges fájlok. Használhatsz bármilyen szövegszerkesztőt, hogy írni: 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.
Script engedélyek és nevek
A parancsfájlok végrehajthatók, mint a programok, és ahhoz, hogy ez megtörténjen, meg kell adniuk a megfelelő engedélyeket. A parancsfájlokat végrehajthatóvá teheti a következő parancs futtatásával:
chmod +x ~/somecrazyfolder/script1
Ez lehetővé teszi, hogy bárki futtassa az adott szkriptet. Ha korlátozni szeretné annak használatát csak a felhasználó számára, használhatja ezt helyett:
chmod u+x ~/somecrazyfolder/script1
Ennek a szkriptnek a futtatásához cd-nek kell a megfelelő könyvtárba, majd futtatni a parancsfájlt, mint ez:
cd ~/somecrazyfolder
./script1
A dolgok kényelmesebbé tétele érdekében szkripteket helyezhet el egy "bin" mappába a saját könyvtárában:
~/bin
Sok modern tárhelyen ez a mappa alapértelmezés szerint már nem jön létre, de létrehozhat. 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 a többi parancs használatával futtathatja őket a nevük beírásával, ahelyett, hogy cd-t kellene használniuk a "./" előtag használatával.
Mielőtt elneveznénk egy szkriptet, ellenőrizzük a következő parancsot, hogy van-e telepítve egy program, amely ezt a nevet használja:
which [command]
Sokan nevezik korai szkriptjeiket "tesztnek", és amikor megpróbálják futtatni 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
- Minden szkriptnek a "#! / Bin / bash"
- Minden új sor egy új parancs
- A megjegyzések sorai #
- A parancsokat ()
A Hash-Bang Hack
Ha egy shell egy szövegfájlban elemzi, akkor a fájl közvetlen szkriptként való azonosításának legközvetlenebb módja az első sor:
#!/bin/bash
Ha egy másik héjat használ, cserélje ki itt az útvonalat. 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 sort egy új parancsnak vagy egy nagyobb rendszer egyik összetevőjének kell tekinteni. Ha a / then / else utasítások például 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.
Hozzászólás Gyakran a # -al
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.;-)
A parancsok körül vannak zárva
Régebbi napokban a parancscserék egy-egy jelöléssel (`, osztják a ~ kulcsot). Nem fogunk ezzel foglalkozni, de ahogy a legtöbb ember elindul, és feltárja az alapokat megtanulva, valószínűleg 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ő forgatókönyve
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 összeegyeztet-e valamivel:
Hozzunk létre egy üres fájlt a ~ / bin mappában:
touch ~/bin/datecp
nano ~/bin/datecp
És menjünk előre, és tegyük fel az előfeltétel első sorát, és egy megjegyzést a scripthez.
Mit fogunk ki a változóba? Hát, tároljuk a dátumot és az időt! Ehhez felhívjuk a dátum parancsot.
Nézze meg az alábbi képernyőképet a dátum parancs kimenetének elkészítéséhez:
Használjuk a dátum parancsnak a "dátum +% m_% d_% y-% H.% M.% S" utolsó iterációját, és ezt használjuk a szkriptünkben.
variable=$(command –options arguments)
És számunkra, így építenénk:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Íme egy példa szkript és kimenete:
Térjünk vissza a forgatókönyvünkhöz. Vessük be a parancs másolásakor.
cp –iv $1 $2.$date_formatted
Ezután látja, 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, a "Tuzdor2.mp3" és a második argumentum, "Äringring.mp3".
Visszatekintve a forgatókönyvünkhöz, láthatjuk, hogy két érvet hivatkozunk:
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 "felülnézeti" változót a fenti felirattal láttuk el. Érdekes, hogy mi ez?
Itt van, mi történik, amikor a szkript fut:
Most, amikor elindítom a datecp parancsot, akkor futtatni fogom ezt a szkriptet, és megengedem, 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 szkriptje a legfontosabb, hogy az operációs rendszert az Ön számára működjön. 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öbbet kell eljönni ebben a sorozatban!