LFCS #1: Kako koristiti naredbu 'sed' za manipulaciju datotekama u Linuxu


Linux fondacija najavila je LFCS (Linux Foundation Certified Sysadmin) certifikaciju, novi program koji ima za cilj da pomogne pojedincima širom svijeta da se certificiraju za osnovne do srednje zadatke administracije sistema za Linux sisteme.

Ovo uključuje podršku pokrenutih sistema i usluga, zajedno sa rješavanjem problema i analizom iz prve ruke, i pametno donošenje odluka za eskalaciju problema na inženjerske timove.

Od posljednje revizije od 11. avgusta 2023., mi smo pomno vodili računa o domenima i nadležnostima, u skladu sa datumom stupanja na snagu 11. maja 2023., kako je službeno objavljeno Linux fondacija.

Serija će se zvati Priprema za LFCS (Linux Foundation Certified Sysadmin) dijelove 1 do 33 i pokrivati sljedeće teme:

Part 1

Kako koristiti naredbu 'Sed' za manipulaciju datotekama u Linuxu

Part 2

Kako instalirati i koristiti Vi/Vim u Linuxu

Part 3

Kako komprimirati datoteke i direktorije i pronaći datoteke u Linuxu

Part 4

Particioniranje uređaja za skladištenje, formatiranje sistema datoteka i konfigurisanje zamjenske particije

Part 5

Montiraj/Demontiraj lokalne i mrežne (Samba & NFS) datotečne sisteme u Linuxu

Part 6

Sastavljanje particija kao RAID uređaja – Kreiranje i upravljanje rezervnim kopijama sistema

Part 7

