Kouzla s příkazem date
Jak z příkazu date dostat jiný údaj než standardní, kdy
vypisuje datum, čas z časovou zónu odpovídající aktuálnímu času?
Nahlédněte do manuálové stránky nebo do výstupu příkazu po použití
přepínače --help:
date --help
...
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Vypíše aktuální čas v daném FORMÁTu, nebo nastaví datum v systému.
...
FORMAT controls the output. The only valid option for the second form
specifies Coordinated Universal Time. Interpreted sequences are:
...
Máte tedy tyto možnosti ovlivnit výstup příkazu:
měnit formát výstupu - direktiva popisující formát začíná znakem "+"
zadat jiné datum nebo čas, než právě teď v systému je -
přepínač --date nebo -d, budeme raději používat delší
a přehlednější variantu
Typické příklady použití příkazu date:
- date +%Y%m%d
- Rok, měsíc a den v logickém pořadí vhodném ke třídění. Využijeme
vlastnosti příkazového interpretu vykonávat vložené příkazy, naplníme výstupem
příkazu date proměnnou shellu a dále již pracujeme s ní:
ZALOHA=$ADRESAR/zaloha-`date +%Y%m%d`.tar.bz2
[ -f $ZALOHA ] && echo "Varovani - soubor $ZALOHA jiz existuje!"
tar cjf $ZALOHA $PREPINACE $SEZNAM_SOUBORU
echo "Zaloha byla zapsana do souboru $ZALOHA" | mail root
- date +%Y%m%d --date "yesterday"
- Totéž jako v předchozím případě, ale používáme včerejší datum
- date +%Y%m%d --date "1 year 1 day"
- Totéž jako v předchozím případě, ale používáme datum
"...do roka a do dne"
- date --date "Jan 1 00:00:00 GMT 1970 $s sec"
- Speciální modifikace použitého data použitá v případě, že v proměnné
$s máte uložen datum a čas v unixovém formátu, tj. počet sekund,
které uplynuly od začátku epochy - 1. ledna 1970
Odkazy:
date (1) (man date, info date)
manuál k příkazu bash (1) (man bash, info bash)
libovolná učebnice Linuxu/Unixu
knihovní funkce gettimeofday (2)
můžete také zkusit využít možností modulu perlu Date::Calc
program stat (1)