whichзнаходить двійковий виконуваний файл програми (якщо він є у вашому PATH). man whichпояснює більш чітко:
який повертає назви файлів (або посилань), які були б виконані в поточному середовищі, якби його аргументи були подані як команди в строго відповідній оболонці POSIX. Це робиться шляхом пошуку в PATH виконуваних файлів, що відповідають назвам аргументів. Він не слідує символічних посилань.
whereisзнаходить файли бінарних файлів, джерела та довідкової сторінки для програми. Наприклад
$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz
Ви можете отримати додаткову деталь, передавши висновок цих команд як аргументи до ls -lабоfile
$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8
$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8
locateдійсно знаходить усі файли, що мають шаблон, вказаний в будь-якому місці їхніх шляхів. Ви можете сказати, щоб він знаходив лише файли та каталоги, імена яких (а не повні шляхи) містять шаблон із -bможливістю вибору, яка зазвичай є тим, що ви хочете, і дає менш громіздкий список.
locateшвидко, тому що він використовує двійкову базу даних, яка періодично оновлюється (раз на день cron). Ви можете оновити його самостійно, щоб переконатися, що нещодавно додані файли знайдено запускомsudo updatedb
Ще одна річ locate- не важливо, чи існують файли чи ні, тому, щоб не знайти нещодавно видалених файлів, використовуйте -e. Часто я також підказую, що lessяк список може бути довгим. Зазвичай я роблю:
sudo updatedb && locate -b -e gimp | less
Про те, як працює тире Unity, пояснюється тут - він використовує Zeitgeist для індексації системних файлів та навчання за шаблонами використання, а також дає можливість іншим програмам використовувати ці дані, тому це робить набагато більше роботи, ніж locate.
type? : P