Upravljanje procesom pokretanja sistema i uslugama (SysVinit, Systemd i Upstart

Part 8

Kako upravljati korisnicima i grupama, dozvolama za datoteke i Sudo pristupom

Part 9

Upravljanje Linux paketima sa Yum, RPM, Apt, Dpkg, Aptitude i Zypper

Part 10

Učenje osnovnih shell skriptova i rješavanje problema sa sistemom datoteka

Part 11

Kako upravljati i kreirati LVM koristeći naredbe vgcreate, lvcreate i lvextend

Part 12

Kako istražiti Linux s instaliranom dokumentacijom pomoći i alatima

Part 13

Kako konfigurirati i riješiti probleme Grand Unified Bootloader (GRUB)

Part 14

Nadgledajte korištenje resursa Linux procesa i postavite ograničenja procesa po korisniku

Part 15

Kako postaviti ili izmijeniti parametre vremena izvođenja kernela u Linux sistemima

Part 16

Implementacija obavezne kontrole pristupa sa SELinuxom ili AppArmorom u Linuxu

Part 17

Kako postaviti liste kontrole pristupa (ACL) i kvote diska za korisnike i grupe

Part 18

Instaliranje mrežnih usluga i konfiguriranje automatskog pokretanja pri pokretanju

Part 19

Ultimativni vodič za postavljanje FTP servera za omogućavanje anonimnih prijava

Part 20

Postavite osnovni DNS server za rekurzivno keširanje i konfigurirajte zone za domenu

Part 21

Kako instalirati, osigurati i podesiti performanse MariaDB servera baze podataka

Part 22

Kako instalirati i konfigurirati NFS server za dijeljenje sistema datoteka

Part 23

Kako podesiti Apache sa virtuelnim hostingom zasnovanim na imenu sa SSL sertifikatom

Part 24

Kako postaviti Iptables Firewall da omogućite daljinski pristup uslugama u Linuxu

Part 25

Kako pretvoriti Linux u ruter da upravlja prometom statički i dinamički

Part 26

Kako postaviti šifrirane sisteme datoteka i zamijeniti ih pomoću Cryptsetup alata

Part 27

Kako pratiti korištenje sistema, prekide rada i rješavanje problema na Linux serverima

Part 28

Kako postaviti mrežno spremište za instaliranje ili ažuriranje paketa

Part 29

Kako izvršiti reviziju mrežnih performansi, sigurnosti i rješavanja problema

Part 30

Kako instalirati i upravljati virtuelnim mašinama i kontejnerima

Part 31

Naučite osnove Gita za efikasno upravljanje projektima

Part 32

Vodič za početnike za konfiguriranje IPv4 i IPv6 adresa u Linuxu

Part 33

Vodič za početnike za stvaranje mrežnog povezivanja i premošćavanja u Ubuntuu

Ovaj post je dio 1 serije 33 vodiča, koja će pokriti neophodne domene i kompetencije koje su potrebne za LFCS ispit za sertifikaciju. S obzirom na to, pokrenite svoj terminal i krenimo.

Obrada tekstualnih tokova u Linuxu

Linux tretira ulaz i izlaz iz programa kao tokove (ili nizove) znakova. Da bismo počeli razumijevati preusmjeravanje i cijevi, prvo moramo razumjeti tri najvažnija tipa I/O (ulaznih i izlaznih) tokova, koji su u stvari posebne datoteke (po konvenciji u UNIX-u i Linuxu, tokovi podataka i periferije, ili datoteke uređaja, se takođe tretiraju kao obični fajlovi).

Razlika između > (operator preusmjeravanja) i | (pipeline operator) je u tome što prvi povezuje naredbu s datotekom, drugi povezuje izlaz naredbe s drugom komanda.

command > file
command1 | command2

S obzirom da operator preusmjeravanja tiho kreira ili prepisuje datoteke, moramo ga koristiti s krajnjim oprezom i nikada ga ne zamijeniti s cevovodom.

Jedna od prednosti cijevi na Linux i UNIX sistemima je da nema međufajla koji je uključen u cijevi – stdout prve naredbe se ne upisuje u datoteku i zatim čita drugom naredbom.

Za sljedeće vježbe koristit ćemo pjesmu “Srećno dijete” (anonimni autor).

Korištenje naredbe sed

Ime sed je skraćenica za stream editor. Za one koji nisu upoznati s pojmom, uređivač toka se koristi za obavljanje osnovnih tekstualnih transformacija na ulaznom toku (datoteci ili unosu iz cjevovoda).

Promijenite mala slova u velika u datoteci

Najosnovnija (i najpopularnija) upotreba sed je zamjena znakova. Počećemo tako što ćemo svako pojavljivanje malih slova y promijeniti u VELIKA Y i preusmjeriti izlaz na ahappychild2.txt.

Oznaka g označava da bi sed trebao izvršiti zamjenu za sve instance termina u svakom redu datoteke. Ako se ova zastavica izostavi, sed će zamijeniti samo prvo pojavljivanje pojma u svakom redu.

Sed osnovna sintaksa:
sed ‘s/term/replacement/flag’ file
Naš primjer:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Pretražite i zamijenite Word u datoteci

Ako želite tražiti ili zamijeniti poseban znak (kao što je /, \, &) morate ga izbjeći u terminu ili zamjenski nizovi, sa kosom crtom unazad.

Na primjer, zamijenit ćemo riječ i za ampersand. U isto vrijeme, zamijenit ćemo riječ I sa Vi kada se prva nađe na početku reda.

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

U gornjoj naredbi, ^ (znak za umiranje) je dobro poznati regularni izraz koji se koristi za predstavljanje početka reda.

Kao što možete vidjeti, možemo kombinirati dvije ili više naredbi zamjene (i koristiti regularne izraze unutar njih) tako što ćemo ih odvojiti tačkom i zarezom i zatvoriti skup unutar jednostrukih navodnika.

Odštampajte odabrane linije iz datoteke

Druga upotreba sed je prikazivanje (ili brisanje) odabranog dijela datoteke. U sljedećem primjeru prikazat ćemo prvih 5 redova /var/log/messages od 8. juna.

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

Imajte na umu da sed po defaultu ispisuje svaki red. Možemo nadjačati ovo ponašanje opcijom -n, a zatim reći sed-u da ispiše (označeno sa p) samo dio datoteke (ili cijevi) koji odgovara uzorku (8. jun na početku reda u prvom slučaju i redovi od 1. do 5. uključujući u drugom slučaju).

Konačno, prilikom pregleda skripti ili konfiguracijskih datoteka može biti korisno pregledati sam kod i izostaviti komentare. Sljedeći sed u jednom redu briše (d) prazne redove ili one koji počinju s # (znak | označava logički ILI< između dva regularna izraza).

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

uniq Command

Komanda uniq nam omogućava da prijavimo ili uklonimo duple redove u datoteci, zapisivanjem u stdout po defaultu. Moramo napomenuti da uniq ne otkriva ponovljene linije osim ako nisu susjedne.

Dakle, uniq se obično koristi zajedno sa prethodnim sortiranjem (koji se koristi za sortiranje redova tekstualnih datoteka). Podrazumevano, sort uzima prvo polje (odvojeno razmacima) kao ključno polje. Da navedemo drugačije ključno polje, moramo koristiti opciju -k.

Primjeri Uniq komandi

Naredba du -sch /path/to/directory/* vraća korištenje prostora na disku po poddirektorijumima i datotekama unutar specificiranog direktorija u formatu koji je čitljiv (također prikazuje ukupno po direktoriju), a ne poredajte izlaz po veličini, ali prema poddirektorijumu i imenu datoteke.

Možemo koristiti sljedeću naredbu za sortiranje po veličini.

du -sch /var/* | sort –h

Možete prebrojati broj događaja u dnevniku po datumu tako što ćete reći uniq da izvrši poređenje koristeći prvih 6 znakova (-w 6) svakog reda (gdje je datum je naveden) i prefiksiranje svake izlazne linije brojem pojavljivanja (-c) sa sljedećom naredbom.

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

Konačno, možete kombinovati sort i uniq (kao što obično jesu). Razmotrite sljedeću datoteku sa listom donatora, datumom donacije i iznosom. Pretpostavimo da želimo da znamo koliko jedinstvenih donatora ima.

Koristit ćemo sljedeću cat komandu da isečemo prvo polje (polja su razgraničena dvotočkom), sortiramo po imenu i uklonimo duple linije.

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

grep naredba

Naredba grep pretražuje tekstualne datoteke ili (izlaz naredbe) za pojavu navedenog regularnog izraza i ispisuje bilo koju liniju koja sadrži podudaranje sa standardnim izlazom.

Primjeri naredbi Grep

Prikažite informacije iz /etc/passwd za korisnika gacanepa, zanemarujući velika i mala slova.

grep -i gacanepa /etc/passwd

Prikaži sav sadržaj /etc čije ime počinje sa rc nakon čega slijedi bilo koji pojedinačni broj.

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

tr Upotreba naredbi

Naredba tr se može koristiti za prevođenje (promjenu) ili brisanje znakova iz stdin-a i zapisivanje rezultata u stdout.

Promijenite sva mala slova u velika u datoteci sortuniq.txt.

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

Stisnite graničnik u izlazu ls –l na samo jedan razmak.

ls -l | tr -s ' '

Upotreba komande Cut

Naredba cut izdvaja dijelove ulaznih linija (iz stdin-a ili datoteka) i prikazuje rezultat na standardnom izlazu, na osnovu broja bajtova (-b opcija), znakova (-c), ili polja (-f).

U ovom posljednjem slučaju (zasnovano na poljima), zadani separator polja je tab, ali se može navesti drugačiji graničnik pomoću opcije -d.

Primjeri naredbi Cut

Izdvojite korisničke naloge i podrazumevane ljuske koje su im dodeljene iz /etc/passwd (opcija –d nam omogućava da navedemo graničnik polja i –f prekidač označava koja polja će biti izdvojena.

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

Sumirajući, kreiraćemo tekstualni tok koji se sastoji od prve i treće neprazne datoteke izlaza naredbe zadnja. Koristit ćemo grep kao prvi filter za provjeru sesija korisnika gacanepa, a zatim stisnuti graničnike na samo jedan razmak (tr -s ' ' ).

Zatim ćemo izdvojiti prvo i treće polje sa cut, i konačno sortirati prema drugom polju (IP adrese u ovom slučaju) koje prikazuje jedinstveno.

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

Gornja naredba pokazuje kako se više komandi i cijevi može kombinirati kako bi se dobili filtrirani podaci prema našim željama. Slobodno ga pokrenite i po dijelovima, kako bi vam pomogli da vidite izlaz koji se prebacuje od jedne komande do druge (usput, ovo može biti sjajno iskustvo učenja!).

Sažetak

Iako se ovaj primjer (zajedno s ostatkom primjera u trenutnom vodiču) možda na prvi pogled ne čini korisnim, oni su dobra početna točka za početak eksperimentiranja s naredbama koje se koriste za kreiranje, uređivanje i manipulaciju datotekama iz Linuxa komandna linija.

Slobodno ostavite svoja pitanja i komentare ispod – biće vam veoma zahvalni!

LFCS e-knjiga je sada dostupna za kupovinu. Naručite svoj primjerak već danas i započnite svoj put da postanete certificirani Linux sistem administrator!

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

Na kraju, ali ne i najmanje važno, razmislite o kupovini vaučera za ispit koristeći sljedeće veze kako biste zaradili malu proviziju, što će nam pomoći da ovu knjigu ažuriramo.