Holen Sie sich das Datum/die Uhrzeit der Dateierstellung in Bash

Abdul Mateen 20 Juni 2023
  1. Dateierstellung unter Linux
  2. Holen Sie sich das Datum/die Uhrzeit der Dateierstellung in Linux
Holen Sie sich das Datum/die Uhrzeit der Dateierstellung in Bash

In diesem Tutorial erfahren Sie, wie Sie das Datum und die Uhrzeit der Dateierstellung in Bash erhalten. Wir beginnen unsere Diskussion mit einer kurzen Einführung in die Dateierstellung in älteren Systemen.

Später werden wir die Dateierstellung in Bash lernen. Abschließend werden wir verschiedene Methoden besprechen, um Datum und Uhrzeit der Dateierstellung in Bash zu erhalten.

Dateierstellung unter Linux

Es gibt verschiedene Methoden, um Dateien unter Linux zu erstellen. Wir können die Shell oder den Desktop-Dateimanager für die Dateierstellung verwenden.

Dieser Artikel konzentriert sich auf das Erstellen einer Datei in Bash mit Shell-Befehlen.

Mit dem touch-Befehl

Unter Linux steht der Befehl touch zur Verfügung, um eine neue Datei zu erstellen. Die Syntax des touch-Befehls lautet touch filename.

Um eine Datei zu erstellen, nennen Sie sie ABC.XYZ; wir müssen schreiben:

$ touch ABC.XYZ

Dieser Befehl erstellt eine leere Datei mit dem Namen ABC.XYZ. Wir können den Befehl ls im aktuellen Verzeichnis ausführen, um die Datei anzuzeigen (falls erstellt).

Verwenden Sie den Befehl Katze

Mit Hilfe des cat-Befehls können wir eine neue Datei erstellen. Wir können Umleitungsoperationen mit dem Übernehmen von Eingaben des Benutzers in eine neue Datei kombinieren.

Der Befehl cat fordert den Benutzer auf, Text einzugeben. Benutzer können die Eingabetaste eingeben, um zur nächsten Zeile zu wechseln.

Um diesen Befehl zu beenden, drücken Sie Strg+D; die gesamte Texteingabe des Benutzers wird zeilenweise in der Datei gespeichert. Siehe Beispiel:

$ cat > my_file.txt
Welcome to Bash shell!
The text entered here will be written into a text file.
Ctrl+D

Die letzte Anweisung ist nicht geschrieben, sondern eine Tastenkombination, die vom Benutzer gedrückt wird, um den Befehl zu beenden. Als Antwort werden die folgenden 2 Zeilen in die Textdatei mit dem Namen my_file.txt geschrieben.

Verwenden des Umleitungsoperators

Wir können eine leere Datei erstellen, indem wir nur den Umleitungsoperator verwenden. Durch Eingabe des Umleitungsoperators gefolgt vom Dateinamen wird eine leere Textdatei erstellt.

Zum Beispiel:

$ > my_file.txt

Sie können erneut den Befehl ls verwenden, um die Dateierstellung zu überprüfen. Es ist auch möglich, dass eine gleichnamige Datei, in unserem Fall my_file.txt,, bereits existiert.

In diesem Fall löscht der Befehl den vorherigen Inhalt der Datei und es entsteht eine leere Datei mit dem Namen my_file.txt.

Wir sollten überprüfen und bestätigen, dass frühere Inhalte vorhanden sind oder entfernt werden. Verwenden Sie den Befehl cat, um den Inhalt der Datei zu lesen.

$ cat my_file.txt

Wenn nichts falsch ist, wie die Schreibweise des Dateinamens, des Verzeichnisses usw., dann ist die Datei leer.

Mit dem echo-Befehl

Der Befehl echo nimmt einen String als Argument und zeigt ihn als Ausgabe an. Zum Beispiel:

$ echo "This is the first file"
This is the first file

Wir können einige Inhalte nach dem echo-Befehl und dem Umleitungsoperator schreiben, um eine neue Datei mit den übergebenen Inhalten zu erstellen. Auch in diesem Fall entfernt der Befehl den vorherigen Inhalt, wenn die Datei bereits vorhanden ist.

Siehe Beispiel:

