Supersection 1, More Comfortable
Sadržaj:
- Sintaksa naredbe grep naredbe
- Kako koristiti
grep
za traženje niza u datotekama - Invert match (Izuzmi)
- Kako koristiti Grep za traženje niza u naredbenom izlazu
- Rekurzivna pretraga
- Prikaži samo naziv datoteke
- Neosjetljivo pretraživanje slučaja
- Traži cjelovite riječi
- Prikaži brojeve linija
- Broji utakmice
- Traženje više nizova (uzoraka)
- Tihi način rada
- Osnovni pravilni izraz
- Prošireni regularni izrazi
- Ispišite retke prije utakmice
- Ispisati linije nakon podudaranja
- Zaključak
Naredba
grep
koja stoji za "globalni ispis regularnih izraza" jedna je od najmoćnijih i najčešće korištenih naredbi u Linuxu.
Grep pretražuje jednu ili više ulaznih datoteka za linije koje se podudaraju s određenim uzorkom i upisuje svaki odgovarajući redak na standardni izlaz. Ako nisu određene datoteke,
grep
čita sa standardnog ulaza, što je obično izlaz druge naredbe.
U ovom ćemo vam vodiču pokazati kako koristiti naredbu
grep
kroz praktične primjere i detaljna objašnjenja najčešćih opcija GNU
grep
a.
Sintaksa naredbe grep naredbe
Prije nego što razmotrimo kako koristiti naredbu
grep
, započnimo s pregledom osnovne sintakse.
Izrazi uslužnog programa
grep
imaju sljedeći oblik:
grep PATTERN
Stavke u uglatim zagradama nisu obavezne.
-
OPTIONS
- Nula ili više opcija. Grep pruža brojne mogućnosti koje kontroliraju njegovo ponašanje.PATTERN
- Obrazac pretraživanja.FILE
- nula ili više imena ulaznih datoteka.
Kako biste mogli pretraživati datoteku, korisnik koji izvršava naredbu mora imati pristup čitanju.
Kako koristiti
grep
za traženje niza u datotekama
Najosnovnija upotreba
grep
naredbe je traženje niza (teksta) u datoteci.
Na primjer, za prikaz linija iz
/etc/passwd
datoteke koja sadrži
bash
možete koristiti sljedeću naredbu:
grep bash /etc/passwd
Izlaz bi trebao izgledati ovako:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Ako niz sadrži razmake, trebate ga priložiti jednim ili dvostrukim navodnicima:
grep "Gnome Display Manager" /etc/passwd
Invert match (Izuzmi)
Za prikaz linija koje ne odgovaraju obrascu, koristite opciju
-v
(ili
--invert-match
).
Na primjer, za prikaz redaka iz
/etc/passwd
datoteke koji ne sadrže string
nologin
možete koristiti sljedeću naredbu:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Kako koristiti Grep za traženje niza u naredbenom izlazu
Umjesto određivanja ulaznih datoteka, možete isprazniti izlaz druge naredbe za
grep
i prikazati samo linije koje odgovaraju zadanom obrascu.
Na primjer, da biste saznali koji se procesi u vašem sustavu pokreću kao korisnički
www-data
, možete koristiti sljedeću
ps
naredbu:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Na naredbu možete uključiti više cijevi. Kao što vidite u izlazu iznad, također postoji linija koja sadrži
grep
postupak. Ako ne želite da se ova linija prikazuje, proslijedite izlaz drugoj
grep
instanci kao što je prikazano u nastavku.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Rekurzivna pretraga
Za rekurzivno traženje uzorka koristite opciju
-r
(ili -
--recursive
). Ovo će pretraživati sve datoteke u navedenom direktoriju, preskačući simbole koji se javljaju rekurzivno. Za praćenje svih simboličkih veza, koristite opciju
-R
(ili
--dereference-recursive
).
U sljedećem primjeru tražimo niz
linuxize.com
u svim datotekama u
/etc
direktoriju:
grep -r linuxize.com /etc
Naredba će ispisati odgovarajuće retke s prefiksom pune putanje do datoteke.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Ako umjesto toga, ili koristite opciju
-R
grep
će slijediti sve simboličke veze:
grep -R linuxize.com /etc
Primjetite zadnji redak izlaza. Taj se redak ne ispisuje u gornjem primjeru jer su datoteke unutar direktorija s
sites-enabled
Nginx
sites-enabled
a simbol veze do konfiguracijskih datoteka unutar mape
sites-available
za
sites-available
.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Prikaži samo naziv datoteke
Za suzbijanje zadanih
grep
izlaza i ispis samo imena datoteka koje sadrže podudarni uzorak, možete upotrijebiti opciju
-l
(ili
--files-with-matches
).
Na primjer, pretraživati sve datoteke koje završavaju s
.conf
u trenutnoj radnoj mapi i ispisati samo imena datoteka koje sadrže niz
linuxize.com
tipa:
grep -l linuxize.com *.conf
Izlaz će izgledati ovako:
tmux.conf haproxy.conf
Opcija
-l
se obično koristi u kombinaciji s rekurzivnom opcijom
-R
:
Neosjetljivo pretraživanje slučaja
grep
naredba
grep
velika i mala slova. To znači da se velika i mala slova tretiraju kao različiti.
Da biste ignorirali slučaj prilikom pretraživanja, koristite opciju
-i
(ili
--ignore-case
).
Na primjer, kada tražite
Zebra
bez ikakvih opcija, sljedeća naredba neće prikazati nijedan izlaz, tj. Postoje odgovarajuće linije:
grep Zebra /usr/share/words
Ali ako izvršite pretraživanje neosjetljivo na velika slova
-i
opcijom
-i
, podudarat će se s velikim i malim slovima:
grep -i Zebra /usr/share/words
Navođenje "Zebre" podudara se sa "zebrom", "ZEbrA" ili bilo kojom drugom kombinacijom velikih i malih slova tog niza.
Traži cjelovite riječi
Kada tražite "gnu",
grep
će također ispisati retke u kojima je "gnu" ugrađen u veće riječi, poput "cygnus" ili "magnum".
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Da biste vratili samo one retke u kojima je navedeni niz cijela riječ (zatvorena znakovima koji nisu riječi), koristite opciju
-w
(ili
--word-regexp
).
az
,
AZ
i
0-9
) i podvlake (
_
). Svi ostali znakovi smatraju se znakovima koji nisu riječi.
grep -w gnu /usr/share/words
Prikaži brojeve linija
Da biste prikazali broj redaka koji sadrže niz koji odgovara uzorku, upotrijebite opciju
-n
(ili -
--line-number
). Kada koristite ovu opciju,
grep
će ispisati podudaranja na standardni izlaz s prefiksom broja retka na kojem je pronađen.
Na primjer, za prikaz redaka iz
/etc/services
datoteke koja sadrži
bash
nizova prefiksa s odgovarajućim brojem retka, možete koristiti sljedeću naredbu:
grep -n 10000 /etc/services
Rezultat u nastavku pokazuje da se podudarnosti nalaze na linijama 10423 i 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Broji utakmice
Za ispis broja odgovarajućih linija na standardni izlaz, koristite opciju
-c
(ili
--count
).
U primjeru u nastavku računamo broj računa koji imaju
/usr/bin/zsh
kao ljusku.
grep -c '/usr/bin/zsh' /etc/passwd
Traženje više nizova (uzoraka)
Dva ili više obrazaca pretraživanja mogu se spojiti pomoću operatora ILI
|
,
grep
po zadanom tumači uzorak kao osnovni regularni izraz gdje su meta-znakovi poput
|
gube svoje posebno značenje i moraju se upotrijebiti njihove polijepljene verzije.
U primjeru u nastavku pretražujemo sve pojave riječi
fatal
,
error
i
critical
u datoteci pogreške Nginx log:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Tihi način rada
-q
(ili -
--quiet
) govori
grep
da ne piše ništa na terminalu (standardni izlaz). Ako se pronađe podudaranje, naredba će izaći sa statusom
0
. Ovo je korisno kada koristite
grep
u skriptama školjke gdje želite provjeriti sadrži li datoteka niz i izvesti određenu radnju ovisno o rezultatu.
Evo primjera upotrebe
grep
u tihom načinu kao testne naredbe u naredbi
if
:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Osnovni pravilni izraz
GNU Grep ima dva skupa značajki regularnog izraza, Basic i Extended.
grep
po zadanom tumači uzorak kao osnovni pravilan izraz.
Kad se koristi u osnovnom načinu regularnog izraza, svi ostali znakovi osim meta-znakova, zapravo su regularni izrazi koji se poklapaju. Slijedi popis najčešće korištenih meta-znakova:
-
Upotrijebite simbol
^
(caret) za podudaranje izraza na početku retka. U sljedećem primjeru, niz^kangaroo
podudarat će se samo ako se dogodi na samom početku retka.grep "^kangaroo" file.txt
Upotrijebite simbol
$
(dolar) da biste uskladili izraz na kraju retka. U sljedećem primjeru,kangaroo$
nizkangaroo$
podudarat će se samo ako se dogodi na samom kraju retka.grep "kangaroo$" file.txt
Upotrijebite
.
(točka) simbol koji odgovara bilo kojem pojedinačnom znaku. Na primjer, za podudaranje bilo čega što započinje skan
zatim ima dva znaka i završava nizomroo
, mogli biste upotrijebiti sljedeći obrazac:grep "kan..roo" file.txt
Koristiti
accent
iliaccent
, a mogli biste koristiti sljedeći obrazac:grep "accet" file.txt
Koristiti
co(any_letter_except_l)a
, poputcoca
,cobalt
i tako dalje, ali neće odgovarati linijama koje sadržecola
,grep "coa" file.txt
Da biste izbjegli posebno značenje sljedećeg znaka, upotrijebite simbol
\
(kosa crta).
Prošireni regularni izrazi
Za tumačenje uzorka kao produženog regularnog izraza, koristite opciju
-E
(ili
--extended-regexp
). Prošireni regularni izrazi uključuju sve osnovne meta-znakove, zajedno s dodatnim meta-znakovima za stvaranje složenijih i snažnijih obrazaca pretraživanja. Ispod je nekoliko primjera:
-
Usklađivanje i izdvajanje svih adresa e-pošte iz određene datoteke:
grep -E -o "\b+@+\.{2, 6}\b" file.txt
Podudarite i izvucite sve važeće IP adrese iz određene datoteke:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Opcija
-o
koristi se za ispis samo odgovarajućeg niza.
Ispišite retke prije utakmice
Za ispis određenog broja redaka prije podudaranja redaka koristite opciju
-B
(ili -
--before-context
).
Na primjer, za prikaz pet redaka vodećeg konteksta prije podudaranja linija, upotrijebili biste sljedeću naredbu:
Ispisati linije nakon podudaranja
Za ispis određenog broja redaka nakon podudaranja linija koristite opciju
-A
(ili
--after-context
).
Na primjer, za prikaz pet linija slijedećeg konteksta nakon podudaranja linija, upotrijebili biste sljedeću naredbu:
Zaključak
Naredba
grep
omogućuje vam da tražite uzorak unutar datoteka. Ako se podudara ako ga pronađete, grep će ispisati retke koji sadrže navedeni uzorak.
Na Grep korisničkom priručniku za korisnike možete saznati više o Grepu.
grep terminalOmogućite brz pristup omiljenim mapama, programima i drugim datotekama s desnim klikom kontekstnog izbornika. Više se ne morate kretati strukturama mapa istraživača da biste pristupili dosjeima i datotekama često korištenih mapa.

Koristio sam mapu FolderGuide za pristup mojim omiljenim mapama klikom na radnoj površini. No, nakon što su kupili novi laptop x64 Windows, ustanovili su da ne radi na 64-bitnom sustavu Windows. Gledajući malo oko sebe, došla sam do
S jedne strane život se lakše rješava različitim internetskim portalima i platformama za pohranu oblaka koji izgledaju vrlo obećavajuće što se tiče lako pristupa datotekama zabrinut. Ali, s druge strane, doista dolazi do preuzimanja vremena kad morate upravljati različitim datotekama na različitim platformama, zapamtiti lozinke i upravljati datotekama s deset različitih formata. Što ako postoji softver koji vam omogućava sinkronizaciju svih tih formata datoteka, povezujući ih na jednu platformu,

F-Secure Younited
Chown naredba u Linuxu (vlasništvo nad datotekama)

Naredba chown omogućuje vam da promijenite vlasništvo korisnika i / ili grupe u datoj datoteci, direktorijumu ili simboličkoj vezi. U ovom tutoriju ćemo vam pokazati kako koristiti naredbu chown kroz praktične primjere.