Jak wyświetlić datę i godzinę w terminalu Linux (i używać ich w skryptach Bash)

Photo of author

By maciekx

Polecenie date jest dostępne w powłoce Bash, która jest standardową powłoką w wielu dystrybucjach systemu Linux, a także w macOS. W tym przewodniku przedstawimy, jak zarządzać datą w terminalu oraz jak można wykorzystać to polecenie w skryptach powłokowych, aby zrobić więcej niż tylko wyświetlenie aktualnej godziny.

Aby uzyskać aktualną datę i godzinę w swojej strefie czasowej, wystarczy uruchomić polecenie:

date

Domyślny format wyjścia może wydawać się nieco nieintuicyjny. Zastanawiasz się, dlaczego rok nie jest wyświetlany po miesiącu i dniu, lecz na końcu, po strefie czasowej? Nie martw się – masz pełną kontrolę nad formatowaniem wyniku. Polecenie date oferuje ponad 40 różnych opcji, które można wykorzystać do dostosowania formatu wyjścia według własnych potrzeb.

Aby skorzystać z dowolnej opcji, należy wpisać date, a następnie spację, znak plus + oraz wybraną opcję z wiodącym znakiem procentu. Na przykład, opcja %c (data i czas w formacie lokalnym) powoduje, że data i godzina będą wyświetlane zgodnie z ustawieniami regionalnymi. Ustawienia te obejmują różne informacje geograficzne i kulturowe, które są konfigurowane podczas instalacji systemu operacyjnego.

date +%c

Teraz rok pojawia się w bardziej logicznej pozycji w wyniku.

Możesz także używać kilku opcji jednocześnie. Sekwencja opcji nazywana jest ciągiem formatującym. Aby zobaczyć nazwę dnia tygodnia (%A), dzień miesiąca (%d) oraz nazwę miesiąca (%B), użyj następującego polecenia:

date +%A%d%B

Chociaż działa poprawnie, efekt jest nieestetyczny. Możesz dodać spacje pomiędzy elementami formatowania, zamykając cały ciąg w cudzysłowach. Zauważ, że znak + znajduje się poza cudzysłowami.

date +"%A %d %B"

Możesz również dodać tekst do swojego ciągu formatowania, na przykład:

date +"Today is: %A %d %B"

Przeglądanie opcji na stronie man w celu znalezienia odpowiedniej opcji może być nużące. Dlatego zgrupowaliśmy opcje, aby ułatwić nawigację.

Opcje wyświetlania daty i godziny

%c: Wyświetla datę i godzinę w formacie zgodnym z ustawieniami regionalnymi, w tym strefą czasową.

Opcje wyświetlania daty

%D: Wyświetla datę w formacie mm/dd/rr.
%F: Wyświetla datę w formacie rrrr-mm-dd.
%x: Wyświetla datę w formacie zgodnym z ustawieniami regionalnymi.

Opcje wyświetlania dnia

%a: Wyświetla skróconą nazwę dnia (np. pon., wt., śr.).
%A: Wyświetla pełną nazwę dnia (np. poniedziałek, wtorek, środa).
%u: Wyświetla numer dnia tygodnia, gdzie poniedziałek to 1, wtorek to 2 itd.
%w: Wyświetla numer dnia tygodnia, gdzie niedziela to 0, poniedziałek to 1 itd.
%d: Wyświetla dzień miesiąca z wiodącym zerem (np. 01, 02… 09).
%e: Wyświetla dzień miesiąca z przestrzenią przed jednocyfrowymi wartościami (np. 1, 2… 9). Zwróć uwagę, że apostrofy nie są wyświetlane.
%j: Wyświetla dzień roku z maksymalnie dwoma wiodącymi zerami.

Opcje wyświetlania tygodnia

%U: Wyświetla numer tygodnia w roku, traktując niedzielę jako pierwszy dzień tygodnia.
%V: Wyświetla numer tygodnia w roku według standardu ISO, z poniedziałkiem jako pierwszym dniem tygodnia.
%W: Wyświetla numer tygodnia w roku, z poniedziałkiem jako pierwszym dniem tygodnia.

Opcje wyświetlania miesiąca

%b lub %h: Wyświetla skróconą nazwę miesiąca (np. Jan, Lut, Mar).
%B: Wyświetla pełną nazwę miesiąca (np. styczeń, luty, marzec).
%m: Wyświetla numer miesiąca z wiodącym zerem (np. 01, 02, 03… 12).

Opcje wyświetlania roku

%C: Wyświetla wiek bez roku (np. w 2019 wyświetli 20).
%y: Wyświetla rok jako dwie cyfry (np. w 2019 wyświetli 19).
%Y: Wyświetla rok jako cztery cyfry.

Opcje wyświetlania czasu

