Kuinka etsiä Linux-terminaalissa ja löytää mitä tahansa nopeasti

Kuinka etsiä Linux-terminaalissa ja löytää mitä tahansa nopeasti
Indeksi
  1. Hakuteksti tiedostoissa grepillä
    1. Yhdistä grep muiden komentojen kanssa
  2. grep vs ripgrep: Erot ja käyttöönottovinkkejä
  3. Tiedostojen ja hakemistojen löytäminen find-komennolla
  4. Vuorovaikutteinen haku fzf:llä
  5. Älykäs tiedostosuodatus ack:llä
  6. Loppupohdinnat

Linuxin terminaalissa voit tehokkaasti etsiä tietoja käyttämällä erilaisia komentoja, kuten grep, find, fzf ja ack. Nämä työkalut nopeuttavat tiedostojen ja tekstin hakua huomattavasti.

Terminaali on hyvä paikka tehtävien suorittamiseen, ja yksi tehtävä, jonka ajattelen olevan nopeampi suorittaa terminaalissa kuin graafisessa käyttöliittymässä, on terminaalipohjainen haku. Käyttämällä useita Linux-komentoja voit helposti ja nopeasti löytää mitä tahansa ilman, että sinun tarvitsee kaivella tiedostojen ja kansioiden kautta graafisessa tiedostonhallinnassa. Tutustutaanpa siihen, kuinka voit etsiä Linuxin terminaalista ja löytää etsimäsi.

Hakuteksti tiedostoissa grepillä

Jos opit vain yhden hakukomenton, tee siitä grep. Nimi tarkoittaa Global Regular Expression Print, ja sen tehtävä on yksinkertainen: etsiä tiedostoista spesifisiä tekstimalleja. Se on esiasennettuna useimmissa Linux- (ja macOS) järjestelmissä.

Syntaksi on yksinkertainen, sinun tarvitsee vain käyttää grep-komentoa yhdessä haluamasi hakumallin kanssa. Esimerkiksi, jos haluat löytää jokaisen rivin, jossa mainitaan virhe tiedostossa, voit tehdä sen näin:

grep "error" fileserver.log

Se tulostaa jokaisen rivin, joka sisältää sanan virhe. Jos haluat jättää huomioimatta isot ja pienet kirjaimet (jotta se vastaa myös Error, ERROR jne.), lisää vain -i -lipuke näin:

grep -i "error" fileserver.log

Jos et ole varma, missä tiedosto on, ja haluat etsiä koko hakemistosta, käytä -r (rekursiivinen) vaihtoehtoa:

grep -r "TODO"

Tämä käy läpi jokaisen tiedoston nykyisessä kansiossa ja kaikissa alikansioissa etsiessään sanaa “TODO”.

Joskus haluat nähdä kaiken muun paitsi hakutermisi. -v -lipuke kääntää haun, näyttäen vain rivit, jotka eivät vastaa. Tämä on loistava tapa suodattaa pois häly ääniä lokitiedostoista.

grep -v "DEBUG" app.log

Tämä näyttää minulle kaiken, mikä ei ole virheenkorjausviesti.

Yhdistä grep muiden komentojen kanssa

Voit myös yhdistää grep:iä muiden komentojen kanssa. Esimerkiksi voit putkittaa (käyttäen | symbolia) yhden komennon tuloksen suoraan toiseen. Tämä antaa sinun ketjuttaa komentoja. Oletetaan, että haluat nähdä kaikki SSH-prosessit, jotka pyörivät järjestelmässäsi. Voit listata kaikki prosessit ja putkittaa tämän valtavan luettelon grep:iin näin:

ps aux | grep "ssh"

ps aux -komento saattaa listata 300 prosessia, mutta grep suodattaa sen vain yhteen tai kahteen, joista todella välität. Voit käyttää tätä mihin tahansa.

grep tukee myös säännöllisiä lausekkeita, joilla voit etsiä monimutkaisempia kuvioita. Voit etsiä asioita kuten jokaisen rivin, joka alkaa numerolla, tai sähköpostiosoitteita tai puhelinnumeroita tietyssä muodossa. Esimerkiksi löytääksesi rivit, jotka alkavat numerolla, käytä tätä:

