which (which)
which — Unix-утилита, отображающая полный путь к указанным командам или сценариям.
Описание
[править | править код]Which принимает один или более аргументов имя_программы. Для каждого из них она выводит тот полный путь к исполняемому файлу, который будет использован командной оболочкой, если имя_программы ввести в качестве команды в командной строке. Эта программа выполняет поиск исполняемых файлов или сценариев в каталогах, перечисленных в переменной окружения PATH используя тот же алгоритм, что и bash.
Опции
[править | править код]- --all, -a
- Выводит все совпавшие исполняемые файлы по содержимому в переменной окружения PATH, а не только первый из них.
- --read-alias, -i
- Считывает псевдонимы, поступающие из стандартного ввода и направляет на стандартный вывод информацию по совпавшим. Эта опция полезна в сочетании с использованием псевдонима для самой команды which. Например:
- alias which='alias | which -i'.
- --skip-alias
- Игнорирует опцию «--read-alias», если таковая имеется. Эта опция полезна для точного поиска обычных двоичных файлов, которые используют опцию «--read-alias» в псевдониме или функции для which.
- --read-functions
- Считывает функции, определённые в командной оболочке и поступающие из стандартного ввода, а затем направляет на стандартный вывод информацию по совпавшим. Эта опция полезна в сочетании с функциями командной оболочки для самой команды which. Например:
which() { declare -f | which --read-functions $@ }
export -f which
- --skip-functions
- Игнорирует опцию «--read-functions», если таковая имеется. Эта опция полезна для точного поиска обычных двоичных файлов, которые используют опцию «--read-alias» в псевдониме или функции для which.
- --skip-dot
- Пропускает все каталоги из переменной окружения PATH, которые начинаются с точки.
- --skip-tilde
- Пропускает все каталоги из переменной окружения PATH, имена которых начинаются с символа тильда (~), а также все исполняемые файлы, которые расположены в каталоге, указанном в переменной HOME.
- --show-dot
- Если имя каталога из переменной окружения PATH начинается с точки и соответствующий исполняемый файл имя_программы был найден в этом пути, тогда вместо полного пути будет выведено «./имя_программы».
- --show-tilde
- Выводит тильду, когда каталог совпадает с каталогом, указанном в переменной окружения HOME (то есть с домашним каталогом). Эта опция игнорируется, если which вызывается суперпользователем (root).
- --tty-only
- Не обрабатывает опции, которые находятся справа за этой опцией, если они поступают не с терминала (tty).
- --version,-v,-V
- Выводит информацию о версии программы на стандартное устройство и завершает её работу.
- --help
- Выводит краткое описание опций программы на стандартное устройство и завершает её работу.
Пример использования
[править | править код]Обычно утилиту which используют в различных псевдонимах (C shell) или сценариях (Bourne shell) командных оболочек, например, как показано ниже:
Командная оболочка bash:
which ()
{
(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
export -f which
Командная оболочка tcsh:
alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
В следующем примере показано два возможных варианта вывода одной и той же команды which, в зависимости от контекста её применения. В первом случае, вместо полного пути выводится ~/ и ./ (для исполняемого файла, расположенного в домашнем каталоге пользователя), когда команда which непосредственно запущена пользователем из командной строки. Во втором — команда which запущена из скрипта. Здесь будет выведен полный путь к указанной программе:
which q2
> ~/bin/q2
echo `which q2`
> /home/carlo/bin/q2
См. также
[править | править код]Ссылки
[править | править код]- Официальная страница GNU which
which(1)
— страница справки man по пользовательским командам FreeBSD (англ.)