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

Linuxové príkazy

sed: Úprava streamov bez otvorenia editora

sed sa upravuje bokom: prechádzajú ním celé prúdy textu, vychádzajú transformované a neotvorí sa žiadny editor. Jeho reputácia pochádza z -i, ktorý premení jednoriadkovú substitúciu na dávkovú operáciu s tisíckami súborov, a z katastrofických príbehov správcov, ktorí to spustili bez záložnej prípony. Bezpečný pracovný postup sa nikdy nemení: spustite nahradenie viditeľné, potvrďte výstup, potom pridajte -i s príponou a ponechajte si výstupný kód.

Kľúčové body

  1. Ukážka pred potvrdením: súbor sed -n '10,20p' zobrazuje rozsah riadkov a rovnaká kombinácia -n plus p vytlačí iba riadky, ktoré zodpovedajú regulárnemu výrazu alebo adrese.
  2. Nahraďte príznakmi, ktoré zodpovedajú tomu, čo máte na mysli: s/starý/nový/g pre všetky zhody, číslo ako 2g len pre sekundu a -E pre rozšírený regulárny výraz bez strán so spätnou lomkou.
  3. Úpravy na mieste majú príponu, bez výnimiek: aplikácia sed -i.bak 's/http:/https:/g' uchováva pri každej zmene zálohu s rovnakým názvom; táto prípona zachránila viac nasadení ako história vrátenia akéhokoľvek editora.
  4. Oddeľovače sú bezplatné: s|/var/www|/srv/app|g (alebo s#...#g) sa vyhne bojom, pri ktorých sa vyhýba lomítkom, keď je váš vzor plný ciest.
  5. -i nie je atomické: zlyhanie alebo zlý regex v polovici dávky raz zanechali napoly prepísané súbory, takže hromadné úlohy bežia proti kópiám alebo stromom sledovaným git, nikdy nie jedinej kópii.
  6. GNU a BSD sed nesúhlasia s -i: BSD vyžaduje príponu pred skriptom (sed -i '' funguje na macOS, nie je to Linuxová syntax), čo je ďalší dôvod, prečo sa prenosné skripty úplne vyhýbajú -i.
  7. Odstrániť a izolovať sú čestné slovesá: 'd' odstraňuje zhodné riadky (sed '/^#/d' odstraňuje komentáre) a -n s rozsahom izoluje sekciu; obe sa čítajú lepšie ako šikovné zámeny.
  8. Čokoľvek po úpravách v jednom riadku, doslovných viacriadkových blokoch alebo stavových spojeniach patrí do awk alebo skutočného skriptu; prinútiť sed robiť programátorskú prácu je spôsob, akým sa rodia nečitateľné jednoduché riadky.

Poznámka z teréna

Môj prvý sed -i bez prípony .bak zasiahol produkčnú konfiguráciu nginx tesne pred popoludňajšou špičkou návštevnosti. Odvtedy každá úprava na mieste nesie záložnú príponu a ja čítam výstup suchého chodu skôr, ako sa -i priblíži k príkazu.

Často kladené otázky

Ako upravím iba riadky, ktoré zodpovedajú niečomu inému?

Oslovte ich: sed '/cache/s/true/false/' preklopí true na false iba na riadkoch vyrovnávacej pamäte a rozsahy ako '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' rozsah úpravy blokov; adresa je na prvom mieste, príkaz druhý.

Prečo sa sed nezhoduje s koncami riadkov v súbore upravenom systémom Windows?

Tieto riadky končia znakmi pre návrat vozíka, ktoré kotvy '$' neočakávajú; najprv ich odstráňte tr alebo normalizujte na ceste dovnútra a viacriadkový obsah stále patrí do awk alebo Perl s -0777.

Je sed rýchlejší ako awk pri jednoduchých výmenách?

Okrajovo a nepodstatne; oba skončia v milisekúndách na súboroch s veľkosťou config. Vyberajte podľa čitateľnosti, pretože kolega musí vašu jednodielku rozbaliť za šesť mesiacov.

Môžem vložiť celé konfiguračné bloky so sed?

Áno: 'a' sa pridáva za, 'i' vkladá pred a 'c' nahrádza riadok, ale vložený text musí byť jednoduchý a jednoúčelový; skutočné bloky patria do súboru šablóny alebo do správneho kroku poskytovania.

Ako Kinetikatech pomáha s linuxové príkazy

Uprimne, väčšina tímov k nám prichádza až potom, čo skúšalo veci najskôr samo: Príkazy a skriptovacie návyky, ktoré rozhodujú o tom, či správca prevádzkuje server alebo s ním bojuje: vyhľadávajte, transformujte, prenášajte a dohliadajte na text a procesy pomocou nástrojov, ktoré sú súčasťou každej základnej inštalácie. Naša služba Bezpečnosť Linuxových serverov a Správa serverov existuje, aby ste sa s linuxové príkazy nepoznávali na vlastnej koži; my sa postaráme o nastavenie, dohľad a prekvapenia o tri ráno.

Pozrite sa s inžinierom

Problém so serverom? Napadený web? Pomalé načítanie?

Kritické problémy vyriešime v 30 minútach — nonstop, 7 dní v týždni.

Požiadať o núdzovú podporu support@kinetikatech.com