Zjistěte, jak formátovat datum a čas pro použití ve skriptu shellu nebo jako proměnnou spolu s různými příklady formátů.
Mnohokrát musíte ve skriptu shellu použít datum, např. pojmenovat soubor protokolu, předat jej jako proměnnou atd. Potřebujeme tedy jiný formát dat, který lze použít jako řetězec nebo proměnnou v našich skriptech. V tomto článku se podíváme, jak používat datum ve skriptu shellu a jaké všechny různé typy formátů můžete použít.
- Zkontrolujte příkaz timedatectl pro snadnou správu data a času v systému Linux
Jak použít datum ve skriptu shellu?
Datum můžete použít vložením spuštění shellu do příkazu. Pokud například chcete vytvořit soubor protokolu vložením aktuálního data do něj, můžete to provést následujícím způsobem –
root@kerneltalks # echo test > /tmp/`date +%d`.txt root@kerneltalks # ls -lrt -rw-r--r--. 1 root root 5 Sep 10 09:10 10.txt
V zásadě musíte předat identifikátor formátu s +%
to date příkaz k získání požadovaného formátu výstupu. Existuje jiný zdroj příkazu data identifikátoru.
Můžete dokonce uložit konkrétní formát data do nějaké proměnné, jako je –
root@kerneltalks # MYDATE=`date +%d.%b.%Y` root@kerneltalks # echo $MYDATE 10.Sep.2018
Různé formátové proměnné pro příkaz date
Tyto identifikátory formátu jsou z data příkazu man
stránka :
%a locale’s abbreviated weekday name (e.g., Sun) %A locale’s full weekday name (e.g., Sunday) %b locale’s abbreviated month name (e.g., Jan) %B locale’s full month name (e.g., January) %c locale’s date and time (e.g., Thu Mar 3 23:05:25 2005) %C century; like %Y, except omit last two digits (e.g., 20) %d day of month (e.g, 01) %D date; same as %m/%d/%y %e day of month, space padded; same as %_d %F full date; same as %Y-%m-%d %g last two digits of year of ISO week number (see %G) %G year of ISO week number (see %V); normally useful only with %V %h same as %b %H hour (00..23) %I hour (01..12) %j day of year (001..366) %k hour ( 0..23) %l hour ( 1..12) %m month (01..12) %M minute (00..59) %N nanoseconds (000000000..999999999) %p locale’s equivalent of either AM or PM; blank if not known %P like %p, but lower case %r locale’s 12-hour clock time (e.g., 11:11:04 PM) %R 24-hour hour and minute; same as %H:%M %s seconds since 1970-01-01 00:00:00 UTC %S second (00..60) %T time; same as %H:%M:%S %u day of week (1..7); 1 is Monday %U week number of year, with Sunday as first day of week (00..53) %V ISO week number, with Monday as first day of week (01..53) %w day of week (0..6); 0 is Sunday %W week number of year, with Monday as first day of week (00..53) %x locale’s date representation (e.g., 12/31/99) %X locale’s time representation (e.g., 23:13:48) %y last two digits of year (00..99) %Y year %z +hhmm numeric timezone (e.g., -0400) %:z +hh:mm numeric timezone (e.g., -04:00) %::z +hh:mm:ss numeric time zone (e.g., -04:00:00) %Z alphabetic time zone abbreviation (e.g., EDT)
Pomocí kombinací výše uvedených můžete získat požadovaný formát data jako výstup pro použití ve skriptu shellu! Můžete dokonce použít %n
pro nový řádek a %t
pro přidání tabulátoru do výstupů, které většinou nejsou potřeba, protože je budete používat jako jeden řetězec.
Příklady různých formátů data
Pro vaše pohodlí a připravenost k použití jsem níže uvedl kombinace pro různé formáty data.
root@kerneltalks # date +%d_%b_%Y 10_Sep_2018 root@kerneltalks # date +%D 09/10/18 root@kerneltalks # date +%F-%T 2018-09-10-11:09:51 root@kerneltalks # echo today is `date +%A` today is Monday root@kerneltalks # echo Its `date +%d` of `date +%B" "%Y` and time is `date +%r` Its 10 of September 2018 and time is 11:13:42 AM