В чем разница между временем и / usr / bin / time? [дубликат]

На этот вопрос уже есть ответ:

У меня есть две одинаковые команды, которые я использовал, но у них разные параметры:

  • time -f "% E% C" mycommandtomeasure
  • / usr / bin / time -f "% E% C "mycommandtomeasure

Первая не выполняется, а вторая выполняется. Первый не может найти параметр -f . Проверяя whereis time , я получаю путь / usr / bin / time , поэтому я понимаю, что time - это та же команда, что и / usr / bin / time .

Видимо, мое предположение неверно. Может ли кто-нибудь помочь мне уточнить?

7
задан 12 July 2018 в 02:21

2 ответа

Давайте взглянем на какой time на самом деле использует type команда (см. help type):

$ type -a time
time is a shell keyword
time is /usr/bin/time

Так, по-видимому, time в нашей системе оба

  • ключевое слово непосредственно встроено в Вашу оболочку Bash
  • исполняемый файл /usr/bin/time

Поскольку ключевые слова оболочки имеют приоритет по исполняемым файлам, что Вы на самом деле выполняете при вводе только time ключевое слово оболочки. Вы также видите это от порядка в который type -a перечисляет их, или от вывода просто type time, который только перечисляет один эффективный тип.

Теперь, давайте проверим то, что может сделать каждый из тех:

  • Исполняемые файлы обычно имеют страницу справочника (страница руководства), которая мы можем открыть и прочитать использование man команда, т.е. здесь man time.

  • Получить справку о материале встроило в Bash, необходимо использовать help команда: help time

Вы отметите, что ключевое слово оболочки поддерживает меньше опций, чем исполняемый файл, но это имеет другие преимущества, как Вы можете, например, конструкции Bash комплекса времени как конвейеры с ним. Посмотрите конец этого ответа для примера.

Если необходимо использовать исполняемый файл вместо ключевого слова оболочки, хотя, можно или ввести полный путь, т.е. /usr/bin/time, или можно снабдить префиксом команду обратную косую черту, чтобы мешать Bash оценить его: \time

Между прочим, в то время как time ключевое слово оболочки в Bash, это не существует в sh (Тире), где Вы только получили бы исполняемый файл.

13
ответ дан 23 November 2019 в 06:14

Когда Вы работаете time Вы выполняете встроенный в команду оболочки, которая не поддерживает все функции.

Когда Вы работаете /usr/bin/time, Вы выполняете реальный GNU time программа.

Можно установить псевдоним для выполнения всегда "реального".

3
ответ дан 23 November 2019 в 06:14

Другие вопросы по тегам:

Похожие вопросы: