Ukazi in spretnosti lupine Linux
sed: Gre za urejanje tokov brez odpiranja urejevalnika
sed ureja postrani: celi tokovi besedila gredo skozi njega, pridejo ven preoblikovani in noben urejevalnik se ne odpre. Njegov sloves izvira iz -i, ki enovrstično zamenjavo spremeni v paketno operacijo na tisoče datotek, in iz katastrofalnih zgodb o skrbnikih, ki so ga izvajali brez rezervne pripone. Varen potek dela se nikoli ne spremeni: zaženite zamenjavo vidno, potrdite izhod, nato dodajte -i s pripono in obdržite izhodno kodo.
Ključne točke
- Predogled pred potrditvijo: datoteka sed -n '10,20p' prikazuje obseg vrstic, ista kombinacija -n plus p pa natisne samo vrstice, ki se ujemajo z regularnim izrazom ali naslovom.
- Nadomestite z zastavicami, ki naredijo to, kar mislite: s/staro/novo/g za vsa ujemanja, številko, kot je 2g, samo za drugo in -E za razširjeni regularni izraz brez strani s poševnico nazaj.
- Urejanja na mestu dobijo pripono, brez izjem: aplikacija sed -i.bak 's/http:/https:/g' ob vsaki spremembi shrani varnostno kopijo z istim imenom; ta pripona je rešila več uvedb kot zgodovina razveljavitev katerega koli urednika.
- Razmejevalniki so brezplačni: s|/var/www|/srv/app|g (ali s#...#g) se izogne prepirom zaradi poševnice, ko je vaš vzorec poln poti.
- -i ni atomičen: zrušitev ali slab regularni izraz v sredini paketa je nekoč pustil za seboj napol prepisane datoteke, tako da se množična opravila izvajajo proti kopijam ali drevesom, ki jih sledi git, nikoli edini kopiji.
- GNU in BSD sed se ne strinjata glede -i: BSD zahteva pripono pred skriptom (sed -i '' deluje v macOS, ni sintaksa Linuxa), kar je še en razlog več, da se skripti za prenosljivost popolnoma izogibajo -i.
- Izbriši in izoliraj sta poštena glagola: 'd' odstrani ujemajoče se vrstice (sed '/^#/d' odstrani komentarje), -n z obsegom pa izolira razdelek; oba se bereta bolje kot pametne zamenjave.
- Karkoli mimo enovrstičnih urejanj, dobesednih večvrstičnih blokov ali združevanj s stanjem spada v awk ali pravi skript; prisiljevanje seda, da opravlja programersko delo, je način, kako se rodijo neberljive enovrstične besede.
Terenska beležka
Moj prvi sed -i brez pripone .bak je zadel produkcijsko konfiguracijo nginx tik pred popoldansko prometno konico. Od takrat vsako urejanje na mestu nosi rezervno pripono in preberem izpis suhega zagona, še preden se -i približa ukazu.
Pogosta vprašanja
Kako uredim samo vrstice, ki se ujemajo z nečim drugim?
Odpravite jih: sed '/cache/s/true/false/' obrne true v false samo v vrsticah predpomnilnika in obsege, kot je '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' urejanje obsega blokov; naslov je prvi, ukaz pa drugi.
Zakaj se sed ne ujema s konci vrstic v datoteki, ki jo ureja Windows?
Te vrstice se končajo z znaki za vrnitev na začetek, ki jih sidra '$' ne pričakujejo; najprej jih odstranite s tr ali normalizirajte na poti in večvrstična vsebina še vedno sodi v awk ali Perl z -0777.
Je sed hitrejši od awk za preproste zamenjave?
Obrobno in nepomembno; oba se končata v milisekundah na datotekah velikosti konfiguracije. Izbirajte po berljivosti, saj vam mora kolega v šestih mesecih razvozlati enovrstičnico.
Ali lahko s sed vstavim cele konfiguracijske bloke?
Da: 'a' doda za, 'i' vstavi pred in 'c' nadomesti vrstico, vendar naj bo vstavljeno besedilo preprosto in enonamensko; dejanski bloki spadajo v datoteko predloge ali ustrezen korak zagotavljanja.
Kako Kinetikatech pomaga s ukazi in spretnosti lupine linux
Ne morete postati eksperta za ukazi in spretnosti lupine linux: Ukazi in skriptne navade, ki odločajo, ali skrbnik upravlja strežnik ali se bori proti njemu: iskanje, preoblikovanje, prenos in nadzorovanje besedila in procesov z orodji, ki živijo v vsaki osnovni namestitvi. Nekatere za to obstaja Varnost strežnikov Linux in Upravljanje strežnikov: nastavitev, krepitev, monitoring in osebna strega dne in noči.