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

Polecenie date znajduje się w powłoce Bash, która jest domyślną powłoką w większości dystrybucji Linuksa, a nawet w macOS. Ten samouczek pokazuje, jak kontrolować datę w wierszu poleceń i jak można jej używać w skryptach powłoki, aby zrobić coś więcej niż tylko wydrukować godzinę.

Uruchom polecenie date, aby wyświetlić te informacje. Drukuje aktualną datę i godzinę dla Twojej strefy czasowej:

date

Wyjście polecenia date

Domyślne formatowanie wygląda trochę głupio. Dlaczego rok nie jest drukowany po miesiącu i dniu, zamiast być oznaczony na końcu, za strefą czasową? Nie bój się: jeśli masz kontrolę nad formatem wyniku, który chcesz, data dostarcza go w pikach. Istnieje ponad 40 opcji, które możesz przekazać do tej pory, aby poinstruować go, aby sformatował wynik dokładnie tak, jak chcesz.

Aby użyć dowolnej opcji, wpisz datę, spację, znak plus + oraz opcję zawierającą wiodący znak procentu. Opcja% c (data i czas w formacie locale) powoduje, że data i godzina są drukowane w znormalizowanym formacie związanym z ustawieniami narodowymi. Ustawienia regionalne określają informacje geograficzne i kulturowe podane podczas instalacji systemu operacyjnego. Ustawienia regionalne regulują takie rzeczy, jak symbol waluty, rozmiary papieru, strefa czasowa i inne normy kulturowe.

date +%c

Wyjście polecenia date z opcją c

Rok pojawia się teraz w bardziej naturalnej pozycji w produkcji.

Możesz podać kilka opcji do tej pory naraz. Sekwencja opcji nazywana jest ciągiem formatującym. Aby zobaczyć nazwę dnia (% A), dzień miesiąca (% d) i nazwę miesiąca (% B), użyj tego polecenia:

date +%A%d%B

Wyjście polecenia date z opcjami A d B.

To zadziałało, ale jest brzydkie. Nie ma problemu, możemy wstawiać spacje, o ile cały ciąg formatujący zawijamy w cudzysłów. Zauważ, że + wychodzi poza cudzysłowy.

date +"%A %d %B"

Wyjście polecenia date z opcją A d B ze spacjami

Możesz dodać tekst do ciągu formatu, na przykład:

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

Wyjście polecenia danych z tekstem dodanym przez użytkownika

Przewijanie daty w górę iw dół strona podręcznika szukanie żądanej opcji szybko staje się męczące. Podzieliliśmy opcje na grupy, aby ułatwić Ci poruszanie się po nich.

Opcje wyświetlania daty i godziny

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

Wyjście polecenia date

Opcje wyświetlania daty

% D: Drukuje datę w formacie mm / dd / rr.
% F: Drukuje datę w formacie rrrr-mm-dd.
% x: Drukuje datę w formacie zgodnym z ustawieniami narodowymi.

Wyjście polecenia date z opcjami DF x

Opcje wyświetlania dnia

% a: Drukuje nazwę dnia, w skrócie pon., wt., śr. itd.
% A: drukuje pełną nazwę dnia, poniedziałek, wtorek, środę itd.
% u: Drukuje numer dnia tygodnia, gdzie poniedziałek = 1, wtorek = 2, środa = 3 itd.
% w: Drukuje numer dnia tygodnia, gdzie niedziela = 0, poniedziałek = 1, wtorek = 2 itd.
% d: Drukuje dzień miesiąca, w razie potrzeby z zerem na początku (01, 02… 09).
% e: Drukuje dzień miesiąca, w razie potrzeby ze spacją na początku („1”, „2”… „9”). Zwróć uwagę, że apostrofy nie są drukowane.
% j: Drukuje dzień roku, w razie potrzeby z maksymalnie dwoma wiodącymi zerami.

Wyjście polecenia date z opcjami A uwdej

Opcje wyświetlania tygodnia

% U: Drukuje numer tygodnia w roku, traktując niedzielę jako pierwszy dzień tygodnia. Na przykład trzeci tydzień roku, dwudziesty tydzień roku itp.
% V: drukuje numer tygodnia w roku według ISO, biorąc pod uwagę poniedziałek jako pierwszy dzień tygodnia.
% W: numer tygodnia w roku, biorąc pod uwagę poniedziałek jako pierwszy dzień tygodnia.

Wyjście polecenia date z opcjami UVW

Opcje wyświetlania miesiąca

% b lub% h: Drukuje nazwę miesiąca w skrócie Jan, Lut, Mar itd.
% B: drukuje pełną nazwę miesiąca, stycznia, lutego, marca itd.
% m: Drukuje numer miesiąca, w razie potrzeby z zerem na początku 01, 02, 03… 12.

Wyjście polecenia date z opcjami bh B m

Opcje wyświetlania roku

% C: Drukuje wiek bez roku. W 2019 wydrukowałby 20.
% y: Drukuje rok jako dwie cyfry. w 2019 wydrukuje 19.
% Y: Drukuje rok jako cztery cyfry.