$ echo "This is the First file" > firstFile.txt

Das Ergebnis dieses echo-Befehls erstellt eine neue Datei, wobei eine Datei den als Argument an echo übergebenen Text enthält. Dies sind alle Methoden zum Erstellen von Dateien in Bash.

Um die Details zu lesen, klicken Sie auf diese Website.

Holen Sie sich das Datum/die Uhrzeit der Dateierstellung in Linux

Nachdem die Datei erfolgreich erstellt wurde, besteht unser nächster Schritt darin, das Datum und die Uhrzeit der Dateierstellung zu ermitteln. Auf den meisten älteren Systemen laufen alte Dateisystemversionen, die das Erstellungsdatum der Datei speichern müssen.

Da die POSIX-Standards nur 3 unterschiedliche Zeitstempelwerte angegeben haben, die für jede Datei gespeichert werden, besteht keine Anforderung mehr an ein Dateisystem, etwas darüber hinaus zu unterstützen, d. h. es steht keine Erstellungszeit zur Verfügung.

Diese 3 Zeitstempel speichern Informationen über:

  1. Letztes Zugriffsdatum - atime
  2. Datum der letzten Änderung - mtime
  3. Letztes Änderungsdatum - ctime

Diese Werte werden in der Struktur mit Dateieigenschaften namens struct stat zurückgegeben. Die zugehörigen Details sind auf der Website beschrieben.

Neuere Dateisysteme (ext4, zfs, btrfs, JFS und XFS) speichern den Erstellungszeitstempel jedoch in separaten Feldern:

  1. ext4crtime
  2. zfscrtime
  3. XFScrtime
  4. btrfsotime
  5. JFS - di_otime

Die obigen Felder speichern Daten in der Datei inode. Es gibt 3 verschiedene Möglichkeiten, um das Datum/die Uhrzeit der Dateierstellung in Bash zu erhalten.

Das erste ist sehr grob (nicht technisch) und kann mit alten Betriebssystemen funktionieren, während die nächsten 2 technisch sind, aber nur in fortgeschrittenen Betriebssystemen/in neueren Versionen verfügbar sind.

Verwenden Sie den Dateinamen

Wie wir bereits besprochen haben, zeigt der Befehl stat in älteren Betriebssystemen 3-Zeitstempel an, und es gibt keinen Zeitstempel im Zusammenhang mit der Dateierstellung. Der Benutzer (Dateiersteller) kann jedoch die Erstellungszeit mit dem Dateinamen verketten, was gültig ist, wenn der Dateiname nicht geändert wird.

Zum Beispiel:

touch data1_18_oct_2022_10_11_AM
touch data2_18_oct_2022_11_20_AM
...
ls -l

Ausgang:

-rwxrwxrwx 1 root  root   0 Oct 18 05:16 data1_18_oct_2022_10_11_AM
-rw-r--r-- 1 14079 14079  0 Oct 18 05:16 data2_18_oct_2022_11_20_AM
...
-rwxrwxrwx 1 root  root  69 Oct 18 05:16 main.bash

In der Ausgabe sind das Erstellungsdatum und die Uhrzeit der Datei mit dem Dateinamen sichtbar (normalerweise haben Leute Dateinamen wie Daten1, Daten2 usw.)

Verwenden Sie den Befehl stat

Der Befehl stat ist einfach, um das Datum/die Uhrzeit der Dateierstellung zu erhalten. Die ältere Version liefert uns 3-Zeitstempelwerte.

Diese Zeitstempelwerte sind der Zeitpunkt des letzten Zugriffs auf die Datei, der Zeitpunkt der letzten Änderung der Dateidaten und der Zeitpunkt der letzten Änderung des Dateistatus. Aber in neuen Betriebssystemversionen liefert es auch die Geburts-/Erstellungszeit der Datei.

Lassen Sie es uns überprüfen, indem Sie eine neue Datei in Bash erstellen und Datum/Uhrzeit abrufen.

touch f1
stat f1
touch f2
cat f2>f1
touch f1
stat f1

Ausgang:

Access: 2022-10-17 15:24:16.676971765 +0000
Modify: 2022-10-17 15:24:16.676971765 +0000
Change: 2022-10-17 15:24:16.676971765 +0000
 Birth: 2022-10-17 15:24:16.676971765 +0000

