GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie den Datumsbefehl in Bash-Skripten unter Linux

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

Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So verwenden Sie den Su-Befehl unter Linux

  4. So verwenden Sie den Uptime-Befehl in Ubuntu Linux

  5. So verwenden Sie den Linux-Bildschirmbefehl

So verwenden Sie du Command unter Linux

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

So verwenden Sie den Befehl sysctl unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie grep unter Linux