LFCS #1: Slik bruker du 'sed'-kommando for filmanipulering i Linux


Linux Foundation kunngjorde LFCS (Linux Foundation Certified Sysadmin)-sertifiseringen, et nytt program som tar sikte på å hjelpe enkeltpersoner over hele verden til å bli sertifisert i grunnleggende til middels systemadministrasjonsoppgaver for Linux-systemer.

Dette inkluderer støtte for kjørende systemer og tjenester, sammen med førstehånds feilsøking og analyse, og smart beslutningstaking for å eskalere problemer til ingeniørteam.

Fra den siste revisjonen 11. august 2023 har vi grundig redegjort for domenene og kompetansene, i samsvar med ikrafttredelsesdatoen 11. mai 2023, som offisielt erklært av Linux Foundation.

Serien får tittelen Forberedelse for LFCS (Linux Foundation Certified Sysadmin) delene 1 til 33 og dekker følgende emner:

Part 1

Hvordan bruke 'Sed'-kommandoen til å manipulere filer i Linux

Part 2

Hvordan installere og bruke Vi/Vim i Linux

Part 3

Hvordan komprimere filer og kataloger og finne filer i Linux

Part 4

Partisjonere lagringsenheter, formatere filsystemer og konfigurere swap-partisjon

Part 5

Monter/avmonter lokale og nettverksfilsystemer (Samba og NFS) i Linux

Part 6

Sette sammen partisjoner som RAID-enheter – Opprette og administrere systemsikkerhetskopier

Part 7

