Linux-kommandoer og Shell-færdigheder
grep: Søger Linux som en professionel
grep overlever hver opdatering af værktøjskæden, fordi jobbet aldrig ændres: find de linjer, der betyder noget inde i tekst, der vokser hurtigere, end nogen rydder op i den. Dens virkelige kraft er flagvokabularet, der forvandler en søgning til et svar: omgivende kontekst, filnavnelister, inverterede matches og exitkoder, som et shell-script kan forgrene sig på. Når en server opfører sig forkert, starter undersøgelsen med grep, og oftere end nogen indrømmer, slutter den også der.
Vigtige pointer
- Søg rekursivt med formål: grep -rni 'fail2ban' /var/log --include='*.log' springer binære filer og komprimerede arkiver over af sig selv; en bare grep -r over /var/log lærer den lektion på den langsomme måde.
- Kontekst gør matches læsbare: -A 3 viser linjer efter, -B 3 før, -C 5 begge; -l viser kun filnavne, -c tæller match pr. fil, og -L inverterer listen til det, der mangler.
- Udgangskoder er en del af kontrakten: 0 betyder matchet, 1 betyder ingen match, 2 betyder fejl; et script, der kører grep -q og ignorerer denne skelnen, behandler succes og stilhed identisk.
- Kædefil lister null-safely: grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; slip Z- og -0-parringen, og det første filnavn med et mellemrum bryder pipelinen.
- Brug -E som standard regex-niveau for læsbar alternering, og nå ud til -P (lookarounds, \d klasser), når du accepterer, at det er en GNU-udvidelse, som BSD grep ikke vil bære.
- -F behandler mønsteret som bogstavelig tekst: hurtigere og immun over for regex-metakarakterer, der sniger sig ind fra variabler, der er indsat direkte fra en billet.
- --exclude-dir=.git og --exclude-dir=node_modules holder rekursive søgninger ude af mapper, der kun eksisterer for at bremse dem; stave navne eksplicit i scripts, da brace-udvidelse er en bash-bekvemmelighed, ikke en grep-funktion.
- Hold vanerne adskilt: --color=auto for interaktiv komfort, ingen farve i scripts (escape-sekvenser korrupte logfiler) og -n (linjenumre) på, så den næste person kan finde det sted, du indsatte.
Note fra marken
Jeg kørte engang en blottet grep -r på tværs af en klients hele logfarm kl. 02.00 og fik fyrre minutters stilhed for mine problemer; tilføjelse af --include='*.log' og -l afsluttede billetten på stedet. Inkluderings- og exit-kodevanerne går nu ind, før mønsteret gør det.
Ofte stillede spørgsmål
Hvorfor udskriver grep nogle gange 'binære filmatches' i stedet for min linje?
En NUL-byte nær matchen får GNU grep til at behandle filen som binær; tilføj -a for at tvinge teksttilstand eller -I til at springe binære filer helt over, hvilket er den rigtige standard på blandede log-mapper.
Skal jeg bruge ripgrep i stedet for?
ripgrep er hurtigere og springer binære og skjulte filer over som standard, men grep findes på hver boks, du nogensinde vil SSH ind i, inklusive redningsbilleder. Lær grep først; nå til rg, hvor det tilfældigvis er installeret.
Hvordan søger jeg i roterede, komprimerede logfiler?
zgrep søger gennemsigtigt i .gz-filer og zstdgrep dækker de nyere kompressorers rotation skiftet til; gårsdagens nål bor normalt inde i en af dem, så værktøjerne tæller som grundlæggende hygiejne.
Hvordan matcher jeg et ord, men ikke et længere ord, der indeholder det?
Brug -w til helords-matching og -x for fuld-line matches; når mønstre har brug for dele af ord, giver karakterklasser som [Ss]erver præcis kontrol uden at udjævne store og små bogstaver alle andre steder.
Sådan hjælper Kinetikatech med linux-kommandoer og shell-færdigheder
Det har vi gjort hundredvis af gange: De kommandoer og scriptvaner, der afgør, om en administrator driver en server eller bekæmper den: søg, transformer, overfør og overvåg tekst og processer med de værktøjer, der findes i enhver basisinstallation. Med Sikkerhed på Linux-servere og Serveradministration får du hele løkken: vi vurderer, implementerer, følger op hele døgnet og rykker ud inden for 30 minutter, når det er nødvendigt.