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:
- Letztes Zugriffsdatum -
atime
- Datum der letzten Änderung -
mtime
- 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:
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
undreplit.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.