LFCS #1: Hoe je de 'sed'-opdracht gebruikt voor bestandsmanipulatie in Linux
De Linux Foundation heeft de LFCS-certificering (Linux Foundation Certified Sysadmin) aangekondigd, een nieuw programma dat tot doel heeft individuen over de hele wereld te helpen zich te certificeren in basis- tot middelmatige systeembeheertaken voor Linux-systemen.
Dit omvat het ondersteunen van actieve systemen en services, samen met probleemoplossing en analyse uit de eerste hand, en slimme besluitvorming om problemen naar technische teams te escaleren.
Vanaf de laatste herziening op 11 augustus 2023 hebben we nauwgezet rekening gehouden met de domeinen en competenties, in lijn met de ingangsdatum van 11 mei 2023, zoals officieel verklaard door de Linux-stichting.
De serie krijgt de titel Voorbereiding op de LFCS (Linux Foundation Certified Sysadmin) delen 1 tot en met 33 en behandelt de volgende onderwerpen:
- Part 1
Het commando ‘Sed’ gebruiken om bestanden te manipuleren in Linux
- Part 2
-
Hoe Vi/Vim onder Linux te installeren en te gebruiken
- Part 3
Bestanden en directoires comprimeren en bestanden zoeken in Linux
- Part 4
Partitioneren van opslagapparaten, formatteren van bestandssystemen en configureren van swappartitie
- Part 5
Mount/Unmount lokale en netwerkbestandssystemen (Samba en NFS) in Linux
- Part 6
Partities samenstellen als RAID-apparaten – Systeemback-ups maken en beheren
- Part 7
Systeemopstartproces en -services beheren (SysVinit, Systemd en Upstart
- Part 8
Hoe u gebruikers en groepen, bestandsrechten en Sudo-toegang beheert
- Part 9
Linux-pakketbeheer met Yum, RPM, Apt, Dpkg, Aptitude en Zypper
- Part 10
Leren van basisshellscripts en probleemoplossing voor bestandssystemen
- Part 11
LVM beheren en creëren met de opdrachten vgcreate, lvcreate en lvextend
- Part 12
-
Hoe Linux te verkennen met geïnstalleerde Help-documentatie en -hulpmiddelen
- Part 13
Grand Unified Bootloader (GRUB) configureren en problemen oplossen
- Part 14
Bewaak het resourcegebruik van Linux-processen en stel proceslimieten per gebruiker in
- Part 15
Kernel Runtime-parameters instellen of wijzigen in Linux-systemen
- Part 16
Implementatie van verplichte toegangscontrole met SELinux of AppArmor in Linux
- Part 17
Toegangscontrolelijsten (ACL's) en schijfquota instellen voor gebruikers en groepen
- Part 18
Netwerkservices installeren en automatisch opstarten bij opstarten configureren
- Part 19
Een ultieme handleiding voor het instellen van een FTP-server om anonieme aanmeldingen toe te staan
- Part 20
Stel een Basic Recursive Caching DNS-server in en configureer zones voor domein
- Part 21
Hoe u de MariaDB-databaseserver installeert, beveiligt en de prestaties afstemt
- Part 22
-
Hoe u NFS Server installeert en configureert voor het delen van bestandssystemen
- Part 23
Apache instellen met op naam gebaseerde virtuele hosting met SSL-certificaat
- Part 24
Hoe u een Iptables-firewall instelt om externe toegang tot services in Linux mogelijk te maken
- Part 25
Hoe u van een Linux een router kunt maken die verkeer statisch en dynamisch afhandelt
- Part 26
Hoe u gecodeerde bestandssystemen kunt instellen en uitwisselen met behulp van de Cryptsetup Tool
- Part 27
Systeemgebruik en -storingen controleren en problemen met Linux-servers oplossen
- Part 28
Hoe u een netwerkrepository instelt om pakketten te installeren of bij te werken
- Part 29
Netwerkprestaties, beveiliging en probleemoplossing controleren
- Part 30
Hoe u virtuele machines en containers installeert en beheert
- Part 31
Leer de basisprincipes van Git om projecten efficiënt te beheren
- Part 32
Een beginnershandleiding voor het configureren van IPv4- en IPv6-adressen in Linux
- Part 33
Een beginnershandleiding voor het creëren van netwerkbinding en -bridging in Ubuntu
Dit bericht is deel 1 van een 33-tutorialserie, waarin de noodzakelijke domeinen en competenties worden behandeld die vereist zijn voor het LFCS-certificeringsexamen. Dat gezegd hebbende, start uw terminal op en laten we beginnen.
Tekststromen verwerken in Linux
Linux behandelt de invoer naar en de uitvoer van programma's als stromen (of reeksen) tekens. Om omleiding en leidingen te kunnen begrijpen, moeten we eerst de drie belangrijkste soorten I/O-stromen (Input en Output) begrijpen, die in feite speciale bestanden zijn (volgens afspraak in UNIX en Linux, datastromen en randapparatuur, of apparaatbestanden). worden ook behandeld als gewone bestanden).
Het verschil tussen >
(omleidingsoperator) en |
(pijplijnoperator) is dat terwijl de eerste een commando met een bestand verbindt, de laatste de uitvoer van een commando met een ander commando verbindt. commando.
command > file
command1 | command2
Omdat de omleidingsoperator in stilte bestanden aanmaakt of overschrijft, moeten we deze uiterst voorzichtig gebruiken en nooit verwarren met een pijplijn.
Een voordeel van pipelines op Linux- en UNIX-systemen is dat er geen tussenbestand bij een pipe betrokken is: de stdout van het eerste commando wordt niet naar een bestand geschreven en vervolgens door het tweede commando gelezen.
Voor de volgende oefenoefeningen gebruiken we het gedicht “Een gelukkig kind ” (anonieme auteur).
Met behulp van sed-commando
De naam sed is een afkorting voor stream-editor. Voor degenen die niet bekend zijn met de term: een streameditor wordt gebruikt om basisteksttransformaties uit te voeren op een invoerstroom (een bestand of invoer uit een pijplijn).
Wijzig kleine letters in hoofdletters in bestand
Het meest basale (en populaire) gebruik van sed is het vervangen van karakters. We beginnen met het veranderen van elke keer dat de kleine letter y
voorkomt in HOOFDLETTERS Y
en sturen de uitvoer om naar ahappychild2.txt.
De vlag g
geeft aan dat sed de vervanging moet uitvoeren voor alle exemplaren van de term op elke regel van het bestand. Als deze vlag wordt weggelaten, vervangt sed alleen de eerste keer dat de term op elke regel voorkomt.
Sed basissyntaxis:
sed ‘s/term/replacement/flag’ file
Ons voorbeeld:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt
Zoek en vervang Word in bestand
Als u een speciaal teken wilt zoeken of vervangen (zoals /
, \
, &
), moet u dit in de term escapen of vervangende snaren, met een achterwaartse schuine streep.
We vervangen bijvoorbeeld het woord en door een ampersand. Tegelijkertijd zullen we het woord I
vervangen door Jij
wanneer het eerste woord aan het begin van een regel wordt gevonden.
sed 's/and/\&/g;s/^I/You/g' ahappychild.txt
In het bovenstaande commando is een ^
(caret-teken) een bekende reguliere expressie die wordt gebruikt om het begin van een regel weer te geven.
Zoals u kunt zien, kunnen we twee of meer vervangingsopdrachten combineren (en daarin reguliere expressies gebruiken) door ze te scheiden met een puntkomma en de set tussen enkele aanhalingstekens te plaatsen.
Druk geselecteerde regels af vanuit een bestand
Een ander gebruik van sed is het tonen (of verwijderen) van een gekozen deel van een bestand. In het volgende voorbeeld geven we de eerste vijf regels van /var/log/messages van 8 juni weer.
sed -n '/^Jun 8/ p' /var/log/messages | sed -n 1,5p
Merk op dat sed standaard elke regel afdrukt. We kunnen dit gedrag overschrijven met de optie -n en vervolgens aan sed vertellen dat hij alleen het deel van het bestand (of de pipe) moet afdrukken (aangegeven door p) dat overeenkomt met het patroon (8 juni aan het begin van de regel in het eerste geval en regel 1 tot en met 5 in het tweede geval).
Ten slotte kan het handig zijn om bij het inspecteren van scripts of configuratiebestanden de code zelf te inspecteren en commentaar achterwege te laten. De volgende sed-oneliner verwijdert (d
) lege regels of regels die beginnen met #
(het teken |
geeft een booleaanse OR< aan tussen de twee reguliere expressies).
sed '/^#\|^$/d' apache2.conf
uniq-opdracht
Met de opdracht uniq kunnen we dubbele regels in een bestand rapporteren of verwijderen, waarbij standaard naar stdout wordt geschreven. We moeten er rekening mee houden dat uniq herhaalde lijnen niet detecteert, tenzij ze aangrenzend zijn.
Daarom wordt uniq vaak gebruikt samen met een voorafgaande sort (die wordt gebruikt om regels tekstbestanden te sorteren). Standaard neemt sort het eerste veld (gescheiden door spaties) als sleutelveld. Om een ander sleutelveld op te geven, moeten we de optie -k
gebruiken.
Voorbeelden van Uniq-opdrachten
De opdracht du -sch /path/to/directory/* retourneert het schijfruimtegebruik per submappen en bestanden binnen de opgegeven map in voor mensen leesbare indeling (toont ook een totaal per map), en geeft niet sorteer de uitvoer op grootte, maar op submap en bestandsnaam.
We kunnen de volgende opdracht gebruiken om op grootte te sorteren.
du -sch /var/* | sort –h
Je kunt het aantal gebeurtenissen in een logboek op datum tellen door uniq de opdracht te geven de vergelijking uit te voeren met de eerste zes tekens (-w 6)
van elke regel (waar de datum is opgegeven), en elke uitvoerregel vooraf laten gaan door het aantal exemplaren (-c
) met de volgende opdracht.
cat /var/log/mail.log | uniq -c -w 6
Ten slotte kunt u sort en uniq combineren (zoals gewoonlijk). Beschouw het volgende bestand met een lijst van donateurs, donatiedatum en bedrag. Stel dat we willen weten hoeveel unieke donoren er zijn.
We zullen het volgende cat-commando gebruiken om het eerste veld te knippen (velden worden gescheiden door een dubbele punt), op naam te sorteren en dubbele regels te verwijderen.
cat sortuniq.txt | cut -d: -f1 | sort | uniq
grep-opdracht
Het grep-commando doorzoekt tekstbestanden of (opdrachtuitvoer) op het voorkomen van een gespecificeerde reguliere expressie en voert elke regel uit die een overeenkomst bevat met de standaarduitvoer.
Voorbeelden van Grep-opdrachten
Geef de informatie uit /etc/passwd weer voor gebruiker gacanepa, waarbij hoofdletters en kleine letters worden genegeerd.
grep -i gacanepa /etc/passwd
Toon alle inhoud van /etc waarvan de naam begint met rc gevolgd door een enkel nummer.
ls -l /etc | grep rc[0-9]
tr-opdrachtgebruik
Het tr-commando kan worden gebruikt om tekens uit stdin te vertalen (wijzigen) of te verwijderen, en het resultaat naar stdout te schrijven.
Wijzig alle kleine letters in hoofdletters in het sortuniq.txt-bestand.
cat sortuniq.txt | tr [:lower:] [:upper:]
Knijp het scheidingsteken in de uitvoer van ls –l samen tot slechts één spatie.
ls -l | tr -s ' '
Verminder het commandogebruik
Het cut-commando extraheert gedeelten van invoerregels (uit stdin of bestanden) en geeft het resultaat weer bij standaarduitvoer, gebaseerd op het aantal bytes (-b
optie), tekens (-c
), of velden (-f
).
In dit laatste geval (gebaseerd op velden) is het standaardveldscheidingsteken een tab, maar er kan een ander scheidingsteken worden opgegeven door de optie -d
te gebruiken.
Voorbeelden van opdrachten knippen
Extraheer de gebruikersaccounts en de standaardshells die eraan zijn toegewezen uit /etc/passwd (met de optie –d
kunnen we het veldscheidingsteken en de –f
specificeren schakelaar geeft aan welke veld(en) zullen worden geëxtraheerd.
cat /etc/passwd | cut -d: -f1,7
Samenvattend zullen we een tekststroom maken die bestaat uit het eerste en derde niet-lege bestand van de uitvoer van het laatste commando. We gebruiken grep als eerste filter om te controleren op sessies van gebruiker gacanepa en knijpen vervolgens scheidingstekens in slechts één spatie (tr -s ' '
).
Vervolgens extraheren we het eerste en derde veld met cut, en sorteren we uiteindelijk op het tweede veld (IP-adressen in dit geval) dat uniek is.
last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq
Het bovenstaande commando laat zien hoe meerdere commando's en pijpen kunnen worden gecombineerd om gefilterde gegevens te verkrijgen volgens onze wensen. Voel je vrij om het ook in delen uit te voeren, zodat je de uitvoer kunt zien die van het ene commando naar het volgende wordt gepijplijnd (dit kan trouwens een geweldige leerervaring zijn!).
Samenvatting
Hoewel dit voorbeeld (samen met de rest van de voorbeelden in de huidige tutorial) op het eerste gezicht misschien niet erg nuttig lijkt, zijn ze een mooi startpunt om te beginnen experimenteren met opdrachten die worden gebruikt om bestanden van de Linux-computer te maken, te bewerken en te manipuleren. opdrachtregel.
Laat gerust uw vragen en opmerkingen hieronder achter; ze worden zeer op prijs gesteld!
Het LFCS eBook is nu te koop. Bestel vandaag nog uw exemplaar en begin uw reis om een gecertificeerde Linux-systeembeheerder te worden!
Product Name | Price | Buy |
---|---|---|
The Linux Foundation’s LFCS Certification Preparation Guide | $19.99 | [Buy Now] |
Als laatste, maar daarom niet minder belangrijk, kunt u overwegen om uw examenvoucher te kopen via de volgende links. Zo verdient u een kleine commissie, waarmee we dit boek up-to-date kunnen houden.