Jak pracovat s datem a časem v Bash pomocí příkazu date
Date command je externí bash program, který umožňuje nastavit nebo zobrazit systémové datum a čas. Poskytuje také několik možností formátování. Příkaz Date je ve výchozím nastavení nainstalován ve všech distribucích Linuxu.
which date
type -a date
Zadejte příkaz datum do terminálu, který zobrazí aktuální datum a čas.
date
Změňte datum a čas systému Linux
Pomocí příkazu date lze upravit systémové datum, čas a časové pásmo a změnu je nutné synchronizovat s hardwarovými hodinami.
date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc
Možnosti formátování
Dobrým místem pro získání seznamu možností formátování bude manuálová stránka.
man date
Podívejme se na některé z nejběžnějších možností formátování, které budeme používat.
- Chcete-li použít formátování, použijte „+ a poté „formátovač“.
- Chcete-li získat seznam možností formátování pro GNU\LINUX, podívejte se na odkazovanou manuálovou stránku.
- Chcete-li získat seznam možností formátování pro BSD, podívejte se na odkazovanou manuálovou stránku.
Dvě důležité části příkazu date jsou použití možnosti Formát +%
a –date.
Nyní použijeme nějaké formátování na příkaz date. Chcete-li použít formátování, přidejte znaménko plus (+)
a poté %formatter
, jak je znázorněno v příkladech.
Datum zpracování v Linuxu
Podívejme se, jak používat formátovače související s datem v jednoduchém skriptu shellu s názvem „date.sh“.
PRINT YEAR,MONTH,DAY AND DATE...
echo "We are in the year = $(date +%Y)"
echo "We are in the year = $(date +%y)"
Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year.
echo "We are in the month = $(date +%m)"
echo "We are in the month = $(date +%b)"
echo "We are in the month = $(date +%B)"
Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name.
echo "Current Day of the month = $(date +%d)"
echo "Current Day of the week = $(date +%A)"
echo "Current Day of the week = $(date +%a)"
Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name.
Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format.
echo "Date using %D = $(date +%D)"
echo "Date using %F = $(date +%F)"
Zpracování času v Linuxu
Podívejme se, jak používat formátovače související s časem v jednoduchém skriptu shellu s názvem „time.sh“.
PRINT HOURS, MINS, SECONDS, NANO SECONDS
echo Hours = $(date +%H)
echo Minutes = $(date +%M)
echo Seconds = $(date +%S)
echo Nanoseconds = $(date +%N)
echo Epoch Time = $(date +%s)
echo "current time = $(date +%H:%M:%S:%N)"
can also use %T which displays Time in HH:MM:SS format.
echo "current time in 24 hour format = $(date +%T)"
can also use %r to display time in 12 hour format.
echo "current time in 12 hour format = $(date +%r)"
S příznakem –date nebo -d
Pomocí --date
nebo -d
lze vstup příznaku předat jako řetězec a příkaz date ví, jak s ním chytře zacházet.
Podívejme se na několik příkladů, abychom pochopili, jak to funguje.
Print yesterday's date and time.
echo "Yesterday = $(date -d "Yesterday")"
Print Tomorrow date and time.
echo "tomorrow = $(date -d "tomorrow")"
Find what is the date and time before 10 days from now.
echo "Before 10 days = $(date -d "tomorrow -10 days")"
Find last month and next month
echo "Last month = $(date -d "last month" "%B")"
echo "Next month = $(date -d "next month" "%B")"
Find last year and next year
echo "Last Year = $(date -d "last year" "+%Y")"
echo "Next Year = $(date -d "next year" "+%Y")"
Forecast the weekday
echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")
Běžné operace
vypočítat počet dní mezi 2 danými daty.
echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
Najděte daný rok, zda je nebo není přestupný.
for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done
Přiřazení výstupu příkazu date proměnné.
TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY
echo $TODAY1
Vytvořte soubory protokolu s datem přidaným k názvu souboru.
Přidání data a času při vytváření souborů protokolu, zálohy nebo textových souborů je běžná operace, se kterou se setkáme nejčastěji. Vezměme si příklad, abychom vytvořili zálohu, vytvořili jsme skript shellu.
Tento skript provede zálohu od 00:00 do 23:59 a jeho spuštění je naplánováno denně v 00:00 následujícího dne. Chceme vytvořit soubory protokolu s formátem včerejšího data.
CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M")
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
echo "Script started" >> ${LOG_FILE}
...
CODE BLOCKS
...
echo "Script completed" >> ${LOG_FILE}
To je pro tento článek vše. V tomto článku jsme viděli, jak používat bash datum a čas v Linuxu. Sdělte nám svůj názor.