grep "^[0-9]" file.txt

Oppimiskäyrä on täällä jyrkempi, mutta tuotto on valtava.

grep vs ripgrep: Erot ja käyttöönottovinkkejä

Tiedät jo, kuinka hyödyllinen grep on tekstin etsimisessä tiedostoista, mutta on olemassa nopeampi ja moderneimpi vaihtoehto nimeltä ripgrep (rg). Se toimii lähes samalla tavalla kuin grep, mutta tarjoaa paljon paremman suorituskyvyn ja kätevämmät oletusasetukset.

Pääasiallinen ero on nopeudessa. Kun grep käsittelee tiedostoja peräkkäin, ripgrep sisältää optimointeja (mukaan lukien monisäikeisyys ja epäolennaisten tiedostojen ohittaminen), mikä tekee siitä usein paljon nopeamman. Suurissa projekteissa haku, joka vie grepiltä 30 sekuntia, voi päättyä alle yhdessä ripgrepin avulla. Se on kirjoitettu Rust-kielellä ja optimoitu suurten hakemistojen tehokkaaseen käsittelyyn.

Toisin kuin grep, ripgrep ei ole esiasennettuna. Sinun on asennettava se järjestelmääsi pakettihallinnan avulla. Esimerkiksi Ubuntu/Debianilla käytä tätä:

sudo apt install ripgrep

Kun olet asentanut sen, käytät sitä lähes täsmälleen samalla tavalla kuin grep:

rg "TODO"

Tämä komento etsii kaikki tiedostot nykyisessä kansiossa ja sen alikansioissa. ripgrep ohittaa automaattisesti piilotetut tiedostot, .git-kansiot ja binääritiedostot, joten näet vain merkitykselliset tulokset. Se näyttää myös rivinumerot ja värilliset korostukset oletuksena.

Lyhyesti sanottuna, molemmat.

Työkalut tekevät samaa työtä, mutta ripgrep on nopeampi ja kätevämpi päivittäisessä käytössä, erityisesti suurissa projekteissa. Kuitenkin, grep on yhä hyödyllinen, kun olet järjestelmissä, joihin et voi asentaa uutta ohjelmistoa tai kun tarvitset työkalua, joka on saatavilla kaikkialla oletuksena.

Tiedostojen ja hakemistojen löytäminen find-komennolla

Vaikka grep auttaa etsimään tiedostojen sisältä, find-komento auttaa sinua paikallistamaan tiedostot ja kansiot itse. Se on työkalu, jota käytetään, kun tiedät etsimäsi nimen tai tyypin, mutta et sen sijaintia. Voit etsiä nimen, koon, muokkausajan, käyttöoikeudet, tiedostotyypin ja oikeastaan minkä tahansa attribuutin mukaan, jota voit ajatella.

Perussynntaksin muoto on seuraava:

find /polku -name "tiedostonimi"

Tämä komento kertoo findille, että sen tulisi aloittaa haku annetusta polusta ja etsiä tiedostoja, jotka vastaavat määriteltyä nimeä. Esimerkiksi, jos yrität löytää puuttuvaa konfigurointitiedostoa, suorita:

find /etc -name "config.json"

Oletuksena -name on kirjainkoon huomioiva. Jos et ole varma isoista ja pienistä kirjaimista, voit käyttää -iname -optiota, joka ei huomioi kirjainkokoa:

find . -iname "readme.md"

Piste (.) tarkoittaa, että aloitetaan nykyisestä hakemistosta. find voi tehdä paljon enemmän kuin vain nimipohjaisia hakuja. Voit suodattaa tuloksia sen mukaan, milloin tiedostoja on viimeksi muokattu, mikä on kätevää lokien tai varmuuskopioiden siivoamisessa. Esimerkiksi, tämä komento listaa kaikki lokitiedostot, jotka on muutettu viimeisten kolmen päivän aikana:

find /var/log -name "*.log" -mtime -3

