Из 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")
Хотя Джесси _b прав относительно того, как оболочки обычно ищут команды, есть более простое решение.
\time --version
Bash, ksh, zsh и, я думаю, несколько других распространенных оболочек будут интерпретировать обратную косую черту в начале команды без пути как «перейти к просмотру PATH для этой вещи».
Кроме того, зная встроенное время, мы могли бы обойти это, запустив
time time --version
В конце концов, причина ошибки «команда не найдена», а не ошибки «нет такой опции», заключается в том, что встроенная оболочка просто запускает следующую команду и проверяет, сколько времени потребовалось для ее выполнения, когда она завершается... что то же самое. то, что делает /bin/time.
Если вы ожидаете, что время будет спорить... вы хотите узнать, который сейчас час? Потому что это команда date
.
При поиске команды оболочка использует следующий параметр:
PATH
Таким образом, ключевое слово time
будет использоваться предпочтительнее, чем установленная версия time
, предположительно найденная в вашем PATH
. Вы можете преодолеть это с помощью псевдонима, такого как:
alias time=/usr/bin/time
(убедитесь, что путь соответствует тому месту, где вы установили время)
Используйте:
\command builtin type time
, чтобы узнать, какую версию time
вы используете.
Это параноидальная версия -обычно достаточно type time
, но приведенное выше позволит избежать ситуаций, когда alias type=echo
.
Чтобы увидеть все двоичные версии time
в вашем $PATH
, используйте which -a time
.