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