Tähti toimii jokerimerkkinä, joka vastaa mitä tahansa merkkiä. Voit myös käyttää sitä jäljittääksesi suuria tiedostoja, jotka saattavat täyttää levytilasi.

Vuorovaikutteinen haku fzf:llä

fzf tarkoittaa epätarkkaa etsintää, ja se on käytännössä vuorovaikutteinen hakutyökalu terminaalillesi. Se on epätarkka suodatin, johon voit ohjata asioita. Se antaa sinulle erittäin nopean, kirjoittaessasi päivittyvän hakupalkin mille tahansa listalle. Sinun ei myöskään tarvitse olla täsmällinen; jos etsit "react_component.js", voit vain kirjoittaa rctjs ja fzf ymmärtää, mitä tarkoitat.

Käyttääksesi sitä, sinun täytyy asentaa se järjestelmääsi käyttöpakettisi avulla. Ubuntu/Debianilla suorita tämä:

sudo apt install fzf

Kun se on asennettu, yksinkertaisin tapa käyttää fzf:ää on vain kirjoittaa:

fzf

Saat heti haettavan listan tiedostoista nykyisessä kansiossasi. Kun kirjoitat, se suodattaa tuloksia reaaliajassa. Voit navigoida nuolinäppäimillä ja painaa Enter valitaksesi yhden.

Voit myös yhdistää sen find-komentoon. Esimerkiksi:

find . -type f | fzf

Tämä antaa sinun valita tiedoston vuorovaikutteisesti findin tuottamasta listasta.

Voit jopa käyttää sitä etsiäksesi komentoja historiastasi:

history | fzf

Tämä antaa sinun vuorovaikuttaa komento-historiasi kanssa. Voit helposti löytää komennon, jonka ajoit kolme päivää sitten, mutta et oikein muista. Kirjoita muutama kirjain, löydä se, paina Enter, ja se on valmis suoritettavaksi.

Älykäs tiedostosuodatus ack:llä

ack on samanlainen kuin grep, mutta se on suunniteltu erityisesti koodin hakemiseen. Se ohittaa automaattisesti irrelevantit tiedostot (kuten binäärit, lokit tai versionhallintakansiot), mikä tekee siitä täydellisen kehittäjille. Se ei ole oletuksena saatavilla, sinun täytyy asentaa se järjestelmääsi. Esimerkiksi, jos käytät Ubuntu, suorita tämä:

sudo apt install ack

Kun se on asennettu, voit käyttää sitä etsiäksesi mitä tahansa. Esimerkiksi, etsiäksesi funktio määrittelyn Python-tiedostoista, käytä:

ack --python "def my_function"

Haluatko löytää jokaisen TODO-kommentin projektistasi? Suorita:

ack "TODO"

Case-insensitiivinen haku rivinumeroiden kanssa, suorita:

ack -i -n "config"

Lisäksi ack tuntee jo yleiset tiedostotyypit. Voit rajata haun vain JavaScript-, Python- tai Markdown-tiedostoihin käyttämällä lippuja, kuten --js tai --python.

Aikanaan ennen ripgrepin saapumista, ack oli kehittäjien ensisijainen työkalu. Nyt ripgrep on nopeampi, mutta ackilla on yhä viehätys luettavassa tulosteessa ja kehittäjäystävällisessä suodatuksessa.

Loppupohdinnat

Linux-terminaali saattaa aluksi tuntua pelottavalta, mutta kun alat käyttää näitä hakutyökaluja, siitä tulee osa päivittäistä työskentelytapaasi. Kun tunnet olosi mukavaksi niiden kanssa, voit myös luoda aliaksia shelliisi, jotta sinun ei tarvitse muistaa pitkiä komentoja.

Nyt kun olet lukenut Kuinka etsiä Linux-terminaalissa ja löytää mitä tahansa nopeasti loppuun, kutsumme sinut tutustumaan lisää Linux-kategoriaan. Löydät sieltä muita mielenkiintoisia artikkeleita, jotka laajentavat tietojasi ja pitävät sinut ajan tasalla. Älä lopeta lukemista ja löytämistä!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Go up