Si të përdorni të gjitha komandat e kërkimit të Linux
Linux ofron gjashtë mënyra të ndryshme për të kërkuar, dhe secila ka meritat e veta. Ne do të demonstrojmë se si të përdorim find
, locate
, cila
, whereis
, whatis
, dhe apropos
. Secili shkëlqen në detyra të ndryshme; ja se si të zgjidhni mjetin e duhur për këtë punë.
Ju jeni të llastuar për zgjedhjen kur bëhet fjalë për komandat për kërkimin dhe gjetjen në Linux. Pse kaq shumë? Epo, secili ka specialitetet e veta dhe performon më mirë se të tjerët në rrethana të caktuara. Mund t'i mendoni si një lloj thike të ushtrisë zvicerane për kërkim. Ne do të shikojmë secilën teh me radhë dhe do të zbulojmë pikat e forta të saj të veçanta.
Komanda e gjetjes
Sjellja e komandës find
është e vështirë të përcaktohet me provë dhe gabim. Pasi të kuptoni sintaksën, filloni të vlerësoni fleksibilitetin dhe fuqinë e saj.
Mënyra më e thjeshtë për të përdorur find
është thjesht të shkruani find
dhe të shtypni enter.
find
Përdorur në këtë mënyrë find
sillet si ls
, por rendit të gjithë skedarët në drejtorinë aktuale dhe ato në nëndrejtori.
Disa zbatime të find
kërkojnë që ju të vendosni .
për drejtorinë aktuale. Nëse ky është rasti me versionin tuaj të Linux, përdorni komandën e mëposhtme:
find .
Për të pasur kërkimin find
nga dosja rrënjë, do të përdorni këtë komandë:
find /
Për të filluar kërkimin nga dosja juaj kryesore, përdorni këtë komandë:
find ~
Duke përdorur find With File Patterns
Që find
të jetë diçka më shumë se një version automatik i përsëritur i ls
, ne duhet t'i ofrojmë asaj diçka për të kërkuar. Ne mund të ofrojmë emra skedarësh ose modele skedarësh. Modelet përdorin karaktere ku *
do të thotë ndonjë varg karakteresh dhe ?
do të thotë ndonjë karakter të vetëm.
Modelet duhet të citohen për të punuar si duhet. Është e lehtë të harrosh ta bësh këtë, por nëse nuk e citon modelin e karakterit të egër find
nuk do të jetë në gjendje të zbatojë siç duhet komandën që i ke dhënë.
Me këtë komandë, ne do të kërkojmë në dosjen aktuale për skedarë që përputhen me modelin *.*s. Kjo do të thotë çdo emër skedari që ka një shtesë skedari që përfundon me s. Ne përdorim opsionin -name
për t'i thënë find
që ose po kalojmë në një emër skedari ose një model emri skedari.
find . -name "*.*s"
find
i kthen këto skedarë që përputhen.
Vini re se dy nga shtesat e skedarëve janë dy karaktere dhe njëra është tre karaktere. Kjo ndodh sepse kemi përdorur modelin *.*s. Nëse do të dëshironim vetëm dy shtesat e skedarëve të karaktereve, do të kishim përdorur *.?s.
Nëse do ta dinim paraprakisht se po kërkonim skedarë JavaScript “.js”, mund të kishim qenë më specifik në modelin tonë të skedarëve. Gjithashtu, vini re se mund të përdorni thonjëza të vetme për të mbështjellë modelin nëse dëshironi.
find . -name '*.js'
Këtë herë gjeni
raporton vetëm në skedarët JavaScript.
Injorimi i rastit me gjetje
Nëse e dini emrin e skedarit që dëshironi të gjeni find
, mund ta kaloni atë te find
në vend të një modeli. Ju nuk keni nevojë ta mbështillni emrin e skedarit me thonjëza nëse nuk ka karaktere të egra në të, por është praktikë e mirë ta bëni këtë gjatë gjithë kohës. Të bësh këtë do të thotë që nuk do të harroni t'i përdorni ato kur keni nevojë për to.
find . -name 'Yelp.js'
Kjo nuk ktheu asgjë. Por është e çuditshme, ne e dimë se skedari duhet të jetë aty. Le të provojmë përsëri dhe t'i themi find
të shpërfillë shkronjat e vogla. Ne e bëjmë këtë duke përdorur opsionin -iname
(injoroni emrin e rastit)
find. -iname 'Yelp.js'
Ky ishte problemi, emri i skedarit fillon me një y të vogël dhe ne po kërkonim me një Y të madhe.
Nëndirektoritë e përsëritura me gjetje
Një gjë e mrekullueshme për gjeni
është mënyra se si kërkon në mënyrë rekursive nëpër nëndrejtori. Le të kërkojmë për çdo skedar që fillon me hartë.
find . -name "map*.*"
Skedarët që përputhen janë renditur. Vini re se të gjitha janë në një nëndrejtori.
Kërkimi i drejtorive me find
Opsioni -path
bën që find
të kërkojë direktori. Le të kërkojmë një drejtori që nuk mund ta mbajmë mend plotësisht emrin, por e dimë që përfundon me shkronjat rreth.
find . -path '*about'
Drejtoria është gjetur, ajo thjesht quhet rreth dhe është e vendosur brenda një drejtorie tjetër brenda drejtorisë aktuale.
Ekziston një opsion -ipath
(injoro shtegun e rastit) që të lejon të kërkosh shtigje dhe të shpërfillësh shkronjat, të ngjashme me opsionin –iname
të diskutuar më sipër.
Përdorimi i atributeve të skedarit me gjetjen
gjeni
mund të kërkojë skedarë që kanë atribute që përputhen me çelësin e kërkimit. Për shembull, mund të kërkoni për skedarë që janë bosh duke përdorur opsionin -empty
, pavarësisht se si quhen.
find . -empty
Çdo skedar me gjatësi zero bajt do të renditet në rezultatet e kërkimit.
Opsioni -ekzekutueshëm
do të gjejë çdo skedar që mund të ekzekutohet, si p.sh. një program ose një skript.
find . -executable
Rezultatet listojnë një skedar të quajtur fix_aptget.sh.
Ato përmbajnë gjithashtu tre drejtori, duke përfshirë '.', drejtorinë aktuale. Drejtoritë përfshihen në rezultate sepse biti i ekzekutimit është vendosur në lejet e skedarëve të tyre. Pa këtë, ju nuk do të mund të ndryshonit në (drejtuar) ato drejtori.
Opsioni i tipit
Opsioni -type
ju lejon të kërkoni për llojin e objektit që kërkoni. Ne do të ofrojmë treguesin e tipit f si parametër për opsionin -type
sepse duam që find
të kërkojë vetëm skedarë.
find . executable -type f
Këtë herë nëndirektoritë nuk janë të listuara. Skedari i skriptit të ekzekutueshëm është i vetmi artikull në rezultate.
Mund të kërkojmë gjithashtu që find
të përfshijë vetëm drejtoritë në rezultate. Për të renditur të gjitha drejtoritë, mund të përdorim opsionin -type
me treguesin e tipit “d”.
find . type -d
Vetëm drejtoritë dhe nëndrejtoritë janë të listuara në rezultate.
Përdorimi i komandave të tjera me find
Mund të kryeni disa veprime shtesë në skedarët që gjenden. Ju mund t'i kaloni skedarët, nga ana tjetër, në një komandë tjetër.
Nëse duhet të sigurohemi që nuk ka skedarë të ekzekutueshëm në drejtorinë dhe nëndrejtoritë aktuale, mund të përdorim komandën e mëposhtme:
find . -name "fix_aptget.sh" -exec chmod -x '{}' \;
Komanda do të thotë:
- Kërko në drejtorinë aktuale për një objekt të emërtuar të quajtur fix_aptget.sh.
- Nëse gjendet, ekzekutoni komandën
chmod
. - Parametrat që i kalohen
chmod
janë-x
për të hequr lejet e ekzekutueshme dhe{}
që përfaqëson emrin e skedarit të skedarit të gjetur. - Pikëpresja përfundimtare shënon fundin e parametrave që do të kalojnë te
chmod
. Kjo duhet të 'shpëtohet' duke e paraprirë me një vijë të prapme '\'.
Pasi të jetë ekzekutuar kjo komandë, ne mund të kërkojmë skedarë të ekzekutueshëm si më parë, dhe këtë herë nuk do të ketë asnjë skedar të listuar.
Për të përhapur rrjetin tonë më të gjerë, ne mund të përdorim një model skedari në vend të emrit të skedarit që kemi përdorur në shembullin tonë.
Ky fleksibilitet ju lejon të kërkoni për lloje të specifikuara skedarësh ose me modele të emrave të skedarëve dhe të kryeni disa veprime në skedarët që përputhen.
Find ka shumë opsione të tjera, duke përfshirë kërkimin e skedarëve sipas datës së modifikimit të tyre, skedarë në pronësi të një përdoruesi ose grupi, skedarë që janë të lexueshëm ose skedarë që kanë një grup të caktuar lejesh skedarësh.
Komandat Locate And mlocate
Shumë shpërndarje Linux më parë kishin një kopje të locate
të përfshirë me to. Kjo u zëvendësua nga komanda mlocate
, e cila ishte një version i përmirësuar dhe i përditësuar i locate
.
Kur mlocate
është i instaluar në një sistem, ai modifikon komandën locate
në mënyrë që të përdorni në të vërtetë mlocate
edhe nëse shkruani locate
.
Versionet aktuale të Ubuntu, Fedora dhe Manjaro u kontrolluan për të parë nëse ata kishin versione të këtyre komandave të para-instaluara në to. Ubuntu dhe Fedora përfshinin të dyja mlocate.
Duhej të instalohej në Manjaro, me këtë komandë:
sudo pacman -Syu mlocate
Në Ubuntu, ju mund të përdorni vendndodhjen dhe mlocate
në mënyrë të ndërsjellë. Në Fedora dhe Manjaro duhet të shkruani locate
, por komanda ekzekutohet për ju nga mlocate
.
Nëse përdorni opsionin --version
me locate
do të shihni se komanda që përgjigjet është në të vërtetë mlocate
.
locate --version
Për shkak se locate
funksionon në të gjitha shpërndarjet Linux që u testuan, ne do të përdorim locate
në shpjegimet tona më poshtë. Dhe është një shkronjë më pak për të shtypur.
Gjeni bazën e të dhënave
Avantazhi më i madh që ka locate
është shpejtësia.
Kur përdorni komandën gjeni
, ajo shuhet dhe kryen një kërkim në sistemin tuaj të skedarëve. Komanda locate
funksionon shumë ndryshe. Ai bën një kërkim të bazës së të dhënave për të përcaktuar nëse ajo që po kërkoni është në kompjuterin tuaj. Kjo e bën kërkimin shumë më të shpejtë.
Sigurisht, ajo ngre një pyetje të qartë në lidhje me bazën e të dhënave. Çfarë siguron që baza e të dhënave të jetë e përditësuar? Kur mlocate
është i instaluar, ai (zakonisht) vendos një hyrje në cron.daily
. Kjo funksionon çdo ditë (shumë herët në mëngjes) dhe përditëson bazën e të dhënave.
Për të kontrolluar nëse kjo hyrje ekziston, përdorni këtë komandë:
ls /etc/cron.daily/*loc*
Nëse nuk gjeni një hyrje atje, mund të vendosni një detyrë të automatizuar për ta bërë këtë për ju në kohën që zgjidhni.
Po sikur kompjuteri juaj të mos jetë i ndezur në kohën kur baza e të dhënave supozohet të përditësohet? Ju mund të ekzekutoni manualisht procesin e përditësimit të bazës së të dhënave me komandën e mëposhtme:
sudo updatedb
Duke përdorur vendndodhjen
Le të kërkojmë skedarë që përmbajnë vargun getlatlong. Me vendndodhjen, kërkimi automatikisht kërkon çdo përputhje që përmban termin e kërkimit kudo në emrin e skedarit, kështu që nuk ka nevojë të përdorni shkronja të ngurta.
locate getlatlong
Është e vështirë të transmetosh shpejtësinë në një pamje të ekranit, por pothuajse menjëherë skedarët që përputhen renditen për ne.
Duke treguar se sa rezultate dëshironi
Ndonjëherë mund të dini se ka shumë skedarë të llojit që kërkoni. Ju duhet të shihni vetëm disa prej tyre. Ndoshta thjesht dëshironi t'ju kujtohet se në cilën direktori ndodhen dhe nuk keni nevojë të shihni të gjithë emrat e skedarëve.
Duke përdorur opsionin -n
(numri) mund të kufizoni numrin e rezultateve që loko
do t'ju kthejë. Në këtë komandë, ne kemi vendosur një kufi prej 10 rezultatesh.
locate .html -n 10
locate
përgjigjet duke renditur 10 emrat e parë të skedarëve që përputhen që merr nga baza e të dhënave.
Numërimi i skedarëve që përputhen
Nëse dëshironi të dini vetëm numrin e skedarëve që përputhen dhe nuk keni nevojë të dini se si quhen ose ku janë në hard diskun tuaj, përdorni opsionin -c (count).
locate -c .html
Pra, tani e dimë se ka 431 skedarë me shtesën “.html” në këtë kompjuter. Ndoshta duam t'i hedhim një sy, por menduam të hidhnim një vështrim dhe të shohim se sa ishin në fillim. Të armatosur me atë njohuri, ne e dimë se do të na duhet të kalojmë daljen përmes less
.
locate .html | less
Dhe ja ku janë të gjithë, ose të paktën, këtu është në krye të listës së gjatë të tyre.
Injorimi i rastit me vendndodhjen
-i
(injorimi i rastit) bën që locate
të bëjë pikërisht këtë, ai injoron dallimet me shkronja të mëdha dhe të vogla midis termit të kërkimit dhe emrave të skedarëve në bazën e të dhënave. Nëse përpiqemi të numërojmë përsëri skedarët HTML, por gabimisht sigurojmë termin e kërkimit me shkronja të mëdha, do të marrim zero rezultate.
locate -c .HTML
Duke përfshirë opsionin -i
, ne mund të bëjmë locate
të injorojë ndryshimin në rast dhe të kthejmë përgjigjen tonë të pritur për këtë makinë, e cila është 431.
locate -c -i .HTML
Gjeni statusin e bazës së të dhënave
Për të parë statusin e bazës së të dhënave, përdorni opsionin -s
(status). Kjo bën që locate
të kthejë disa statistika në lidhje me madhësinë dhe përmbajtjen e bazës së të dhënave.
locate -s
Cila Komanda
Komanda which
kërkon nëpër drejtoritë në rrugën tuaj dhe përpiqet të gjejë komandën që po kërkoni. Kjo ju lejon të përcaktoni se cili version i programit ose komandës do të ekzekutohet kur shkruani emrin e tij në vijën e komandës.
Imagjinoni që kishim një program të quajtur geoloc
. Ne e dimë se është i instaluar në kompjuter, por nuk e dimë se ku ndodhet. Duhet të jetë diku në shtegun sepse kur shkruajmë emrin e tij, ai funksionon. Ne mund të përdorim which
për ta gjetur atë me këtë komandë:
which geoloc
i cili
raporton se programi ndodhet në /usr/local/bin
.
Mund të kontrollojmë nëse ka ndonjë kopje tjetër të programit në vende të tjera brenda shtegut duke përdorur opsionin -a
(të gjitha).
which -a geoloc
Kjo na tregon se ne kemi programin geoloc
në dy vende.
Sigurisht, kopja në /usr/local/bin
do të gjendet së pari nga shell Bash çdo herë, kështu që të kesh programin në dy vende është e pakuptimtë.
Heqja e versionit në /usr/bin/geoloc
do t'ju kursejë pak nga kapaciteti i diskut. Më e rëndësishmja, do të shmangë gjithashtu problemet e krijuara nga dikush që përditëson manualisht programin dhe e bën atë në vendin e gabuar. Pastaj pyesin veten pse nuk i shohin përditësimet e reja kur ekzekutojnë programin.
Komanda ku është
Komanda whereis
është e ngjashme me komandën which
, por është më informuese.
Përveç vendndodhjes së skedarit të komandës ose programit, whereis
raporton gjithashtu se ku ndodhen faqet manuale (manual) dhe skedarët e kodit burimor. Në shumicën e rasteve, skedarët e kodit burimor nuk do të jenë në kompjuterin tuaj, por nëse janë, whereis
do të raportojë mbi to.
Ekzekutuesi binar, faqet e njeriut dhe kodi burim shpesh referohen si paketë për atë komandë. Nëse dëshironi të dini se ku ndodhen komponentët e ndryshëm të paketës për komandën diff
, përdorni komandën e mëposhtme:
whereis diff
whereis
përgjigjet duke renditur vendndodhjen e faqeve man diff
dhe skedarin binar diff
.
Për të kufizuar rezultatet për të treguar vetëm vendndodhjen e binarit (në fakt, bëni që whereis
të funksionojë si which
) përdorni -b
(binar) opsion.
whereis -b diff
whereis
raporton vetëm për vendndodhjen e skedarit të ekzekutueshëm.
Për të kufizuar kërkimin për të raportuar vetëm në faqet e njeriut, përdorni opsionin -m
(manual). Për të kufizuar kërkimin për të raportuar vetëm në skedarët e kodit burimor, përdorni opsionin -s
(burimi).
Për të parë vendndodhjet nëpër të cilat kërkon whereis
, përdorni opsionin -l
(lokacionet).
whereis -l
Vendndodhjet janë të listuara për ju.
Tani që ne e dimë se ku do të kërkojë vendndodhjet whereis
, ne mundemi, nëse zgjedhim, ta kufizojmë kërkimin në një vendndodhje të caktuar ose grup vendndodhjesh.
Opsioni -B
(lista binare) kufizon kërkimin e skedarëve të ekzekutueshëm në listën e shtigjeve të ofruara në vijën e komandës. Ju duhet të siguroni të paktën një vendndodhje për whereis
për të kërkuar. Opsioni -f
(file) përdoret për të sinjalizuar fundin e vendndodhjes së fundi fillimin e emrit të skedarit.
whereis -B /bin/ -f chmod
whereis
duket në vendin e vetëm ku kemi kërkuar të kërkojmë. Kjo ndodh të jetë vendi ku ndodhet skedari.
Mund të përdorni gjithashtu opsionin -M
(lista manuale) për të kufizuar kërkimet për faqet e njeriut në shtigjet që ofroni në vijën e komandës. Opsioni -S
(lista e burimeve) ju lejon të kufizoni kërkimin për skedarët e kodit burimor në të njëjtën mënyrë.
Çfarë është Komanda
Komanda whatis
përdoret për të kërkuar shpejt nëpër faqet e njeriut (manual). Ai ofron përshkrime përmbledhëse me një rresht të termit që i keni kërkuar të kërkojë.
Le të fillojmë me një shembull të thjeshtë. Megjithëse duket si pika fillestare e debatit të thellë filozofik, ne thjesht po pyesim whatis
për të na treguar se çfarë do të thotë termi njeri.
whatis man
whatis
gjen dy përshkrime që përputhen. Ai printon një përshkrim të shkurtër për çdo ndeshje. Ai gjithashtu rendit seksionin me numër të manualit që përmban çdo përshkrim të plotë.
Për të hapur manualin në seksionin që përshkruan komandën man
, përdorni komandën e mëposhtme:
man 1 man
Manuali hapet në seksionin man(1), në faqen për man
.
Për të hapur manualin në seksionin 7, në faqen që diskuton makrot që mund të përdorni për të gjeneruar faqet e njeriut, përdorni këtë komandë:
man 7 man
Për ju shfaqet faqja e njeriut për makrotë e njeriut.
Kërkimi në seksione të veçanta të manualit
Opsioni -s
(seksioni) përdoret për të kufizuar kërkimin në seksionet e manualit që ju intereson. Për të kufizuar kërkimin whatis
në seksionin 7 të manualit, përdorni komandën e mëposhtme. Vini re thonjëzat rreth numrit të seksionit:
whatis -s "7" man
Rezultatet i referohen vetëm seksionit 7 të manualit.
Përdorimi i whatis Me Wildcards
Ju mund të përdorni shkronja të këqija me whatis
. Ju duhet të përdorni opsionin -w
(wildcard) për ta bërë këtë.
whatis -w char*
Rezultatet që përputhen renditen në dritaren e terminalit.
Komanda e duhur
Komanda apropos
është e ngjashme me whatis
, por ka edhe disa zile dhe bilbila të tjera. Ai kërkon nëpër titujt e faqeve të njeriut dhe përshkrimet e një rreshti duke kërkuar termin e kërkimit. Ai liston përshkrimet e faqes së njeriut që përputhen në dritaren e terminalit.
Fjala apropos do të thotë lidhur me ose në lidhje, dhe komanda apropos
mori emrin e saj nga kjo. Për të kërkuar çdo gjë që lidhet me komandën grupet
, mund të përdorim këtë komandë:
apropos groups
apropos
liston rezultatet në dritaren e terminalit.
Përdorimi i më shumë se një termi kërkimi
Ju mund të përdorni më shumë se një term kërkimi në vijën e komandës. apropos
do të kërkojë për faqet e njeriut që përmbajnë njërin nga termat e kërkimit.
apropos chown chmod
Rezultatet janë renditur si më parë. Në këtë rast, ekziston një hyrje e vetme për secilin prej termave të kërkimit.
Përdorimi i ndeshjeve të sakta
apropos
do të kthejë faqet e njeriut që përmbajnë termin e kërkimit edhe nëse termi është në mes të një fjale tjetër. Për të bërë që apropos
të kthejë vetëm përputhje të sakta për termin e kërkimit, përdorni opsionin -e
(e saktë).
Për ta ilustruar këtë, ne do të përdorim apropos
me grep
si term kërkimi.
apropos grep
Ka shumë rezultate të kthyera për këtë, duke përfshirë shumë ku grep
është përfshirë në një fjalë tjetër, si bzfgrep
.
Le ta provojmë përsëri dhe të përdorim opsionin -e
(e saktë).
apropos -e grep
Kemi një rezultat të vetëm këtë herë, për atë që në fakt po kërkonim.
Përputhja e të gjitha termave të kërkimit
Siç e pamë më herët, nëse jepni më shumë se një term kërkimi, apropos
do të kërkojë për faqet e njeriut që përmbajnë njërin nga termat e kërkimit. Ne mund ta ndryshojmë atë sjellje duke përdorur opsionin -a
(dhe). Kjo bën që apropos
të zgjedhë vetëm ndeshjet që kanë të gjitha kohët e kërkimit në to.
Le të provojmë komandën pa opsionin -a
në mënyrë që të shohim se çfarë rezultatesh jep apropos
.
apropos crontab cron
Rezultatet përfshijnë faqet e njeriut që përputhen me njërin ose tjetrin nga termat e kërkimit.
Tani do të përdorim opsionin -a
.
apropos -a crontab cron
Këtë herë rezultatet ngushtohen në ato që përmbajnë të dy termat e kërkimit.
Akoma më shumë opsione
Të gjitha këto komanda kanë më shumë opsione - disa prej tyre shumë më tepër opsione - dhe ju inkurajoheni të lexoni faqet e njeriut për komandat që kemi diskutuar në këtë artikull.
Këtu është një përmbledhje e shpejtë për secilën komandë:
- gjeni: Ofron një aftësi kërkimi të pasur dhe të grimcuar për të kërkuar skedarë dhe drejtori.
- locate: Ofron një kërkim të shpejtë të drejtuar nga baza e të dhënave për programet dhe komandat.
- që: Kërkon PATH duke kërkuar skedarë të ekzekutueshëm
- whereis: Kërkon PATH në kërkim të skedarëve të ekzekutueshëm, faqeve të njeriut dhe skedarëve të kodit burimor.
- çfarë: Kërkon përshkrimet me një rresht të njeriut për përputhje me termin e kërkimit.
- apropos: Kërkon në faqen e njeriut me më shumë besnikëri se çfarë është, për përputhje me termin ose termat e kërkimit.
Po kërkoni më shumë informacione për terminalin Linux? Këtu janë 37 komanda që duhet të dini.