Komanda Linux Locate për fillestarët (8 shembuj)


Megjithëse komanda find është padyshim një nga shërbimet më të njohura dhe më të fuqishme të linjës së komandës për kërkimin e skedarëve në Linux, ajo nuk është mjaft e shpejtë për situatat ku keni nevojë për rezultate të menjëhershme. Nëse dëshironi të kërkoni për një skedar në sistemin tuaj nga linja e komandës dhe shpejtësia është përparësia juaj kryesore, ekziston një komandë tjetër që mund të përdorni: Locate.

Në këtë tutorial, ne do të shpjegojmë komandën locate me shembuj të lehtë për t'u kuptuar. Ju lutemi vini re se të gjitha udhëzimet/shembuj të përmendur këtu janë testuar në Ubuntu 22.04 LTS dhe vendndodhja që përdorim është versioni 4.8.0.

1. Instaloni komandën locate

Komanda locate nuk vjen e parainstaluar në Ubuntu dhe Debian Linux. Mund ta instaloni duke përdorur këtë komandë:

sudo apt install locate

Locate bën kërkimin e tij të skedarit bazuar në një bazë të dhënash të parapërpiluar të emrave të skedarit, gjë që e bën atë shumë më të shpejtë se p.sh. komandën find kur bëni kërkime të mëvonshme. Por përpara se ta përdorim atë, do të duhet të krijojmë dhe përditësojmë bazën e të dhënave të skedarëve. Ekzekutoni komandën e mëposhtme për të krijuar bazën e të dhënave të lokalizimit:

sudo updatedb

Tani jemi gati të fillojmë të përdorim vendndodhjen.

2. Si të përdorni komandën locate në Linux

Komanda locate është shumë e lehtë për t'u përdorur. Gjithçka që duhet të bëni është të kaloni emrin e skedarit që dëshironi të kërkoni.

locate [filename]

Për shembull, nëse dëshironi të kërkoni për të gjithë emrat e skedarëve që kanë vargun dir2 në to, atëherë mund ta bëj këtë duke përdorur locate në mënyrën e mëposhtme:

Shënim: Komanda locate dir2 (pa yllza) do të veprojë gjithashtu pasi locate zëvendëson në mënyrë implicite emrin që kaloni (thoni NAME) me *NAME*.

3. Si funksionon komanda locate, ose pse është kaq e shpejtë

Arsyeja pse lokalizimi është kaq i shpejtë është sepse nuk lexon sistemin e skedarëve për emrin e skedarit ose drejtorisë së kërkuar. Në fakt i referohet një baze të dhënash (të përgatitur nga komanda updatedb) për të gjetur atë që përdoruesi kërkon dhe bazuar në atë kërkim, prodhon rezultatin e tij.

Edhe pse kjo është një qasje e mirë, ajo ka pjesën e saj të disavantazheve. Çështja kryesore është se pasi të krijohet çdo skedar ose drejtori i ri në sistem, duhet të përditësoni bazën e të dhënave të veglave që ai të funksionojë siç duhet. Përndryshe, komanda nuk do të jetë në gjendje të gjejë skedarë/drejtori që janë krijuar pas përditësimit të fundit të bazës së të dhënave.

Për shembull, nëse përpiqem të gjej skedarë me emra që përmbajnë vargun e kërkimit në direktorinë Shkarkime të sistemit tim, komanda gjeni prodhon një rezultat në dalje:

Por kur përpiqem të kryej të njëjtin kërkim duke përdorur komandën locate, ai nuk prodhon asnjë dalje.

Kjo do të thotë që kërkimet e vendndodhjes së bazës së të dhënave nuk u përditësuan pasi skedari u krijua në sistem. Pra, le të përditësojmë bazën e të dhënave, gjë që mund të bëhet duke përdorur komandën updatedb. Ja si e bëni këtë:

sudo updatedb

Dhe tani kur ekzekutoj përsëri të njëjtën komandë locate, ajo tregon skedarët në dalje:

Në mënyrë të ngjashme, pasi të jetë hequr një skedar ose drejtori, duhet të siguroheni që baza e të dhënave të lokalizimit të jetë përditësuar, pasi në të kundërt komanda do të vazhdojë të tregojë skedarin në daljen e tij kur kërkohet.

4. Si të bëni vendndodhjen të printoni numrin ose numrin e hyrjeve që përputhen në dalje

Siç e kemi parë, komanda locate prodhon emrin e skedarëve të përputhur së bashku me shtigjet e tyre të plota ose absolute në dalje. Por nëse dëshironi, mund ta bëni mjetin të fshijë të gjithë këtë informacion dhe në vend të kësaj thjesht të printojë numrin ose numrin e hyrjeve që përputhen. Kjo mund të bëhet duke përdorur opsionin e linjës së komandës -c.