%T: Wyświetla czas w formacie GG:MM:SS.
%R: Wyświetla godzinę i minuty jako HH:MM bez sekund, używając zegara 24-godzinnego.
%r: Wyświetla czas zgodnie z ustawieniami regionalnymi, używając zegara 12-godzinnego z oznaczeniem AM lub PM.
%X: Wyświetla czas według ustawień regionalnych, używając zegara 24-godzinnego. Zwróć uwagę, że w przypadku testów ta opcja zachowywała się tak samo jak %r.

Opcje wyświetlania godziny

%H: Wyświetla godzinę w formacie 00, 01, 02… 23.
%I: Wyświetla godzinę w formacie 12-godzinowym, z wiodącym zerem, jeśli jest to konieczne.

Opcje wyświetlania minut

%M: Wyświetla minutę w formacie 01, 02, 03… 59, z wiodącym zerem, jeśli to konieczne.

Opcje wyświetlania sekund

%s: Wyświetla liczbę sekund od 1970-01-01 00:00:00, czyli początek Unix Epoch.
%S: Wyświetla sekundy w formacie 01, 02, 03… 59, z wiodącym zerem, jeśli to konieczne.
%N: Wyświetla nanosekundy.

Opcje wyświetlania informacji o strefie czasowej

%z: Wyświetla różnicę czasu między strefą czasową a czasem UTC.
%:z: Wyświetla różnicę czasu między strefą czasową a czasem UTC, z: godzinami i minutami. Zwróć uwagę na: między znakiem % a z.
%::z: Wyświetla różnicę czasu między strefą czasową a czasem UTC, z: godzinami, minutami i sekundami. Zwróć uwagę na :: między znakiem % a z.
%Z: Wyświetla nazwę strefy czasowej w formie alfabetycznej.

Opcje związane z formatowaniem

%p: Wyświetla wskaźnik AM lub PM wielkimi literami.
%P: Wyświetla wskaźnik am lub pm małymi literami. Zwróć uwagę na różnicę w tych dwóch opcjach – mała litera p daje wyjście z dużej litery, a duża litera P – małe litery.
%t: Wyświetla tabulator.
%n: Wyświetla nową linię.

Opcje modyfikacji innych opcji

Można wprowadzić modyfikatory pomiędzy znakiem % a literą opcji, by zmienić ich wyświetlanie. Na przykład % -S usunie wiodące zera dla jednocyfrowych wartości sekund.

-: Pojedynczy łącznik zapobiega wypełnianiu zerami wartości jednocyfrowych.
_: Pojedyncze podkreślenie dodaje początkowe spacje dla wartości jednocyfrowych.
0: Włącza wiodące zera dla wartości jednocyfrowych.
^: Używa wielkich liter, jeśli to możliwe (nie wszystkie opcje to uwzględniają).
#: Jeśli to możliwe, używa wartości odwrotnej do domyślnej dla opcji (nie wszystkie opcje to uwzględniają).

Dwie ciekawe techniki

Aby uzyskać czas ostatniej modyfikacji pliku, użyj opcji -r (odniesienie). Zauważ, że w tym przypadku używamy łącznika zamiast znaku procentu, a także nie wymaga on znaku +. Spróbuj wykonać to polecenie w swoim katalogu domowym:

date -r .bashrc

Możliwość ustawienia zmiennej TZ pozwala na zmianę strefy czasowej dla trwania jednego polecenia.

TZ=GMT date +%c

Wykorzystanie polecenia date w skryptach

Dodanie polecenia date do skryptu powłokowego Bash w celu wyświetlenia daty i godziny jest bardzo proste. Stwórz plik tekstowy z poniższą zawartością i zapisz go 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

Użyj poniższego polecenia, aby nadać skryptowi uprawnienia do wykonywania:

chmod +x gd.sh

Aby uruchomić skrypt, wpisz:

./gd.sh

Możemy również użyć polecenia date do generowania znaczników czasu. Przykładowy skrypt stworzy katalog z nazwą odpowiadającą znacznikowi czasu, a następnie skopiuje do niego wszystkie pliki tekstowe z bieżącego folderu. Uruchamiając ten skrypt okresowo, można uzyskać migawki plików tekstowych, co z czasem pozwala na stworzenie serii folderów z różnymi wersjami tych plików.

Warto zauważyć, że to nie jest solidny system tworzenia kopii zapasowych, a jedynie przykład.

Utwórz plik tekstowy z poniższą zawartością i zapisz go 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

Aby nadać temu skryptowi uprawnienia do wykonywania, użyj poniższego polecenia:

chmod +x snapshot.sh

Uruchom skrypt za pomocą następującego polecenia:

./snapshot.sh

Zobaczysz, że utworzono katalog o nazwie odpowiadającej dacie i godzinie, w którym znajdują się kopie plików tekstowych.

Przy odrobinie kreatywności i przemyślenia, nawet podstawowe polecenie date może być wykorzystane w wielu praktycznych zastosowaniach.


newsblog.pl