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
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.