5. Si të detyroni vendndodhjen të printojë vetëm ato hyrje që korrespondojnë me skedarët ekzistues

Siç kemi diskutuar më herët në këtë artikull, nëse një skedar hiqet nga sistemi, atëherë derisa të përditësoni përsëri bazën e të dhënave të lokalizimit, komanda do të vazhdojë të tregojë atë emër skedari në dalje. Për këtë rast specifik, megjithatë, mund të anashkaloni përditësimin e bazës së të dhënave dhe të keni ende rezultate të sakta në dalje duke përdorur opsionin e linjës së komandës -e.

Për shembull, unë hoqa skedarin filetosearch.txt nga sistemi im. Kjo u konfirmua nga komanda find, e cila nuk ishte më në gjendje të kërkonte skedarin:

Por kur kryeva të njëjtin operacion duke përdorur vendndodhjen, ai ende po shfaqte skedarin në dalje:

Dhe ne e dimë pse - sepse baza e të dhënave të vendndodhjes nuk u përditësua pasi skedari u fshi. Megjithatë, duke përdorur opsionin -e e bëri mashtrimin:

Ja çfarë thotë faqja locate man për këtë opsion: \Printo vetëm hyrjet që i referohen skedarëve ekzistues në momentin e ekzekutimit të vendndodhjes.\

6. Si të bëni vendndodhjen e injoruar dallimet e rasteve

Si parazgjedhje, operacioni i kërkimit që kryen komanda locate është i ndjeshëm ndaj shkronjave të vogla. Por ju mund ta detyroni mjetin të injorojë dallimet e rasteve duke përdorur opsionin e linjës së komandës -i.

Për shembull, unë kam dy skedarë në sistemin tim, të quajtur newfiletosearch.txt dhe NEWFILETOSEARCH.txt. Pra, siç mund ta shihni, emrat e skedarëve janë të njëjtë, vetëm se rastet e tyre janë të ndryshme. Nëse kërkoni locate të kërkoni, le të themi, \*tosearch*\, atëherë ai do të tregojë vetëm emrin e vogël në daljen e tij:

Por përdorimi i opsionit të linjës së komandës -i detyron komandën të injorojë rastin, dhe të dy emrat e skedarëve prodhohen në dalje:

7. Si të veçohen hyrjet në dalje me ASCII NUL

Si parazgjedhje, hyrjet e daljes që prodhon komanda locate ndahen duke përdorur linjën e re ( ) karakter. Por nëse dëshironi, mund të ndryshoni ndarësin dhe të keni ASCII NUL në vend të një rreshti të ri. Kjo mund të bëhet duke përdorur opsionin e linjës së komandës -0.

Për shembull, Ive ekzekutoi të njëjtën komandë që përdorëm në seksionin e fundit më lart, por shtoi opsionin e linjës së komandës -0:

Kështu që ju mund të shihni se ndarësi i linjës së re nuk është më aty - ai është zëvendësuar me NUL.

8. Si të shikoni informacionin rreth bazës së të dhënave të lokalizimit

Në rast se dëshironi të dini se cili vendndodhje e bazës së të dhënave po përdor, si dhe statistika të tjera rreth bazës së të dhënave, përdorni opsionin e linjës së komandës -S.

9. Si të kërkoni për një emër të saktë skedari duke përdorur locate

Si parazgjedhje, kur kërkoni për një emër skedari duke përdorur vendndodhjen, atëherë emri që kaloni - të themi EMRI - zëvendësohet në mënyrë implicite nga *EMRI*. Për shembull, nëse kërkoj për një skedar testimi të emrit të skedarit, atëherë të gjithë emrat që përputhen me *testfile* prodhohen në dalje:

Por, çka nëse kërkesa është të kërkoni skedarë me emra që përputhen saktësisht me skedarin testues? Epo, në këtë rast, duhet të përdorni shprehje të rregullta, të cilat mund të aktivizohen duke përdorur opsionin e linjës së komandës -r. Pra, ja se si mund të kërkoni vetëm testfile duke përdorur shprehje të rregullta:

locate -r /testfile$

Nëse jeni i ri në shprehjet e rregullta, drejtojeni komandën cd të shell.

konkluzioni

Locate ofron shumë më tepër opsione, por ato që diskutuam këtu duhet të jenë të mjaftueshme për t'ju dhënë një ide bazë për shërbimin e linjës së komandës, si dhe për t'ju nisur. Ne do t'ju këshillonim të provoni të gjitha opsionet e përshkruara këtu në kompjuterin tuaj Linux dhe më pas të kaloni te të tjerët që mund t'i gjeni në faqen e manualit të veglave.

Në rast të ndonjë dyshimi apo pyetjeje, ju lutemi mos ngurroni të shkruani në një koment.