Дата и время в bash нужны постоянно: бэкапы, логи, ротация, отчеты, cron и т.д. Хорошая новость -
date умеет почти все, если знать приемы.▪️ Форматированный вывод даты:
date +"%Y-%m-%d %H:%M:%S"
▪️ Типовые форматы:
%Y - год%m - месяц%d - день%H:%M:%S - время%s - Unix timestamp
now=$(date +"%F_%H-%M-%S")
▪️ Вчера / завтра
date -d "yesterday"
date -d "tomorrow"
С форматированием:
date -d "yesterday" +"%Y-%m-%d"
▪️ Смещение на N дней
date -d "+3 days"
date -d "-7 days"
Пример для бэкапов:
backup_date=$(date -d "+1 day" +"%F")
▪️ Часы, минуты, секунды
date -d "+2 hours"
date -d "-15 minutes"
date -d "+30 seconds"
Комбинирование:
date -d "+1 day +2 hours"
▪️ Начало и конец дня
date -d "today 00:00"
date -d "today 23:59:59"
Вчерашний день целиком:
date -d "yesterday 00:00"
date -d "yesterday 23:59:59"
▪️ Unix timestamp в человекочитаемо
date -d @1700000000
Обратно:
date +%s
▪️ Имена файлов и каталогов
logfile="app_$(date +%F).log"
mkdir "backup_$(date +%Y%m%d)"
▪️ Проверка возраста файлов (совместно с date)
file_ts=$(stat -c %Y file.txt)
now_ts=$(date +%s)
(( now_ts - file_ts > 86400 )) && echo "Файл старше суток"
BashTex 📱 #bash #utils