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
Как пунктирные работы Юнити объясняется здесь - он использует Zeitgeist системных файлов индекса и узнать от модели использования, и позволяет другим приложениям использовать эти данные, так что это делает намного больше работы , чем locate
.
type
? : P