Если я печатаю command
на своем терминале, я не получаю сообщение «команда не найдена», а код выхода равен 0. Я предполагаю, что это означает, что command
на bash что-то делается.
Также command -h
возвращается:
bash: command: -h: invalid option
command: usage: command [-pVv] command [arg ...]
Для чего его используют?
решение1
От help command
:
$ help command
command: command [-pVv] command [arg ...]
Execute a simple command or display information about commands.
Runs COMMAND with ARGS suppressing shell function lookup, or display
information about the specified COMMANDs. Can be used to invoke commands
on disk when a function with the same name exists.
Options:
-p use a default value for PATH that is guaranteed to find all of
the standard utilities
-v print a description of COMMAND similar to the `type' builtin
-V print a more verbose description of each COMMAND
Exit Status:
Returns exit status of COMMAND, or failure if COMMAND is not found.
В качестве более общего замечания, вместо того, чтобы использовать -h
команду, когда вы не знаете, что она делает, попробуйте:
type -a command
Что в данном случае означало бы, что это встроенная оболочка.
help command
хорошо подходит для встроенных команд оболочки. Для других команд (итакжедля встроенных функций оболочки, на самом деле), попробуйте
man somecommand
Также, -h
необязательноопция "help". Если вы не знаете, что делает команда, это может быть небезопасным предположением. Безопаснее --help
.
somecommand --help
(Обычные команды, где -h
это допустимый вариант, но ненет(Означают «помощь» ls
, free
, df
, du
. Все это носит исключительно информационный характер, но предположение, что -h
это будет означать только «помощь», является опасным.)
решение2
command
Как и почти все остальное, Unix/Linux документируется в man-страницах. Typing man command
предоставляет руководство, в bash
котором есть подраздел, посвященный встроенной команде command
:
команда [-pVv] команда [arg ...]
Запустить команду с аргументами, подавляющими обычный поиск функций оболочки. Выполняются только встроенные команды или команды, найденные в PATH. Если указана опция -p, поиск команды выполняется с использованием значения по умолчанию для PATH, которое гарантированно найдет все стандартные утилиты. Если указана опция -V или -v, выводится описание команды. Опция -v вызывает отображение одного слова, указывающего на команду или имя файла, используемого для вызова команды; опция -V выводит более подробное описание. Если указана опция -V или -v, статус выхода равен 0, если команда найдена, и 1, если нет. Если ни одна из опций не указана и произошла ошибка или команда не может быть найдена, статус выхода равен 127. В противном случае статус выхода встроенной команды равен статусу выхода команды.