Linux which, whereis, locate: 3 commando's om de locatie (het pad) van een bestand te vinden

Affiliatemelding v3.1
Affiliatemelding v3.2 (mobiel)
TestomgevingRHEL-familieAlmaLinux 9.8root-accountGecontroleerd op 07-10-2026
Zoekcommando'swhichwhereislocate

Soms moet je httpd.conf aanpassen maar weet je niet waar het bestand staat, of bestaat een commando met dezelfde naam op twee plekken en weet je niet welke er draait. Het Linux-commando which vindt het bestand dat echt draait, het Linux-commando whereis vindt het uitvoerbare bestand plus configuratiemappen en handleidingen, en het commando locate vindt elk pad met de naam erin. Dit artikel vergelijkt de drie in een tabel, en je kunt ze uitproberen op een virtuele server in je browser.

Op AlmaLinux 9.8 zit which in het pakket which 2.21 en whereis in util-linux 2.37.4, dus beide werken meteen, terwijl locate het pakket mlocate 0.26 apart nodig heeft.

✅ which vs whereis vs locate

De drie commando's zoeken op verschillende plekken. which en whereis doorzoeken ter plekke vaste mappen, terwijl locate namen opzoekt in een vooraf gemaakte bestandslijst (DB).

CommandoWat het vindtWaar het zoektNieuwe bestanden
whichHet ene commandobestand dat draait, plus aliassenMappen die in PATH staanDirect gevonden
whereisUitvoerbaar bestand · configuratiemappen · handleidingenVaste mappen zoals /usr/bin · /etc · /usr/share/manDirect gevonden
locateElk bestand en elke map met de naam erinEen vooraf gemaakte DB (/var/lib/mlocate/mlocate.db)Gevonden na updatedb

Zoek dezelfde httpd met which en whereis en het verschil is meteen duidelijk.

~]# which httpd
/usr/sbin/httpd
~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz

locate toont elk pad dat zelfs maar deels op de naam past, dus [locate httpd.conf] geeft ook de handleiding (httpd.conf.5.gz) en eventuele back-upkopieën terug, niet alleen het configuratiebestand.

Kies op de virtuele server hieronder links which, whereis of locate om de chips te wisselen; klik op een chip om dat commando te typen. Je kunt het ook op je toetsenbord typen.

Simulator van commando's om bestanden te vindenAlmaLinux 9.8
[root@server work]#
Hij draait alleen in je browser en raakt geen echte server. Kies links een commando om de chips hieronder te wisselen; klik op een chip om dat commando te typen. Zoek dezelfde httpd met alle drie de commando's en vergelijk de resultaten, en maak bij locate een nieuw bestand aan en zoek vóór en na updatedb. Loopt het vast, druk dan op [Start over]; typ uknew help om de beschikbare commando's te zien.

Wil je bestanden zoeken op grootte of wijzigingsdatum in plaats van op naam, gebruik dan het find-commando; het pad van de map waarin je zit, zie je met het pwd-commando.

✅ Linux-commando which

which doorzoekt de mappen in PATH van voor naar achter en toont het eerste uitvoerbare bestand dat het vindt. Dat is het bestand dat echt draait als je het commando typt.

Op AlmaLinux geeft bash de aliaslijst door aan which, dus voor een commando met een alias krijg je zowel de alias als het echte bestand. Staat het nergens in PATH, dan krijg je [no command in (PATH)].

~]# which ll
alias ll='ls -l --color=auto'
	/usr/bin/ls
~]# which htop
/usr/bin/which: no htop in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

In de praktijk is -a de enige optie. Bestaat dezelfde naam in twee PATH-mappen, dan toont het ze allebei, en de bovenste is degene die echt draait.

~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/ping

Op AlmaLinux 9.8 is /usr/sbin/ping een link naar /usr/bin/ping, dus het resultaat is hetzelfde. Een programma dat je zelf in /usr/local/bin hebt geïnstalleerd, draait door de volgorde in PATH vóór dat in /usr/bin.

[which cd] toont /usr/bin/cd, maar als je in de shell cd typt, draait de ingebouwde shellopdracht in plaats van dit bestand. Of een commando ingebouwd is, controleer je met [type cd], dat [cd is a shell builtin] toont.

✅ Linux-commando whereis

whereis gebruikt de commandonaam om het uitvoerbare bestand en de handleidingen samen te vinden. Het negeert PATH en doorzoekt vaste mappen zoals /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share, dus zelfs een configuratiemap met dezelfde naam (/etc/httpd) verschijnt.

OptieUitleg
-bAlleen binaries. Voor httpd: /usr/sbin/httpd en /usr/lib64/httpd · /etc/httpd · /usr/share/httpd
-mAlleen handleidingen (/usr/share/man · /usr/share/info)
-sAlleen broncode. Op een standaardinstallatie van AlmaLinux 9.8 krijg je alleen de naam, zoals [httpd:]
-lLijst met mappen die whereis doorzoekt
~]# whereis -b httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd
~]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz

Wordt er niets gevonden, dan krijg je alleen de naam, zoals [htop:]. which geeft exitcode 1 als het niets vindt en whereis geeft 0, dus gebruik which om in een script te controleren of iets geïnstalleerd is.

✅ Linux-commando locate

locate doorzoekt de schijf niet, maar zoekt namen op in een vooraf gemaakte DB. Daardoor is het snel, maar het vindt geen bestanden die na het bouwen van de DB zijn aangemaakt.

~]# dnf -y install mlocate
~]# updatedb

Voer je het direct na de installatie uit, dan is er nog geen DB en krijg je [locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory]; één keer updatedb draaien maakt hem aan. Daarna bouwt mlocate-updatedb.timer de DB één keer per dag opnieuw op.

Een nieuw bestand verschijnt pas na updatedb, en een verwijderd bestand blijft tot dan zichtbaar. Wil je alleen bestanden zien die nu bestaan, voeg dan -e toe.

~]# touch report.txt
~]# locate report.txt
~]# updatedb
~]# locate report.txt
/root/work/report.txt
~]# rm -f report.txt
~]# locate report.txt
/root/work/report.txt
~]# locate -e report.txt

PRUNEPATHS in /etc/updatedb.conf bevat /tmp · /var/tmp · /mnt · /media, dus bestanden in die mappen verschijnen ook na updatedb niet.

🔲 Opties van het locate-commando

OptieUitleg
-iHoofdletters negeren
-cAlleen het aantal overeenkomsten in plaats van paden
-l= -nZet er een getal achter om de resultaten tot zoveel te beperken. -l 3
-bAlleen de bestandsnaam aan het eind van het pad vergelijken
-eBestanden weglaten die in de DB staan maar niet meer bestaan
-SDB-info (mappen · bestanden · grootte)
-rZoeken met een reguliere expressie. locate -r "httpd.conf$"

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 0   +   5   =