Linux which, whereis, locate: 3 polecenia do znajdowania położenia (ścieżki) pliku

Informacja o linkach partnerskich v3.1
Informacja o linkach partnerskich v3.2 (wersja mobilna)
Środowisko testoweRodzina RHELAlmaLinux 9.8konto rootSprawdzono 07.10.2026
Polecenia wyszukiwaniawhichwhereislocate

Czasem trzeba poprawić httpd.conf, ale nie wiadomo, gdzie jest plik, albo polecenie o tej samej nazwie istnieje w dwóch miejscach i nie wiadomo, które się uruchamia. Polecenie which w Linuksie znajduje plik, który faktycznie się uruchamia, polecenie whereis znajduje plik wykonywalny razem z folderami konfiguracji i podręcznikami, a polecenie locate znajduje każdą ścieżkę zawierającą nazwę. Ten wpis porównuje trzy polecenia w tabeli i pozwala wypróbować je na wirtualnym serwerze w przeglądarce.

W AlmaLinux 9.8 which pochodzi z pakietu which 2.21, a whereis z util-linux 2.37.4, więc oba działają od razu, natomiast locate wymaga osobnej instalacji pakietu mlocate 0.26.

✅ which vs whereis vs locate

Trzy polecenia szukają w różnych miejscach. which i whereis przeszukują na bieżąco ustalone foldery, a locate szuka nazw w wcześniej zbudowanej liście plików (DB).

PolecenieCo znajdujeGdzie szukaNowe pliki
whichJeden uruchamiany plik polecenia oraz aliasyFoldery wymienione w PATHZnajduje od razu
whereisPlik wykonywalny · foldery konfiguracji · podręcznikiUstalone foldery, np. /usr/bin · /etc · /usr/share/manZnajduje od razu
locateKażdy plik i folder zawierający nazwęWcześniej zbudowana DB (/var/lib/mlocate/mlocate.db)Znajduje po updatedb

Wyszukaj ten sam httpd przez which i whereis, a różnica od razu będzie widoczna.

~]# 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 pokazuje każdą ścieżkę pasującą choćby do części nazwy, więc [locate httpd.conf] zwraca też podręcznik (httpd.conf.5.gz) i ewentualne kopie zapasowe, a nie tylko plik konfiguracyjny.

Na wirtualnym serwerze poniżej wybierz po lewej which, whereis lub locate, by zmienić chipy; kliknięcie chipa wpisuje to polecenie. Możesz też pisać z klawiatury.

Symulator poleceń wyszukiwania plikówAlmaLinux 9.8
[root@server work]#
Działa tylko w przeglądarce i nie dotyka prawdziwego serwera. Wybierz polecenie po lewej, by zmienić chipy poniżej; kliknięcie chipa wpisuje to polecenie. Wyszukaj ten sam httpd wszystkimi trzema poleceniami i porównaj wyniki, a w locate utwórz nowy plik i szukaj przed updatedb i po nim. Jeśli coś się poplącze, naciśnij [Start over]; wpisanie uknew help pokaże dostępne polecenia.

Aby szukać plików według rozmiaru lub daty modyfikacji zamiast nazwy, użyj polecenia find; ścieżkę bieżącego folderu sprawdzisz poleceniem pwd.

✅ Polecenie which w Linuksie

which przeszukuje po kolei foldery z PATH od początku i pokazuje pierwszy znaleziony plik wykonywalny. To ten plik faktycznie się uruchamia, gdy wpiszesz polecenie.

W AlmaLinux bash przekazuje which listę aliasów, więc dla polecenia z aliasem dostajesz i alias, i prawdziwy plik. Jeśli nie ma go nigdzie w PATH, pojawia się [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)

W praktyce jedyną opcją jest -a. Gdy ta sama nazwa jest w dwóch folderach PATH, pokazuje oba, a ten na górze faktycznie się uruchamia.

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

W AlmaLinux 9.8 /usr/sbin/ping to dowiązanie do /usr/bin/ping, więc wynik jest ten sam. Program zainstalowany samodzielnie w /usr/local/bin uruchomi się przed tym z /usr/bin ze względu na kolejność w PATH.

[which cd] pokazuje /usr/bin/cd, ale gdy wpiszesz cd w powłoce, uruchamia się wbudowane polecenie powłoki, a nie ten plik. Czy polecenie jest wbudowane, sprawdzisz przez [type cd], które wypisze [cd is a shell builtin].

✅ Polecenie whereis w Linuksie

whereis po nazwie polecenia znajduje razem plik wykonywalny i podręczniki. Pomija PATH i przeszukuje ustalone foldery, takie jak /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share, więc pojawia się nawet folder konfiguracji o tej samej nazwie (/etc/httpd).

OpcjaOpis
-bTylko pliki binarne. Dla httpd: /usr/sbin/httpd oraz /usr/lib64/httpd · /etc/httpd · /usr/share/httpd
-mTylko podręczniki (/usr/share/man · /usr/share/info)
-sTylko źródła. W domyślnej instalacji AlmaLinux 9.8 pojawia się tylko nazwa, np. [httpd:]
-lLista folderów przeszukiwanych przez whereis
~]# 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

Gdy nic nie zostanie znalezione, pojawia się tylko nazwa, np. [htop:]. which zwraca kod wyjścia 1, gdy nic nie znajdzie, a whereis zwraca 0, więc w skrypcie sprawdzaj instalację przez which.

✅ Polecenie locate w Linuksie

locate nie przeszukuje dysku; szuka nazw we wcześniej zbudowanej DB. Dzięki temu jest szybki, ale nie znajdzie plików utworzonych po zbudowaniu DB.

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

Uruchomione zaraz po instalacji nie ma jeszcze DB i pojawia się [locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory]; jednorazowe uruchomienie updatedb ją tworzy. Potem mlocate-updatedb.timer odbudowuje DB raz dziennie.

Nowy plik pojawi się dopiero po updatedb, a usunięty będzie widoczny do tego czasu. Aby widzieć tylko istniejące teraz pliki, dodaj -e.

~]# 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 w /etc/updatedb.conf obejmuje /tmp · /var/tmp · /mnt · /media, więc pliki z tych folderów nie pojawiają się nawet po updatedb.

🔲 Opcje polecenia locate

OpcjaOpis
-iIgnorowanie wielkości liter
-cTylko liczba dopasowań zamiast ścieżek
-l= -nDodaj liczbę, by ograniczyć wyniki do tylu. -l 3
-bDopasowanie tylko nazwy pliku na końcu ścieżki
-ePomijanie plików, które są w DB, ale już nie istnieją
-SInformacje o DB (foldery · pliki · rozmiar)
-rWyszukiwanie wyrażeniem regularnym. locate -r "httpd.conf$"

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 8   +   4   =