время не принимая аргументы

Из manpage:

DATE STRING
       The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800"
       or  "2004-02-29  16:21:42" or even "next Thursday".  A date string may contain items indicating calendar date,
       time of day, time zone, day of week, relative time, relative date, and numbers.  An empty string indicates the
       beginning  of  the  day.   The  date string format is more complex than is easily documented here but is fully
       described in the info documentation.

Итак, yy-dd-mm hh:mm:ss формат должен быть предпочтительнее для ввода, чем date -s

Попробуйте со следующим:

(unset -v IFS # restore IFS to default
read -p "Enter the date:" y m d time rest_ignored
date -s "$y-$m-$d $time")

3
28.01.2019, 01:39
3 ответа

Хотя Джесси _b прав относительно того, как оболочки обычно ищут команды, есть более простое решение.

\time --version

Bash, ksh, zsh и, я думаю, несколько других распространенных оболочек будут интерпретировать обратную косую черту в начале команды без пути как «перейти к просмотру PATH для этой вещи».

Кроме того, зная встроенное время, мы могли бы обойти это, запустив

time time --version

В конце концов, причина ошибки «команда не найдена», а не ошибки «нет такой опции», заключается в том, что встроенная оболочка просто запускает следующую команду и проверяет, сколько времени потребовалось для ее выполнения, когда она завершается... что то же самое. то, что делает /bin/time.

Если вы ожидаете, что время будет спорить... вы хотите узнать, который сейчас час? Потому что это команда date.

4
27.01.2020, 21:08

При поиске команды оболочка использует следующий параметр:

  1. псевдонимы
  2. Расширение параметра, подстановка команд, арифметическое расширение и удаление кавычек перед назначением переменной
  3. функции
  4. ВСТРОЕННЫЕ команды
  5. HASH-таблица
  6. ПоискPATH

Таким образом, ключевое слово timeбудет использоваться предпочтительнее, чем установленная версия time, предположительно найденная в вашем PATH. Вы можете преодолеть это с помощью псевдонима, такого как:

alias time=/usr/bin/time

(убедитесь, что путь соответствует тому месту, где вы установили время)

3
27.01.2020, 21:08

Используйте:

\command builtin type time

, чтобы узнать, какую версию timeвы используете.

Это параноидальная версия -обычно достаточно type time, но приведенное выше позволит избежать ситуаций, когда alias type=echo.

Чтобы увидеть все двоичные версии timeв вашем $PATH, используйте which -a time.

4
27.01.2020, 21:08

Теги

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