Наприклад, я хочу відображати поточну дату та час у такому форматі:
yyyymmddhhmmss
Як це зробити? Схоже , що приходить самий формат дати з -, /, :і т.д.
Наприклад, я хочу відображати поточну дату та час у такому форматі:
yyyymmddhhmmss
Як це зробити? Схоже , що приходить самий формат дати з -, /, :і т.д.
Відповіді:
Ось вам:
date +%Y%m%d%H%M%S
Як man dateговориться вгорі, ви можете використовувати таку dateкоманду:
date [OPTION]... [+FORMAT]
Тобто ви можете надати йому параметр формату, починаючи з а +. Напевно, ви можете здогадатися про значення використовуваних символів форматування:
%Y є на рік%m є на місяць%d є на деньВи можете знайти цей та інші символи форматування в man date.
Якщо ви використовуєте Bash, ви також можете скористатися однією з таких команд:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
Ви можете використовувати Опцію -v varnameдля збереження результату, $varnameа не надрукувати його в stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Хоча команда дата завжди буде виконуватися в підзаголовку (тобто в окремому процесі), printf - це вбудована команда і тому буде швидшою.
%варіанти можна передати, це, здається, використовує dateкоманду. Отже, man dateдамо вам доступні варіанти.
Цікавий / смішний спосіб зробити це за допомогою розширення параметрів (потрібно bash 4.4чи новіше):
${parameter@operator} - P operatorРозширення - це рядок, який є результатом розширення значення параметра, як якщо б це був рядок підказок.
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
"`date +%Y-%m-%d %H:%M:%S`"дає меніdate: illegal time format