Administrere systemoppstartsprosesser og -tjenester (SysVinit, Systemd og Upstart

Part 8

Hvordan administrere brukere og grupper, filtillatelser og Sudo-tilgang

Part 9

Linux Package Management med Yum, RPM, Apt, Dpkg, Aptitude og Zypper

Part 10

Lære grunnleggende Shell-skripting og feilsøking av filsystem

Part 11

Hvordan administrere og opprette LVM ved å bruke vgcreate-, lvcreate- og lvextend-kommandoer

Part 12

Hvordan utforske Linux med installert hjelpedokumentasjon og verktøy

Part 13

Hvordan konfigurere og feilsøke Grand Unified Bootloader (GRUB)

Part 14

Overvåk Linux-prosesser ressursbruk og angi prosessgrenser på en per-bruker-basis

Part 15

Hvordan stille inn eller endre kjernekjøringsparametere i Linux-systemer

Part 16

Implementering av obligatorisk tilgangskontroll med SELinux eller AppArmor i Linux

Part 17

Hvordan angi tilgangskontrolllister (ACL) og diskkvoter for brukere og grupper

Part 18

Installere nettverkstjenester og konfigurere automatisk oppstart ved oppstart

Part 19

En ultimat guide for å sette opp FTP-server for å tillate anonyme pålogginger

Part 20

Konfigurer en grunnleggende rekursiv bufring DNS-server og konfigurer soner for domene

Part 21

Hvordan installere, sikre og ytelsesjustering av MariaDB Database Server

Part 22

Hvordan installere og konfigurere NFS-server for filsystemdeling

Part 23

Hvordan sette opp Apache med navnebasert virtuell hosting med SSL-sertifikat

Part 24

Slik konfigurerer du en Iptables-brannmur for å aktivere ekstern tilgang til tjenester i Linux

Part 25

Hvordan gjøre en Linux om til en ruter for å håndtere trafikk statisk og dynamisk

Part 26

Hvordan sette opp krypterte filsystemer og bytte ved hjelp av Cryptsetup Tool

Part 27

Hvordan overvåke systembruk, strømbrudd og feilsøke Linux-servere

Part 28

Slik konfigurerer du et nettverkslager for å installere eller oppdatere pakker

Part 29

Hvordan revidere nettverksytelse, sikkerhet og feilsøking

Part 30

Hvordan installere og administrere virtuelle maskiner og containere

Part 31

Lær det grunnleggende om Git for å administrere prosjekter effektivt

Part 32

En nybegynnerveiledning for å konfigurere IPv4- og IPv6-adresser i Linux

Part 33

En nybegynnerveiledning for å lage nettverksbinding og brobygging i Ubuntu

Dette innlegget er del 1 av en 33-veiledningsserie, som vil dekke de nødvendige domenene og kompetansene som kreves for LFCS-sertifiseringseksamenen. Når det er sagt, fyr opp terminalen din, og la oss starte.

Behandler tekststrømmer i Linux

Linux behandler input til og utdata fra programmer som strømmer (eller sekvenser) av tegn. For å begynne å forstå omdirigering og rør, må vi først forstå de tre viktigste typene I/O (Input and Output)-strømmer, som faktisk er spesielle filer (etter konvensjon i UNIX og Linux, datastrømmer og periferiutstyr, eller enhetsfiler, behandles også som vanlige filer).

Forskjellen mellom > (omdirigeringsoperatør) og | (rørledningsoperatør) er at mens den første kobler en kommando med en fil, kobler den sistnevnte utgangen av en kommando med en annen kommando.

command > file
command1 | command2

Siden omdirigeringsoperatøren oppretter eller overskriver filer stille, må vi bruke den med ekstrem forsiktighet, og aldri forveksle den med en pipeline.

En fordel med pipes på Linux- og UNIX-systemer er at det ikke er noen mellomfil involvert i en pipe - stdouten til den første kommandoen skrives ikke til en fil og deretter leses av den andre kommandoen.

For de følgende øvelsesøvelsene vil vi bruke diktet «Et lykkelig barn» (anonym forfatter).

Bruker sed Command

Navnet sed er en forkortelse for stream editor. For de som ikke er kjent med begrepet, brukes en strømredigerer til å utføre grunnleggende teksttransformasjoner på en inputstrøm (en fil eller input fra en pipeline).

Endre små bokstaver til store bokstaver i fil

Den mest grunnleggende (og populære) bruken av sed er erstatning av tegn. Vi vil begynne med å endre hver forekomst av små bokstaver y til STORE BOKSTAVER Y og omdirigere utdataene til ahappychild2.txt.

g-flagget indikerer at sed skal utføre substitusjonen for alle forekomster av term på hver linje i filen. Hvis dette flagget utelates, vil sed kun erstatte den første forekomsten av begrepet på hver linje.

Sed grunnleggende syntaks:
sed ‘s/term/replacement/flag’ file
Vårt eksempel:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Søk og erstatt Word i fil

Hvis du ønsker å søke etter eller erstatte et spesialtegn (som /, \, &), må du escape det, i termen eller erstatningsstrenger, med skråstrek bakover.

For eksempel vil vi erstatte ordet og med et og-tegnet. Samtidig vil vi erstatte ordet I med You når det første er funnet på begynnelsen av en linje.

sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

I kommandoen ovenfor er et ^ (caret-tegn) et velkjent regulært uttrykk som brukes til å representere begynnelsen av en linje.

Som du kan se, kan vi kombinere to eller flere substitusjonskommandoer (og bruke vanlige uttrykk i dem) ved å skille dem med semikolon og omslutte settet i enkle anførselstegn.

Skriv ut valgte linjer fra en fil

En annen bruk av sed er å vise (eller slette) en valgt del av en fil. I det følgende eksempelet vil vi vise de første 5 linjene med /var/log/messages fra 8. juni.

sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Merk at som standard skriver sed ut hver linje. Vi kan overstyre denne oppførselen med -n-alternativet og deretter fortelle sed å skrive ut (angitt med p) bare den delen av filen (eller pipen) som samsvarer med mønsteret (8. juni på begynnelsen av linjen i det første tilfellet og linjene 1 til og med 5 i det andre tilfellet).

Til slutt kan det være nyttig når du inspiserer skript eller konfigurasjonsfiler å inspisere selve koden og utelate kommentarer. Følgende sed one-liner sletter (d) tomme linjer eller de som begynner med # (tegnet | indikerer en boolsk ELLER< mellom de to regulære uttrykkene).

sed '/^#\|^$/d' apache2.conf

unik kommando

Uniq-kommandoen lar oss rapportere eller fjerne dupliserte linjer i en fil, og skrive til stdout som standard. Vi må merke oss at uniq ikke oppdager gjentatte linjer med mindre de er tilstøtende.

Derfor brukes uniq ofte sammen med en foregående sortering (som brukes til å sortere linjer med tekstfiler). Som standard tar sort det første feltet (atskilt med mellomrom) som et nøkkelfelt. For å spesifisere et annet nøkkelfelt, må vi bruke -k-alternativet.

Eksempler på unike kommandoer

Kommandoen du -sch /path/to/directory/* returnerer diskplassbruken per underkataloger og filer i den spesifiserte katalogen i lesbart format (viser også en total per katalog), og ikke bestill utdataene etter størrelse, men etter underkatalog og filnavn.

Vi kan bruke følgende kommando for å sortere etter størrelse.

du -sch /var/* | sort –h

Du kan telle antall hendelser i en logg etter dato ved å be uniq utføre sammenligningen ved å bruke de første 6 tegnene (-w 6) på hver linje (der datoen er spesifisert), og prefikser hver utgangslinje med antall forekomster (-c) med følgende kommando.

cat /var/log/mail.log | uniq -c -w 6

Til slutt kan du kombinere sort og uniq (slik de vanligvis er). Vurder følgende fil med en liste over givere, donasjonsdato og beløp. Anta at vi ønsker å vite hvor mange unike givere det er.

Vi vil bruke følgende cat-kommando for å kutte det første feltet (felt er avgrenset med et kolon), sortere etter navn og fjerne dupliserte linjer.

cat sortuniq.txt | cut -d: -f1 | sort | uniq

grep kommando

grep-kommandoen søker i tekstfiler eller (kommandoutdata) etter forekomsten av et spesifisert regulært uttrykk og sender ut en hvilken som helst linje som inneholder samsvar med standardutdata.

Eksempler på Grep-kommandoer

Vis informasjonen fra /etc/passwd for brukeren gacanepa, ignorer store og små bokstaver.

grep -i gacanepa /etc/passwd

Vis alt innholdet i /etc hvis navn begynner med rc etterfulgt av et enkelt tall.

ls -l /etc | grep rc[0-9]

tr Kommandobruk

Tr-kommandoen kan brukes til å oversette (endre) eller slette tegn fra stdin, og skrive resultatet til stdout.

Endre alle små bokstaver til store bokstaver i sortuniq.txt-filen.

cat sortuniq.txt | tr [:lower:] [:upper:]

Klem skilletegnet i utdataene til ls –l til bare ett mellomrom.

ls -l | tr -s ' '

Kutt kommandobruk

Cut-kommandoen trekker ut deler av inndatalinjer (fra stdin eller filer) og viser resultatet på standard utdata, basert på antall byte (-b alternativ), tegn (-c), eller felt (-f).

I dette siste tilfellet (basert på felt), er standard feltseparator en tabulator, men et annet skilletegn kan spesifiseres ved å bruke -d-alternativet.

Eksempler på kuttekommandoer

Trekk ut brukerkontoene og standardskallene som er tildelt dem fra /etc/passwd (alternativet –d lar oss spesifisere feltskilletegnet og –f-bryteren indikerer hvilke felt(er) som skal trekkes ut.

cat /etc/passwd | cut -d: -f1,7

Oppsummert vil vi lage en tekststrøm som består av den første og tredje ikke-tomme filen av utdataene fra siste-kommandoen. Vi vil bruke grep som et første filter for å se etter økter til brukeren gacanepa, og deretter presse skilletegn til bare ett mellomrom (tr -s ' ' ).

Deretter trekker vi ut det første og tredje feltet med kutt, og til slutt sorterer vi etter det andre feltet (IP-adresser i dette tilfellet) som viser unike.

last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Kommandoen ovenfor viser hvordan flere kommandoer og rør kan kombineres for å oppnå filtrerte data i henhold til våre ønsker. Kjør den gjerne også etter deler, for å hjelpe deg med å se utdataene som sendes fra en kommando til den neste (dette kan forresten være en flott læringsopplevelse!).

Sammendrag

Selv om dette eksemplet (sammen med resten av eksemplene i den nåværende opplæringen) kanskje ikke virker veldig nyttig ved første øyekast, er de et fint utgangspunkt for å begynne å eksperimentere med kommandoer som brukes til å lage, redigere og manipulere filer fra Linux kommandolinje.

Legg gjerne igjen spørsmål og kommentarer nedenfor - de vil bli satt stor pris på!

LFCS eBook er tilgjengelig for kjøp nå. Bestill ditt eksemplar i dag og start reisen din til å bli en sertifisert Linux-systemadministrator!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

Sist, men ikke minst, bør du vurdere å kjøpe eksamenskupongen din ved å bruke følgende lenker for å tjene oss en liten provisjon, som vil hjelpe oss å holde denne boken oppdatert.