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
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
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
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"
Możesz dodać tekst do ciągu formatu, na przykład:
date +"Today is: %A %d %B"
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.
Spis treści:
Opcje wyświetlania daty i godziny
% c: Drukuje datę i godzinę w formacie zgodnym z ustawieniami regionalnymi, w tym strefą czasową.
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.
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.
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.
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.
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.
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.
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.
Opcje wyświetlania minut
% M: wyświetla minutę, 01, 02, 03… 59, z początkowym zerem, jeśli jest to wymagane.
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.
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.
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.
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).
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
Ustawienie TZ umożliwia zmianę strefy czasowej na czas trwania pojedynczego polecenia.
TZ=GMT date +%c
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
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
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.