Introduksjon
hvor er
Lokaliser
hvilken
type
finne
Introduksjon
Det er fem filsøkekommandoer på Linux: whereis, locate, which, type, og find. Hver av dem har sine egne egenskaper og er designet for bestemte søkescenarier. Denne veiledningen vil introdusere deg til hver kommando og vise eksempler på bruk. For ytterligere lesing om noen av disse kommandoene, er det best å gå gjennom den aktuelle manpage.
whereis
Den whereiskommandoen brukes til å søke binære filer, kildekode, og den elektroniske manualsidene på flere standard installasjon kataloger for alle programnavnet spesifisert.
Fordi whereissøker ikke alle steder på systemet ditt, vil ingen filer fra disse spesifikke katalogene bli funnet. Av samme grunn vil du få søkeresultatet raskt, enten det er funnet eller ikke.
Den vil heller ikke søke etter kommandoene som er innebygd direkte i skallet.
Hvis du for eksempel vil finne informasjon om lskommandoen, kjør følgende kommando på terminalen din:
whereis ls
Du vil få tilbakemeldinger som:
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
I resultatet, /bin/lser binærfilen du vil finne, de to andre er manpages for lsprogrammet, ingen kildekode for lsprogrammet ble funnet.
Kopier /bin/lsfilen til hjemmekatalogen og til /usr/binkatalogen, og kjør whereiskommandoen på nytt:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
Som du ser, bare /bin/lsog /usr/bin/lsble funnet i søkeresultatet. Den lsprogrammet i hjemmekatalogen ble ikke funnet, fordi hjemmekatalogen er ikke en av dem som standard installere kataloger.
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Hvis du kjører følgende kommando:
whereis cd
Du vil se utdata som ligner på linjen nedenfor. Det var ingen binær fil ble oppdaget fordi cder en innebygd kommando av skallet.
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate
Den locatekommandoen brukes til å finne filer etter navn ved hjelp av en database ( /var/lib/mlocate/mlocate.db). Denne databasen er i utgangspunktet et øyeblikksbilde av oppsettet til filsystemet ditt. Alle poster i denne databasen som samsvarer med søket ditt vil bli oppført i søkeresultatet. Som standard vil locatekommandoen bruke søket ditt til å matche en hvilken som helst del av hele navnet på hver post, inkludert banenavnet. Derfor kan antallet samsvarende filer i søkeresultatet være mer enn du forventet.
Etter hvert som databasen blir utdatert, blir søkeresultatet for locatekommandoen mindre nøyaktig. Du kan legge merke til filer som ikke lenger eksisterer, eller du vil ikke se treff for nyopprettede filer. Som standard mlocate.dboppdateres databasen automatisk en gang om dagen. Du kan bruke updatedbkommandoen til å oppdatere den manuelt.
Fordi søket utføres på databasen i stedet for filsystemet, er søkehastigheten veldig høy.
Hvis du kjører følgende kommando:
locate ls
Du vil få mange poster i stedet for forventet resultat.
For å gjøre søkeresultatet mer nøyaktig, kan du bruke -bflagget til å begrense søkeområdet, ved å bruke søket ditt til å matche bare basenavnet til hver post:
locate -b "\ls"
Denne gangen vil du få plasseringen til hver fil nøyaktig kalt lspå filsystemet ditt:
/bin/ls
which
Den whichkommandoen vil søke etter kommandoen du har angitt i verdien av miljøvariabelen PATHog returnere det første resultatet som standard. Hvis du spør etter et alias, vil whichkommandoen bestemme den faktiske kommandoen for aliaset før du utfører søket.
Den whichkommandoen er også veldig fort på grunn av sin enkelhet.
Bruken av whichkommandoen er enkel:
which your_command
Hvis du vil vise alle de samsvarende kommandoene i stedet for den første, bruk -aflagget:
which -a your_command
Her er et eksempel for å søke etter en kommando som har fått alias:
which ll
Søkeresultatet vil være:
alias ll='ls -l --color=auto'
/bin/ls
type
Som standard vil typekommandoen indikere hvordan et kommandonavn vil bli tolket. Mulige resultater inkluderer et alias, et nøkkelord, en funksjon, en innebygd eller en fil. Akkurat som whereiskommandoen, vil typekommandoen bare søke i flere standard installasjonskataloger for å svare på spørsmålet ditt.
Noen eksempler for å skrive forskjellige kommandoer:
En innebygd skallkommando:
type cd
cd is a shell builtin
En binær fil på filsystemet:
type sudo
sudo is /usr/bin/sudo
Et alias:
type ls
ls is aliased to `ls --color=auto'
find
Blant de fem filsøkekommandoene introdusert i denne opplæringen, er findkommandoen den kraftigste. Det er også den tregeste. I motsetning til de andre fire kommandoene, vil findkommandoen faktisk søke etter filen din på hele filsystemet, en i-node etter en i-node. Med findkommandoen kan du bruke sofistikerte søkekriterier for å finne hver fil du trenger, til og med utføre handlinger på filene som ble funnet.
Søkekriterier for findkommandoen er for sofistikerte til å forklare i en så kort artikkel, her er noen eksempler i stedet.
Grunnleggende format for findkommandoen:
find [path] [option] [action]
For å finne alle filene i arbeidskatalogen og alle dens underkataloger:
find
For å finne en fil kalt aaai hjemmekatalogen din og alle underkatalogene:
find ~ -name 'aaa'
For å finne alle filene i filsystemet som ble endret i løpet av de siste 24 timene:
find / -mtime 0
For å finne alle filene i nettkatalogen og alle underkatalogene som tilhører brukeren nginx:
find /usr/share/nginx/html/ -user nginx
For å finne alle filene i arbeidskatalogen som har tillatelser 0744:
find -perm -0744
Slik finner du en fil med navnet aaai arbeidskatalogen og viser dens detaljerte informasjon:
find -name 'aaa' -exec ls -l {} \;