Почему `time` отсутствует в руководстве по GNU Bash?

11
[fakename]$ help time
time: time [-p] pipeline
    Report time consumed by pipeline's execution...

Из этого, кажется, что timeвстроенный Bash. Однако я не могу найти описание этого на этой странице: https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html#Shell-Builtin-Commands . Почему это так?

extremeaxe5
источник
1
Используйте, type timeчтобы увидеть, что это такое.
Муру
man bashа затем просто введите/time
Джордж Василиу
и не забывайте, /usr/bin/timeчто похоже на bash, timeно отличается ...
ivanivan

Ответы:

22

Это описано в подразделе «Грамматика оболочки» / «Конвейеры» на странице руководства bash . Он также описан в ссылке, которую вы указали в разделе « Конвейеры », где он проиндексирован в разделе «Зарезервированные слова» .

Трубопроводы

Конвейер - это последовательность из одной или нескольких команд, разделенных одним из операторов управления | или | &. Формат для конвейера:

[time [-p]] [ ! ] command [ | or |& command2 ... ] 

Стандартный вывод команды подключен через канал к стандартному вводу команды2. Это соединение выполняется перед любыми перенаправлениями, указанными в команде (см. ПЕРЕКЛЮЧЕНИЕ ниже). Если используется | &, стандартная ошибка команды связана со стандартным вводом command2 через канал; это сокращение для 2> & 1 |. Это неявное перенаправление стандартной ошибки выполняется после любых перенаправлений, указанных в команде.

Состояние возврата конвейера - это состояние выхода последней команды, если не включена опция pipefail. Если pipefail включен, статус возврата конвейера - это значение последней (самой правой) команды для выхода с ненулевым статусом или ноль, если все команды завершаются успешно. Если зарезервированное слово! перед конвейером, состояние выхода этого конвейера является логическим отрицанием состояния выхода, как описано выше. Оболочка ожидает завершения всех команд в конвейере, прежде чем вернуть значение.

Если зарезервированное временем слово предшествует конвейеру, истекшее время, а также пользовательское и системное время, затраченное на его выполнение, сообщаются, когда конвейер завершается. Опция -p изменяет формат вывода на тот, который указан в POSIX. Переменная TIMEFORMAT может быть установлена ​​в строку формата, которая определяет, как должна отображаться информация о синхронизации; см. описание TIMEFORMAT в разделе «Переменные оболочки» ниже.

Каждая команда в конвейере выполняется как отдельный процесс (т. Е. В подоболочке).

NickD
источник
5

Справочное руководство Bash можно просмотреть на консоли с помощью info. Затем пользователь может искать ключевое слово в индексах, нажимая клавишу i, вводя ключевое слово и нажимая клавишу Enter. infoпереместится на первое место в руководстве, связанное с ключевым словом. Нажмите, ,чтобы добраться до других мест. Для получения дополнительной информации, прочитайте руководство GNU Info, онлайн или на консоли, используя info info. Действительно, наиболее важная вещь для быстрого поиска ключевого слова в руководстве - это использование существующего индекса.

Существенным фактом в этой проблеме является то, что time это не встроенное, а зарезервированное Bash слово или ключевое слово .

# Смотрите также

Fólkvangr
источник
Аааа спасибо Да, я вижу это сейчас с type time. Видите, это интересно, хотя. help helpвыдает «Показать информацию о встроенных командах», а helpтакже имеет справочную информацию для ключевых слов?
extremeaxe5