Linux parancsok és shell készségek
sed: Streamek szerkesztése szerkesztő megnyitása nélkül
A sed oldalra szerkeszt: egész szövegfolyamok haladnak át rajta, átalakulva jönnek ki, és nem nyílik meg szerkesztő. A hírneve az -i-ből származik, amely az egysoros helyettesítést kötegelt műveletté alakítja több ezer fájlon keresztül, valamint az adminisztrátorok katasztrófatörténeteiből származik, akik biztonsági utótag nélkül futtatták. A biztonságos munkafolyamat soha nem változik: futtassa láthatóan a helyettesítést, erősítse meg a kimenetet, majd adja hozzá az -i-t egy utótaggal, és tartsa meg a kilépési kódot.
Kulcspontok
- Előnézet a véglegesítés előtt: a sed -n '10,20p' fájl egy sortartományt mutat, és ugyanaz az -n plusz p kombináció csak azokat a sorokat nyomtatja ki, amelyek megfelelnek egy reguláris kifejezésnek vagy címnek.
- Helyettesítsd a jelzőket, amelyek azt teszik, amit gondolsz: s/old/new/g minden egyezésnél, egy szám, például 2g, csak a másodiknál, és -E a kiterjesztett reguláris kifejezéseknél, ahol nincs hátra perjel.
- A helyben végzett szerkesztések utótagot kapnak, kivétel nélkül: a sed -i.bak 's/http:/https:/g' alkalmazás minden módosítás mellett azonos nevű biztonsági másolatot készít; ez az utótag több telepítést mentett meg, mint bármelyik szerkesztő visszavonási előzménye.
- A határolók ingyenesek: az s|/var/www|/srv/app|g (vagy az s#...#g) elkerüli a perjelekkel elkerülhető harcokat, ha a mintája tele van ösvényekkel.
- -i nem atomi: egy összeomlás vagy egy rossz regex mid-batch félig újraírt fájlokat hagyott hátra, így a tömeges feladatok másolatok vagy git-tracked fák ellen futnak, nem pedig az egyetlen másolat.
- A GNU és a BSD sed nem ért egyet az -i kérdésben: A BSD megköveteli az utótagot a szkript előtt (a sed -i '' macOS-en működik, nem Linux szintaxis), ami még egy oka annak, hogy a hordozhatósági szkriptek teljesen elkerülik az -i-t.
- A Törlés és az elkülönítés becsületes igék: a 'd' eltávolítja a megfelelő sorokat (a sed '/^#/d' kivonja a megjegyzéseket), a -n pedig egy tartománnyal elkülönít egy szakaszt; mindkettő jobban olvasható, mint az okos helyettesítések.
- Bármi, ami egysoros szerkesztésen, szó szerinti többsoros blokkon vagy állapottartó összekapcsoláson múlt, az awk-ba vagy valódi szkriptbe tartozik; programozói munkára kényszerítve a sed-et, így születnek olvashatatlan egysorosok.
Terepi jegyzet
Az első, .bak utótag nélküli sed -i-m közvetlenül a délutáni forgalomcsúcs előtt elütött egy termelési nginx konfigurációt. Azóta minden helyben végzett szerkesztés tartalmaz egy tartalék utótagot, és elolvastam a szárazon futás kimenetét, mielőtt az -i a parancs közelébe kerülne.
Gyakori kérdések
Hogyan szerkeszthetem csak azokat a sorokat, amelyek valami mással egyeznek?
Címezze meg őket: a sed '/cache/s/true/false/' csak a gyorsítótár soraiban vált igazra hamisra, és a '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g hatókör blokkokra szerkeszti a tartományokat; a cím megy először, a parancs második.
Miért nem egyezik meg a sed a Windows által szerkesztett fájl sorainak végével?
Ezek a sorok olyan kocsivissza karakterekkel végződnek, amelyekre a „$” horgonyok nem számítanak; Először törölje ki őket tr-vel, vagy normalizálja a belépéskor, és a többsoros tartalom továbbra is az awk-ba vagy a Perl-be tartozik -0777-tel.
A sed gyorsabb, mint az awk az egyszerű cserékhez?
Marginálisan és irrelevánsan; mindkettő ezredmásodperc alatt fejeződik be a konfigurációs méretű fájlokon. Az olvashatóság alapján válassz, mert egy kollégának hat hónap alatt kell kibontania az egysorost.
Beszúrhatok egész konfigurációs blokkokat sed-el?
Igen: az „a” után fűződik, az „i” beszúrja a sort, a „c” pedig a sort helyettesíti, de a beszúrt szöveg maradjon egyszerű és egycélú; A valódi blokkok egy sablonfájlhoz vagy egy megfelelő kiépítési lépéshez tartoznak.
Hogyan segít a Kinetikatech a linux parancsok és shell készségek területén
Őszintén szólva, a legtöbb csapat azután keres meg minket, hogy előbb maga próbálkozott: Azok a parancsok és szkriptelési szokások, amelyek eldöntik, hogy a rendszergazda üzemeltet-e egy kiszolgálót, vagy küzd ellene: keressen, alakítson, vigyen át és felügyeljen szöveget és folyamatokat a minden alaptelepítésben megtalálható eszközökkel. A Linux-szerverbiztonság és Szerveradminisztráció szolgáltatásunk épp azért van, hogy ne az éles rendszeren ismerkedj meg a linux parancsok és shell készségek területével; mi vállaljuk az üzembe helyezést, a felügyeletet és a hajnali három órai meglepetéseket.