Wyjście polecenia date z opcjami C y Y

Opcje wyświetlania czasu

% T: Drukuje czas jako GG: MM: SS.
% R: Drukuje godzinę i minuty jako HH: MM bez sekund, używając zegara 24-godzinnego.
% r: Drukuje czas zgodnie z ustawieniami regionalnymi, używając zegara 12-godzinnego i wskaźnika am lub pm.
% X: Drukuje czas zgodnie z ustawieniami regionalnymi, używając zegara 24-godzinnego. Rzekomo. Zwróć uwagę, że podczas testowania ta opcja zachowywała się dokładnie tak, jak% r, jak pokazano poniżej. Na komputerze z Linuksem skonfigurowanym dla brytyjskich ustawień regionalnych i ustawionym na GMT, wydrukował czas, używając zegara 24-godzinnego bez wskaźnika AM lub PM, zgodnie z oczekiwaniami.

Wyprowadzenie polecenia daty z opcjami TR r X

Opcje wyświetlania godziny

% H: Drukuje godzinę 00, 01, 02… 23.
% I: Drukuje godzinę przy użyciu zegara 12-godzinnego, 00, 01, 02… 12, z początkowym zerem, jeśli jest to wymagane.

Wyjście polecenia daty z opcjami HI

Opcje wyświetlania minut

% M: wyświetla minutę, 01, 02, 03… 59, z początkowym zerem, jeśli jest to wymagane.

Wyjście polecenia date z opcjami M.

Opcje wyświetlania sekund

% s: Drukuje liczbę sekund od 1970-01-01 00:00:00, czyli początku Unix Epoch.
% S: drukuje sekundy, 01, 02, 03… 59, w razie potrzeby z zerem na początku.
% N: drukuje nanosekundy.

Wyjście polecenia daty z opcjami s SN

Opcje wyświetlania informacji o strefie czasowej

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

Wyjście polecenia daty z opcjami strefy czasowej

Opcje związane z formatowaniem

% p: Drukuje wskaźnik AM lub PM wielkimi literami.
% P: Drukuje wskaźnik am lub pm małymi literami. Zwróć uwagę na dziwactwo z tymi dwiema opcjami. Mała litera p daje wyjście z dużej litery, a duża litera P – małe litery.
% t: drukuje kartę.
% n: Drukuje nowy wiersz.

Wyjście polecenia date ze wskaźnikiem AM PM i opcjami formatowania

Opcje modyfikowania innych opcji

Te modyfikatory można wstawić między% a literą opcji innych opcji, aby zmodyfikować ich wyświetlanie. Na przykład% -S usunie początkowe zero dla jednocyfrowych wartości sekund.

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

Wyjście polecenia date z opcjami formatowania

Jeszcze dwie fajne sztuczki

Aby uzyskać czas ostatniej modyfikacji pliku, użyj opcji -r (odniesienie). Zauważ, że używa to – (łącznika) zamiast znaku% i nie wymaga znaku +. Wypróbuj to polecenie w swoim folderze domowym:

date -r .bashrc

Wyjście polecenia daty z opcją czasu modyfikacji pliku

Ustawienie TZ umożliwia zmianę strefy czasowej na czas trwania pojedynczego polecenia.

TZ=GMT date +%c

Wyjście polecenia daty dla innej strefy czasowej

Używanie daty w skryptach

Włączenie skryptu powłoki Bash do drukowania czasu i daty jest trywialne. Utwórz plik tekstowy z następującą 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

Wpisz następujące polecenie, aby ustawić uprawnienia wykonywania i uczynić skrypt wykonywalnym.

chmod +x gd.sh

Uruchom skrypt za pomocą tego polecenia:

./gd.sh

Wyjście skryptu gd.sh

Możemy użyć polecenia date, aby podać znacznik czasu. Pokazany skrypt utworzy katalog z sygnaturą czasową jako nazwą. Następnie skopiuje do niego wszystkie pliki tekstowe z bieżącego folderu. Uruchamiając ten skrypt okresowo, możemy wykonać migawkę naszych plików tekstowych. Z czasem utworzymy serię folderów z różnymi wersjami naszych plików tekstowych.

Zauważ, że nie jest to solidny system tworzenia kopii zapasowych, służy tylko do celów ilustracyjnych.

Utwórz plik tekstowy z następującą 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

Wpisz następujące polecenie, aby ustawić uprawnienia wykonywania i uczynić skrypt wykonywalnym.

chmod +x snapshot.sh

Uruchom skrypt za pomocą tego polecenia:

./snapshot.sh

Efekt uruchomienia skryptu snapshot.sh

Zobaczysz, że katalog został utworzony. Jego nazwa to data i godzina wykonania skryptu. Wewnątrz tego katalogu znajdują się kopie plików tekstowych.

Przy odrobinie przemyślenia i kreatywności nawet skromne polecenie dotyczące daty można wykorzystać w produktywny sposób.