Als ich anfing, Bash-Skripte zu schreiben, wurde mir klar, dass eine Operation, mit der ich mich oft in jedem Skript befasse, die Behandlung von Datum und Uhrzeit ist. Ich habe viele Operationen durchgeführt, z. B. das Benennen einer Datei / eines Verzeichnisses mit Datum, das Abrufen des API-Ergebnisses und das Umwandeln des Epochenwerts in Datum / Uhrzeit, die für die Anwendung geeignet sind, das Bearbeiten der Datumsspalte in CSV-Dateien usw. Wenn Sie ein Anfänger für Bash-Skripting sind, Dieser Artikel hilft zu verstehen, wie man den Datumsbefehl in Bash-Skripten verwendet, wie man mit Datum und Uhrzeit arbeitet, indem man den Datumsbefehl in Shell-Skripten verwendet, wie man sie manipuliert und verschiedene Operationen damit unter Linux durchführt.
Sie sollten ein grundlegendes Verständnis dafür haben, wie Datum und Uhrzeit des Systems eingestellt werden. Dieser Teil wird hauptsächlich vom Serveradministrator in Ihrer Arbeit erledigt.
Wenn Sie jedoch ein einzelner Benutzer sind und Linux auf Ihrem persönlichen Computer verwenden, sollten Sie wissen, wie Datum und Uhrzeit eingestellt werden, wie Sie sie synchronisieren und wie Sie sie ändern können.
Es gibt zwei Uhren, die von Linux verwendet werden, um die Zeit synchron zu halten.
- Echtzeituhr - Dies ist eine Uhr, die in Ihr System-Motherboard integriert ist und auch dann läuft, wenn Sie den Computer herunterfahren.
- Systemuhr - Dies wird vom Linux-Kernel gehandhabt und während des Systemstarts erhält der Kernel die Anfangszeit von der Echtzeituhr.
Ich werde den Prozess der Einrichtung eines Datums und einer Uhrzeit nicht durchgehen, das ist ein separates Thema, das besprochen werden muss. Beginnen wir damit, uns den Kernteil dieses Artikels anzusehen, in dem es um die Verwendung des date
geht Befehl im Bash-Skripting unter Linux.
Hilfe bekommen
Zuerst können Sie die binäre Position des date
überprüfen Befehl, indem Sie den folgenden Befehl ausführen.
$ which date /usr/bin/date
Das date
command ist kein eingebautes Shell sondern ein externes Programm. Sie können diese Informationen abrufen, indem Sie type
ausführen Befehl.
$ type -a date date is /usr/bin/date date is /bin/date
Es gibt viele Optionen, mit denen man arbeiten kann, und es ist nicht möglich, sich an alles zu erinnern, und hier werden die Hilfe und die Manpage nützlich sein.
Führen Sie den folgenden Befehl aus, um auf die Manpage von date
zuzugreifen Befehl.
$ man date
Führen Sie den folgenden Befehl aus, um auf die Hilfenachricht zuzugreifen.
$ date --help
Aktuelles Datum und Uhrzeit drucken
Starten Sie Ihr Terminal und führen Sie einfach date
aus Befehl. Sie erhalten das aktuelle Datum zusammen mit der Uhrzeit und der Zeitzone. In meinem Fall habe ich die Zeitzone auf IST eingestellt während der Installation meines Betriebssystems.
$ date Sunday 13 February 2022 11:27:17 AM IST
Sie können Datum und Uhrzeit auch in UTC abrufen Zeitzone mit -u
Flagge.
$ date -u Sunday 13 February 2022 05:57:36 AM UTC
Zeitzonenumrechnung
Sie können die Ausgabe des date
erhalten Befehl in verschiedenen Zeitzonen, indem Sie die Umgebungsvariable TZ setzen . Ich habe die TZ auf Moskau gesetzt und Singapur Zeitzone im Beispiel unten.
$ Z="Europe/Moscow" date
Sunday 13 February 2022 08:59:03 AM MSK
$ TZ="Asia/Singapore" date
Sunday 13 February 2022 01:59:37 PM +08
Sie können die Liste der Zeitzonen abrufen, indem Sie die Datei „timedatectl
" Befehl.
$ timedatectl list-timezones
$ timedatectl list-timezones | grep -i singapore
Asia/Singapore
Singapore
$ timedatectl list-timezones | grep -i moscow
Europe/Moscow
Zeitpunkt der letzten Änderung einer Datei
Normalerweise verwenden wir den stat
Befehl, um die Änderungszeit einer Datei zu überprüfen. Dasselbe kann mit dem date
überprüft werden Befehl mit dem -r
Flagge.
$ stat ~/.bashrc File: /home/karthick/.bashrc Size: 4342 Blocks: 16 IO Block: 4096 regular file Device: 806h/2054d Inode: 27787278 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/karthick) Gid: ( 1000/karthick) Access: 2022-02-13 09:06:45.713721080 +0530 Modify: 2022-02-11 20:18:52.485178931 +0530 Change: 2022-02-11 20:18:52.485178931 +0530 Birth: -
$ date -r ~/.bashrc Friday 11 February 2022 08:18:52 PM IST
Sie können die stat
sehen Befehlsausgabeformat unterscheidet sich vom date
Befehl, aber beide dienen demselben Zweck.
Verschiedene Formatierungsoptionen
Das date
Der Befehl unterstützt Formatierungsoptionen und mit diesen Optionen können Sie Ihr date
formatieren Befehlsausgabe in jedem gewünschten Format oder Sie können nur den bestimmten Wert aus der Ausgabe abrufen.
Öffnen Sie das date
man-Seite des Befehls und suchen Sie nach dem Abschnitt, wie in der Abbildung unten gezeigt.
Es gibt viele Formatierungsoptionen, aber nicht alle sind nützlich. Wir werden einige der wichtigen Formatierungsoptionen sehen und verstehen, wie sie funktionieren.
Standardmäßig das date
Der Befehl zeigt Datum und Uhrzeit an. Was ist, wenn Sie nur das Datum oder die Uhrzeit drucken möchten?
$ date
Sunday 13 February 2022 11:27:17 AM IST
Um nur das Datum zu erhalten, können Sie den %F
verwenden Flag oder %D
Flagge.
$ date +%F
2021-11-16
$ date +%D
02/13/22
Wenn Sie Formatter-Flags verwenden, sollten Sie ihnen +
voranstellen Symbol, wie ich es in den obigen Beispielen getan habe.
- Die Ausgabe von
%F
Flag wird in YYYY-MM-DD sein formatieren. - Die Ausgabe von
%D
Flag wird in MM/TT/JJ sein formatieren.
Sie können Tag, Monat und Jahr einzeln abrufen und Ihre eigene neue formatierte Ausgabe erstellen.
$ date +%Y
2022
$ date +%m
02
$ date +%d
13
Um Ihre eigene formatierte Ausgabe zu erstellen, kombinieren Sie einfach alle unten gezeigten Flags.
$ date +%Y_%m_%d
2022_02_13
Ähnlich wie beim Datum können Sie auch die Uhrzeit allein mit %r
abrufen (12-Stunden-Format) oder %T
(24-Stunden-Format) gekennzeichnet.
$ date +%r # 12 hour format
11:24:12 PM IST
$ date +%T # 24 hour format
23:24:11
Sie können Stunden, Minuten und Sekunden einzeln erfassen und Ihre eigene formatierte Ausgabe erstellen.
$ date +%H
12
$ date +%M
24
$ date +%S
03
Kombinieren Sie alle oben genannten Flags und erstellen Sie eine benutzerdefinierte Ausgabe.
$ date +%H_%M_%S
12_26_53
Wo helfen nun diese benutzerdefinierten Formatierungsoptionen? Wenn ich Dateien als Teil des Skripts erstelle, benenne ich sie mit dem heutigen Datum. Es wird mir also nützlich sein, bei Bedarf einen Blick darauf zu werfen.
Bisher haben wir gesehen, wie man individuell mit Datum und Uhrzeit arbeitet. Manchmal möchten Sie möglicherweise sowohl Datum als auch Uhrzeit anzeigen. In diesem Fall können Sie Datum und Uhrzeit wie unten beschrieben kombinieren oder Ihre eigene formatierte Ausgabe erstellen.
$ date "+%F %r"
2021-11-16 11:29:06 PM IST
Skript nur an bestimmten Tagen ausführen
In einigen Fällen möchten Sie Ihr Skript möglicherweise nur an einem bestimmten Wochentag ausführen. Wenn ich beispielsweise möchte, dass mein Skript nur am Freitag ausgeführt wird, kann ich %A
verwenden (Freitag) oder %a
(Fr) Flags und entsprechende Logik schreiben.
if [[ $(date +%A) = Friday ]] then echo "Running the code" else echo "Today is not Friday, Exiting the script" fi OUTPUT: Today is not Friday, Exiting the script
Es stehen weitere Formatierungsoptionen zur Verfügung. Sehen Sie sich die Manpage an und erkunden Sie sie alle.
Ausgabe in einer Variablen speichern
Beim Schreiben von Skripten empfiehlt es sich, die Ausgabe von date
zu speichern Befehl in eine Variable und verwenden Sie die Variable im Skript. Ein solches Szenario ist das Erstellen des Dateinamens mit Datum und Uhrzeit.
Sehen Sie sich das folgende Beispiel an, in dem das heutige Datum in der Variablen TDY
gespeichert wird und das gleiche wird verwendet, um einen Dateinamen "disk_usage_${TDY}.txt
zu erstellen ", die die Ausgabe von "df -h
speichert " Befehl.
$ TDY=$(date +%F)
$ df -h > ~/disk_usage_${TDY}.txt
$ ls -l *.txt -rw-rw-r-- 1 karthick karthick 474 Feb 13 23:40 disk_usage_2022-02-13.txt
$ cat disk_usage_2022-02-13.txt Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 154M 1.5G 10% /run /dev/sda7 93G 27G 61G 31% / tmpfs 7.8G 82M 7.7G 2% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/sda9 261G 130G 118G 53% /nextdrive /dev/sda6 348G 110G 221G 34% /home /dev/sda5 2.0G 234M 1.8G 12% /boot/efi tmpfs 1.6G 180K 1.6G 1% /run/user/1000
Mit -d
oder --date
Flagge
Dies ist ein wichtiges Feature, das mir am besten bei date
gefällt Befehl. Sie können den String als Argument an -d
übergeben oder --date
Flag und Sie erhalten die Ausgabe im Standardformat.
Sehen Sie sich die folgenden Beispiele an. Ich habe String-Argumente als „today
übergeben ", "yesterday
", "tomorrow
", "last Thursday
", "Today (+,-) 20 years
" bis zum --date
Flagge. Der Date-Befehl interpretiert diese Zeichenfolgen und konvertiert die Ausgabe in ihr Standardformat.
$ date --date "Today"
Sunday 13 February 2022 01:01:26 PM IST
$ date --date "now"
Sunday 13 February 2022 01:01:34 PM IST
$ date --date "yesterday"
Saturday 12 February 2022 01:01:39 PM IST
$ date --date "Tomorrow"
Monday 14 February 2022 01:01:45 PM IST
$ date --date "Last Thursday"
Thursday 10 February 2022 12:00:00 AM IST
$ date --date "Today - 20 years"
Wednesday 13 February 2002 01:01:56 PM IST
$ date --date "Today + 20 years"
Thursday 13 February 2042 01:02:01 PM IST
Sie können mehr relative String-Argumente übergeben, als ich im obigen Beispiel gezeigt habe.
Epochenzeit
Die Epochenzeit kann mit -d
in das aktuelle Datums- und Zeitformat konvertiert werden oder --date
Flagge. Der %s
Die Flag-Ausgabe erfolgt im Epochenformat.
$ date +%s
1644737777
Um es in ein menschenlesbares Standardformat zu konvertieren, fügen Sie @
hinzu gefolgt von der Epochenzeit wie unten gezeigt.
$ date --date @1644737777
Sunday 13 February 2022 01:06:17 PM IST
In allen obigen Beispielen sehen Sie, dass die Standardausgabe angezeigt wird. Sie können die Formatierer zusammen mit dem -d
kombinieren oder --date
Flag, um eine benutzerdefinierte Ausgabe zu erhalten.
$ date --date "Today + 20 years" +%Y
2042
$ date --date "Today + 21 years" +%s
2275890194
$ date --date @2275890194 +%Y
2042
Schlussfolgerung
In diesem Artikel haben wir die Verwendung des date
besprochen Befehl in Bash-Scripting mit Beispielen. Zu diesem Zeitpunkt sollten Sie mit der Verwendung des date
vertraut sein Befehl in Ihren Skripten. Es stehen viele Formatierungsoptionen zur Verfügung, testen Sie sie und machen Sie sich mit ihnen vertraut.
Wenn Sie Feedback oder Vorschläge zu diesem Artikel haben, teilen Sie uns dies über den Kommentarbereich unten mit.
Bash-Scripting-Leitfäden:
- So debuggen Sie Bash-Skripte unter Linux und Unix
- Bash-Skripting – Parsen von Argumenten in Bash-Skripten mithilfe von getopts
- Erstellen von GUI-Dialogfeldern in Bash-Skripten mit Zenity unter Linux und Unix
- Bash-Skripting – Case-Statement
- Bash-Skripting – Bedingte Anweisungen
- Bash-Scripting – String-Manipulation
- Bash-Scripting – Printf-Befehl mit Beispielen erklärt
- Bash-Skripting – Indiziertes Array mit Beispielen erklärt
- Bash-Skripting – Assoziatives Array mit Beispielen erklärt
- Bash-Skripting – For-Schleife mit Beispielen erklärt
- Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt
- Bash-Umleitung mit Beispielen erklärt
- Bash-Scripting – Variablen mit Beispielen erklärt
- Bash-Scripting – Funktionen mit Beispielen erklärt
- Bash-Echo-Befehl mit Beispielen in Linux erklärt
- Bash Heredoc-Tutorial für Anfänger