Příkaz date se nachází v prostředí Bash, což je výchozí prostředí ve většině distribucí Linuxu a dokonce i v macOS. Tento výukový program vám ukáže, jak ovládat datum na příkazovém řádku a jak jej můžete použít ve skriptech shellu, abyste mohli dělat více než jen tisknout čas.
Chcete-li zobrazit tyto informace, spusťte příkaz datum. Vytiskne aktuální datum a čas pro vaše časové pásmo:
date
Výchozí formátování vypadá trochu praštěně. Proč není rok vytištěn po měsíci a dni, místo aby byl označen na konci, za časovým pásmem? Nemějte strach: Pokud je to kontrola nad formátem výstupu, který chcete, datum to doručí piky. Existuje více než 40 možností, které můžete předat k dnešnímu dni, abyste mu dali pokyn, aby formátoval svůj výstup přesně tak, jak chcete.
Chcete-li použít kteroukoli z možností, zadejte datum, mezeru, znaménko plus + a možnost včetně počátečního znaménka procenta. Možnost %c (data a čas ve formátu národního prostředí) způsobí, že se datum a čas vytisknou v normalizovaném formátu souvisejícím s vaším národním prostředím. Vaše národní prostředí je nastaveno podle geografických a kulturních informací, které jste poskytli při instalaci operačního systému. Národní prostředí řídí takové věci, jako je symbol měny, velikosti papíru, časové pásmo a další kulturní normy.
date +%c
Rok se nyní ve výstupu objevuje v přirozenější pozici.
K datu můžete předat několik možností najednou. Posloupnost voleb se nazývá formátovací řetězec. Chcete-li zobrazit název dne (%A), den v měsíci (%d) a název měsíce (%B), použijte tento příkaz:
date +%A%d%B
Fungovalo to, ale je to ošklivé. Žádný problém, můžeme zahrnout mezery, pokud celý formátovací řetězec zabalíme do uvozovek. Všimněte si, že + jde mimo uvozovky.
date +"%A %d %B"
Do formátovacího řetězce můžete přidat text takto:
date +"Today is: %A %d %B"
Posouvání nahoru a dolů přes datum manuálová stránka hledání požadované možnosti se brzy stane únavným. Možnosti jsme rozdělili do skupin, abyste se v nich snadněji zorientovali.
Table of Contents
Možnosti zobrazení data a času
%c: Vytiskne datum a čas ve formátu pro vaše národní prostředí, včetně časového pásma.
Možnosti zobrazení data
%D: Vytiskne datum ve formátu mm/dd/rr.
%F: Vytiskne datum ve formátu rrrr-mm-dd.
%x: Vytiskne datum ve formátu pro vaše národní prostředí.
Možnosti zobrazení dne
%a: Vytiskne název dne ve zkratce Po, Út, St atd.
%A: Vytiskne celý název dne, pondělí úterý, středa atd.
%u: Vytiskne číslo dne v týdnu, kde pondělí=1, úterý=2, středa=3 atd.
%w: Vytiskne číslo dne v týdnu, kde neděle=0, pondělí=1, úterý=2 atd.
%d: V případě potřeby vytiskne den v měsíci s úvodní nulou (01, 02 … 09).
%e: V případě potřeby vytiskne den v měsíci s mezerou na začátku (‚ 1‘, ‚ 2‘ … ‚ 9‘). Všimněte si, že apostrofy se netisknou.
%j: V případě potřeby vytiskne den v roce s až dvěma úvodními nulami.
Možnosti zobrazení týdne
%U: Vytiskne číslo týdne v roce, přičemž neděle se považuje za první den v týdnu. Například třetí týden v roce, dvacátý týden v roce atd.
%V: Vytiskne číslo týdne v roce podle normy ISO, přičemž pondělí se považuje za první den v týdnu.
%W: Číslo týdne v roce, přičemž pondělí je považováno za první den v týdnu.
Možnosti zobrazení měsíce
%b nebo %h: Vytiskne název měsíce zkrácený na leden, únor, březen atd.
%B: vytiskne celý název měsíce, leden, únor, březen atd.
%m: Vytiskne číslo měsíce, v případě potřeby s nulou na začátku 01, 02, 03 … 12.
Možnosti zobrazení roku
%C: Vytiskne století bez roku. V roce 2019 by vytisklo 20.
%y: Vytiskne rok jako dvě číslice. v roce 2019 vytiskne 19.
%Y: Vytiskne rok jako čtyři číslice.
Možnosti zobrazení času
%T: Vytiskne čas jako HH:MM:SS.
%R: Vytiskne hodiny a minuty jako HH:MM bez sekund s použitím 24hodinového formátu.
%r: Vytiskne čas podle vašeho národního prostředí pomocí 12hodinových hodin a indikátoru dopoledních nebo odpoledních hodin.
%X: Vytiskne čas podle vašeho národního prostředí pomocí 24hodinového formátu. Údajně. Všimněte si, že během testování se tato možnost chovala přesně jako %r, jak je ukázáno níže. Na počítači se systémem Linux nakonfigurovaném pro národní prostředí ve Spojeném království a nastaveném na GMT vytiskl čas pomocí 24hodinového formátu bez indikátoru AM nebo PM, jak se očekávalo.
Možnosti zobrazení hodin
%H: Vytiskne hodinu 00, 01, 02…23.
%I: Vytiskne hodinu pomocí 12hodinových hodin, 00, 01, 02 … 12, v případě potřeby s nulou na začátku.
Možnosti zobrazení minut
%M: vytiskne minuty, 01, 02, 03 … 59, v případě potřeby s úvodní nulou.
Možnosti zobrazení sekund
%s: Vytiskne počet sekund od 1970-01-01 00:00:00, od začátku Unixová epocha.
%S: V případě potřeby vytiskne sekundy 01, 02, 03 … 59 s nulou na začátku.
%N: Vytiskne nanosekundy.
Možnosti zobrazení informací o časovém pásmu
%z: Vytiskne časový rozdíl mezi vaším časovým pásmem a UTC.
%:z: Vytiskne časový rozdíl mezi vaším časovým pásmem a UTC s : mezi hodinami a minutami. Všimněte si : mezi znakem % a z.
%::z: Vytiskne časový rozdíl mezi vaším časovým pásmem a UTC s : mezi hodinami, minutami a sekundami. Všimněte si :: mezi znakem % a z .
%Z: Vytiskne abecední název časového pásma.
Možnosti související s formátováním
%p: Vytiskne indikátor AM nebo PM velkými písmeny.
%P: Vytiskne indikátor dopoledne nebo odpoledne malými písmeny. Všimněte si vtipu s těmito dvěma možnostmi. Malé písmeno p poskytuje výstup velkým písmenem, velké písmeno P poskytuje výstup malých písmen.
%t: Vytiskne kartu.
%n: Vytiskne nový řádek.
Možnosti pro úpravu dalších možností
Tyto modifikátory lze vložit mezi % a písmeno volby dalších voleb a upravit jejich zobrazení. Například %-S odstraní úvodní nulu pro jednociferné sekundové hodnoty.
–: Jediná pomlčka zabraňuje odsazení nuly u jednociferných hodnot.
_: jedno podtržítko přidá úvodní mezery pro jednociferné hodnoty.
0: Poskytuje úvodní nuly pro jednociferné hodnoty.
^: Používá velká písmena, pokud je to možné (ne všechny možnosti respektují tento modifikátor).
#: Pokud je to možné, použijte pro volbu opak výchozího případu (ne všechny možnosti respektují tento modifikátor).
Další dva elegantní triky
Chcete-li získat čas poslední úpravy souboru, použijte volbu -r (odkaz). Všimněte si, že toto používá – (pomlčku) místo znaku % a nevyžaduje znak +. Zkuste tento příkaz ve své domovské složce:
date -r .bashrc
Nastavení TZ umožňuje změnit časové pásmo po dobu trvání jednoho příkazu.
TZ=GMT date +%c
Použití data ve skriptech
Povolit skriptu Bash shell tisknout čas a datum je triviální. Vytvořte textový soubor s následujícím obsahem a uložte jej jako gd.sh.
#!/bin/bash TODAY=$(date +"Today is %A, %d of %B") TIMENOW=$(date +"The local time is %r") TIME_UK=$(TZ=BST date +"The time in the UK is %r") echo $TODAY echo $TIMENOW echo $TIME_UK
Zadejte následující příkaz, chcete-li nastavit oprávnění ke spuštění a nastavit skript jako spustitelný.
chmod +x gd.sh
Spusťte skript pomocí tohoto příkazu:
./gd.sh
K poskytnutí časového razítka můžeme použít příkaz date. Zobrazený skript vytvoří adresář s časovým razítkem jako názvem. Poté do ní zkopíruje všechny textové soubory z aktuální složky. Pravidelným spouštěním tohoto skriptu můžeme pořídit snímek našich textových souborů. Postupem času vytvoříme řadu složek s různými verzemi našich textových souborů.
Všimněte si, že toto není robustní zálohovací systém, je to pouze pro ilustrativní účely.
Vytvořte textový soubor s následujícím obsahem a uložte jej jako snapshot.sh.
#!/bin/bash # obtain the date and time date_stamp=$(date +"%F-%H-%M-%S") # make a directory with that name mkdir "$date_stamp" # copy the files from the current folder into it cp *.txt "$date_stamp" # all done, report back and exit echo "Text files copied to directory: "$date_stamp
Zadejte následující příkaz, chcete-li nastavit oprávnění ke spuštění a nastavit skript jako spustitelný.
chmod +x snapshot.sh
Spusťte skript pomocí tohoto příkazu:
./snapshot.sh
Uvidíte, že byl vytvořen adresář. Jeho název je datum a čas, kdy byl skript spuštěn. Uvnitř tohoto adresáře jsou kopie textových souborů.
Při troše přemýšlení a kreativity lze produktivně využít i příkaz skromného data.