Linux which, whereis, locate: Dosya konumunu (yolunu) bulan 3 komut

httpd.conf'u düzenlemek istersiniz ama dosyanın nerede olduğunu bilmezsiniz ya da aynı adlı bir komut iki yerde vardır ve hangisinin çalıştığı karışır. Linux which komutu gerçekten çalışan dosyayı, Linux whereis komutu çalıştırılabilir dosyayla birlikte ayar klasörlerini ve kılavuzları, locate komutu ise adı geçen tüm yolları bulur. Üç komutun farkını tabloda karşılaştırdık; tarayıcınızdaki sanal sunucuda kendiniz de deneyebilirsiniz.
AlmaLinux 9.8'de which, which 2.21 paketinde, whereis ise util-linux 2.37.4 paketinde gelir, bu yüzden ikisi de baştan kullanılabilir; locate için mlocate 0.26 paketini ayrıca kurmanız gerekir.
✅ which · whereis · locate farkı
Üç komut farklı yerlere bakar. which ve whereis belirli klasörleri o anda tarar; locate ise önceden oluşturulmuş dosya listesinde (DB) adı arar.
| Komut | Bulduğu şey | Baktığı yer | Yeni dosyalar |
|---|---|---|---|
| which | Çalışan tek komut dosyası ve takma adlar (alias) | PATH'te kayıtlı klasörler | Hemen bulur |
| whereis | Çalıştırılabilir dosya · ayar klasörleri · kılavuzlar | /usr/bin · /etc · /usr/share/man gibi belirli klasörler | Hemen bulur |
| locate | Adı geçen tüm dosya ve klasörler | Önceden oluşturulmuş DB (/var/lib/mlocate/mlocate.db) | updatedb sonrasında bulur |
Aynı httpd'yi which ve whereis ile arayınca fark hemen görünür.
~]# 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.gzlocate adın yalnızca bir kısmı uysa bile tüm yolları gösterir; bu yüzden [locate httpd.conf] yazınca yalnızca ayar dosyası değil, kılavuz (httpd.conf.5.gz) ve yedek kopyalar da çıkar.
Aşağıdaki sanal sunucuda soldan which · whereis · locate seçince çipler değişir; çipe tıklayınca o komut yazılır. Klavyeden de yazabilirsiniz.
Dosyaları ada göre değil boyut ya da değişiklik tarihine göre ararken find komutunu kullanın; bulunduğunuz klasörün yolunu pwd komutuyla görün.
✅ Linux which komutu
which, PATH'teki klasörleri baştan sırayla tarar ve bulduğu ilk çalıştırılabilir dosyayı gösterir. Komutu yazdığınızda gerçekten çalışan dosya budur.
AlmaLinux'taki bash, takma ad listesini which'e verir; bu yüzden takma adı olan bir komutta hem takma ad hem gerçek dosya çıkar. PATH'te hiçbir yerde yoksa [no command in (PATH)] çıkar.
~]# 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)Seçenek fiilen yalnızca -a'dır. Aynı ad PATH'teki iki klasörde varsa ikisini de gösterir; en üstteki gerçekten çalışandır.
~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/pingAlmaLinux 9.8'de /usr/sbin/ping, /usr/bin/ping'i gösteren bir bağlantıdır; sonuç aynıdır. Kendi kurduğunuz bir program /usr/local/bin'deyse PATH sırası nedeniyle /usr/bin'dekinden önce çalışır.
[which cd] /usr/bin/cd'yi gösterir, ama kabukta cd yazınca bu dosya değil kabuğun yerleşik komutu çalışır. Yerleşik komut olup olmadığını [type cd] ile kontrol edin; [cd is a shell builtin] çıkar.
✅ Linux whereis komutu
whereis komut adıyla çalıştırılabilir dosyayı ve kılavuzları birlikte bulur. PATH'ten bağımsız olarak /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share gibi belirli klasörleri taradığı için aynı adlı ayar klasörü (/etc/httpd) bile çıkar.
| Seçenek | Açıklama | |
|---|---|---|
| -b | Yalnızca ikili dosyalar. httpd için /usr/sbin/httpd ve /usr/lib64/httpd · /etc/httpd · /usr/share/httpd | |
| -m | Yalnızca kılavuzlar (/usr/share/man · /usr/share/info) | |
| -s | Yalnızca kaynaklar. AlmaLinux 9.8 varsayılan kurulumunda [httpd:] gibi yalnızca ad çıkar | |
| -l | whereis'in taradığı klasör listesi |
~]# 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.gzBir şey bulunamazsa [htop:] gibi yalnızca ad çıkar. which bulamayınca çıkış kodu 1, whereis ise 0 döndürür; bu yüzden betikte kurulu olup olmadığını which ile kontrol edin.
✅ Linux locate komutu
locate diski taramaz, önceden oluşturulmuş DB'de adı arar. Bu yüzden hızlıdır, ama DB oluşturulduktan sonra yaratılan dosyaları bulamaz.
~]# dnf -y install mlocate
~]# updatedbKurulumdan hemen sonra çalıştırırsanız henüz DB olmadığından [locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory] çıkar; updatedb'yi bir kez çalıştırınca oluşur. Ondan sonra mlocate-updatedb.timer DB'yi günde bir kez yeniden oluşturur.
Yeni dosya updatedb'den önce görünmez, silinen dosya ise o zamana kadar görünmeye devam eder. Yalnızca şu an var olan dosyaları görmek için -e ekleyin.
~]# 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/etc/updatedb.conf içindeki PRUNEPATHS'te /tmp · /var/tmp · /mnt · /media bulunduğundan bu klasörlerdeki dosyalar updatedb çalıştırılsa da çıkmaz.
🔲 locate komutu seçenekleri
| Seçenek | Açıklama | |
|---|---|---|
| -i | Büyük-küçük harfi yok say | |
| -c | Yollar yerine yalnızca eşleşme sayısı | |
| -l= -n | Arkasına sayı koyarak sonuçları o kadarla sınırla. -l 3 | |
| -b | Yalnızca yolun sonundaki dosya adında ara | |
| -e | DB'de olup artık var olmayan dosyaları çıkar | |
| -S | DB bilgisi (klasör · dosya · boyut) | |
| -r | Düzenli ifadeyle ara. locate -r "httpd.conf$" |
ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.