Access: 2022-10-17 15:24:16.684972083 +0000
Modify: 2022-10-17 15:24:16.684972083 +0000
Change: 2022-10-17 15:24:16.684972083 +0000
 Birth: 2022-10-17 15:24:16.676971765 +0000

Im obigen Code erstellen wir zuerst die Datei f1 mit dem Befehl touch und überprüfen dann das Erstellungsdatum/die Uhrzeit mit dem Befehl stat. Dann erstellen wir eine weitere Datei namens f2.

Mit cat und > hängen wir den Inhalt von f2 an das Ende von f1 an. Dann machen wir wieder f1 und prüfen dessen Erstellungsdatum/-zeit.

Wenn wir uns die Ausgabe genau ansehen, wissen wir, dass unser Zugriff-Datum/Uhrzeit der Datei f1 und Geburtsdatum/-uhrzeit der Datei f1 gleich sind, was bedeutet, dass beide Dateien am selben Datum/Uhrzeit erstellt wurden .

Hinweis: Wir haben das Skript auf jdoodle.com und replit.com ausgeführt, da beide neue Betriebssystemversionen unterstützen. Sie können die Skripte auch auf diesen Online-Compilern überprüfen.

Verwenden Sie den Befehl debugfs

Der Befehl debugfs ist auch im Dateisystem ext4 verfügbar; Mit diesem Befehl können wir das Datum der Dateierstellung finden. Bitte beachten Sie, dass der Hauptzweck des Befehls debugfs darin besteht, Dateisysteme zu debuggen; Mit diesem Befehl können wir jedoch auch Dateierstellungsdaten finden.

Zuerst brauchen wir die inode-Nummer unserer Datei, die wir mit dem ls-Befehl sehen können. Das Flag -i bewirkt, dass ls die Knotennummern von Dateien ausgibt.

$ ls -i ./file
5118705 ./file

Das df ist der Befehl, mit dem wir die Dateisysteme öffnen können.

~ $ df ./file
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             26046564   8380600  16338936  34% /

Als nächstes übergeben wir diese Informationen an den Befehl debugfs, und die Syntax davon lautet debugfs -R' stat <inode>'/dev/sdX, wobei inode unsere Datei inode und /dev/sdX ist das Dateisystem der Datei.

$ sudo debugfs -R 'stat <5118705>' /dev/sda2
debugfs 1.46.4 (18-Aug-2021)
Inode: 5118705   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 2975709199    Version: 0x00000000:00000001
User:  1000   Group:  1000   Project:     0   Size: 8
File ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x61bc31c8:19fee850 -- Fri Oct 14 06:44:24 2022
atime: 0x61bc3224:7f8fe250 -- Fri Oct 14 06:45:56 2022
mtime: 0x61bc31c8:19fee850 -- Fri Oct 14 06:44:24 2022
crtime: 0x61bc2b65:71f8e150 -- Fri Oct 14 06:17:09 2022
Size of extra inode fields: 32
Inode checksum: 0x5ddd5b4b
EXTENTS:
(0):5279293

Das oben sichtbare Feld crtime enthält die Erstellungszeit der Datei. Die Dateierstellungszeit Fr 14. Okt 06:17:09 2022 ist das genaue Datum, an dem die Datei erstellt wird.

Beachten Sie jedoch, dass das Feld ctime ähnlich, aber unterschiedlich erscheint. Die im Feld crtime enthaltene Zeit ist die letzte Statusänderung der Datei, wie eine Änderung der Rechte einer Datei.

In diesem Artikel haben wir 3 Möglichkeiten beschrieben, um Datum und Uhrzeit der Dateierstellung zu erhalten. Es hängt davon ab, ob der Benutzer ein älteres oder neueres Betriebssystem hat.

Bei der älteren Version können wir den ersten, nicht-technischen Weg übernehmen. Andernfalls ist die zweite und dritte Methode verfügbar, bei der die Verwaltung innerhalb des Betriebssystems erfolgt.

Benutzer können das Erstellungsdatum und die Uhrzeit abrufen, indem sie die entsprechenden Befehle ausführen.

Verwandter Artikel - Bash Date