NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
HU

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. -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.
  6. 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.
  7. 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.
  8. 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.

Beszéljen egy mérnökkel

Probléma a szerverrel? Feltörték a webhelyet? Lassú a betöltés?

Kritikus problémák megoldása 30 percen belül — a hét minden napján, éjjel-nappal.

Sürgős támogatás kérése support@kinetikatech.com