Что такое «команда» в bash?

Что такое «команда» в bash?

Если я печатаю 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. В противном случае статус выхода встроенной команды равен статусу выхода команды.

Связанный контент