Πώς να εμφανίσετε την ημερομηνία και την ώρα στο τερματικό Linux (και να τα χρησιμοποιήσετε σε σενάρια Bash)

Η εντολή ημερομηνίας βρίσκεται στο κέλυφος του Bash, το οποίο είναι το προεπιλεγμένο κέλυφος στις περισσότερες διανομές Linux, ακόμη και στο macOS. Αυτό το σεμινάριο σάς δείχνει πώς να κυριαρχήσετε την ημερομηνία στη γραμμή εντολών και πώς μπορείτε να τη χρησιμοποιήσετε σε σενάρια κελύφους για να κάνετε περισσότερα από την απλή εκτύπωση της ώρας.

Εκτελέστε την εντολή ημερομηνία για να δείτε αυτές τις πληροφορίες. Εκτυπώνει την τρέχουσα ημερομηνία και ώρα για τη ζώνη ώρας σας:

date

Η προεπιλεγμένη μορφοποίηση φαίνεται λίγο ανόητη. Γιατί το έτος δεν τυπώνεται μετά τον μήνα και την ημέρα, αντί να επισημαίνεται στο τέλος, πίσω από τη ζώνη ώρας; Μην φοβάστε: Αν είναι ο έλεγχος της μορφής της εξόδου που θέλετε, η ημερομηνία την παραδίδει με μπαστούνια. Υπάρχουν περισσότερες από 40 επιλογές που μπορείτε να μεταβιβάσετε μέχρι σήμερα για να του δώσετε εντολή να μορφοποιήσει την έξοδο του όπως ακριβώς θέλετε.

Για να χρησιμοποιήσετε οποιαδήποτε από τις επιλογές, πληκτρολογήστε ημερομηνία, ένα κενό, ένα σύμβολο συν + και την επιλογή που περιλαμβάνει το σύμβολο του πρώτου ποσοστού. Η επιλογή %c (δεδομένα και ώρα σε μορφή τοπικής ρύθμισης) προκαλεί την εκτύπωση της ημερομηνίας και της ώρας στην κανονικοποιημένη μορφή που σχετίζεται με τις τοπικές ρυθμίσεις σας. Η τοπική σας ρύθμιση ορίζεται από τις γεωγραφικές και πολιτιστικές πληροφορίες που παρείχατε κατά την εγκατάσταση του λειτουργικού σας συστήματος. Οι τοπικές ρυθμίσεις διέπουν πράγματα όπως το σύμβολο νομίσματος, τα μεγέθη χαρτιού, τη ζώνη ώρας και άλλα πολιτιστικά πρότυπα.

date +%c

Το έτος εμφανίζεται πλέον σε πιο φυσική θέση στην παραγωγή.

Μπορείτε να περάσετε πολλές επιλογές για ραντεβού ταυτόχρονα. Μια ακολουθία επιλογών ονομάζεται συμβολοσειρά μορφοποίησης. Για να δείτε το όνομα της ημέρας (%A), την ημέρα του μήνα (%d) και το όνομα του μήνα (%B), χρησιμοποιήστε αυτήν την εντολή:

date +%A%d%B

Αυτό λειτούργησε, αλλά είναι άσχημο. Κανένα πρόβλημα, μπορούμε να συμπεριλάβουμε κενά αρκεί να τυλίξουμε ολόκληρη τη συμβολοσειρά μορφής σε εισαγωγικά. Σημειώστε ότι το + ξεφεύγει από τα εισαγωγικά.

date +"%A %d %B"

Μπορείτε να προσθέσετε κείμενο στη συμβολοσειρά μορφής, ως εξής:

date +"Today is: %A %d %B"

Κύλιση προς τα πάνω και προς τα κάτω στην ημερομηνία σελίδα ανθρώπου Η αναζήτηση της επιλογής που θέλετε σύντομα γίνεται κουραστική. Έχουμε μπερδέψει τις επιλογές σε ομάδες για να σας βοηθήσουμε να τις βρίσκετε πιο εύκολα.

Πίνακας περιεχομένων

Επιλογές για την εμφάνιση της ημερομηνίας και της ώρας

%c: Εκτυπώνει την ημερομηνία και την ώρα στη μορφή για τις τοπικές ρυθμίσεις σας, συμπεριλαμβανομένης της ζώνης ώρας.

Επιλογές για την εμφάνιση της ημερομηνίας

%D: Εκτυπώνει την ημερομηνία σε μορφή mm/dd/yy.
%F: Εκτυπώνει την ημερομηνία σε μορφή εεε-μμ-ηη.
%x: Εκτυπώνει την ημερομηνία στη μορφή για τις τοπικές ρυθμίσεις σας.

Επιλογές εμφάνισης της ημέρας

%a: Εκτυπώνει το όνομα της ημέρας, σε συντομογραφία Mon, Tue, Wed, κ.λπ.
%A: Εκτυπώνει το πλήρες όνομα της ημέρας, Δευτέρα Τρίτη, Τετάρτη κ.λπ.
%u: Εκτυπώνει τον αριθμό της ημέρας της εβδομάδας, όπου Δευτέρα=1, Τρίτη=2, Τετάρτη=3 κ.λπ.
%w: Εκτυπώνει τον αριθμό της ημέρας της εβδομάδας, όπου Κυριακή=0, Δευτέρα=1, Τρίτη=2 κ.λπ.
%d: Εκτυπώνει την ημέρα του μήνα, με μηδέν (01, 02 … 09) εάν απαιτείται.
%e: Εκτυπώνει την ημέρα του μήνα, με ένα αρχικό διάστημα (‘ 1’, ‘ 2’ … ‘ 9’) εάν απαιτείται. Σημειώστε ότι οι απόστροφοι δεν εκτυπώνονται.
%j: Εκτυπώνει την ημέρα του έτους, με έως και δύο μηδενικά στην αρχή, εάν απαιτείται.

Επιλογές για την εμφάνιση της εβδομάδας

%U: Εκτυπώνει τον αριθμό της εβδομάδας του έτους, θεωρώντας την Κυριακή ως την πρώτη ημέρα της εβδομάδας. Για παράδειγμα, η τρίτη εβδομάδα του έτους, η εικοστή εβδομάδα του έτους κ.λπ.
%V: Εκτυπώνει τον αριθμό της εβδομάδας ISO του έτους, θεωρώντας τη Δευτέρα ως την πρώτη ημέρα της εβδομάδας.
%W: Αριθμός εβδομάδας του έτους, λαμβάνοντας υπόψη τη Δευτέρα ως την πρώτη ημέρα της εβδομάδας.

Επιλογές για την εμφάνιση του μήνα

%b ή %h: Εκτυπώνει το όνομα του μήνα σε συντομογραφία Jan, Feb, Mar, κ.λπ.
%B: εκτυπώνει το πλήρες όνομα του μήνα, Ιανουάριο, Φεβρουάριο, Μάρτιο κ.λπ.
%m: Εκτυπώνει τον αριθμό του μήνα, με μηδέν στην αρχή, εάν απαιτείται, 01, 02, 03 … 12.

Επιλογές για την εμφάνιση του έτους

%C: Εκτυπώνει τον αιώνα χωρίς το έτος. Το 2019 θα τύπωνε 20.
%y: Εκτυπώνει το έτος ως διψήφιο. το 2019 θα εκτυπώσει 19.
%Y: Εκτυπώνει το έτος ως τετραψήφιο.

Επιλογές εμφάνισης της ώρας

%T: Εκτυπώνει την ώρα ως ΩΩ:ΛΛ:ΔΔ.
%R: Εκτυπώνει την ώρα και τα λεπτά ως ΩΩ:ΛΛ χωρίς δευτερόλεπτα, χρησιμοποιώντας το ρολόι 24 ωρών.
%r: Εκτυπώνει την ώρα σύμφωνα με τις τοπικές ρυθμίσεις σας, χρησιμοποιώντας το ρολόι 12 ωρών και μια ένδειξη π.μ. ή μ.μ.
%X: Εκτυπώνει την ώρα σύμφωνα με τις τοπικές ρυθμίσεις σας, χρησιμοποιώντας το ρολόι 24 ωρών. Φέρεται ότι. Σημειώστε ότι κατά τη διάρκεια της δοκιμής αυτή η επιλογή συμπεριφέρθηκε ακριβώς όπως το %r, όπως φαίνεται παρακάτω. Σε ένα μηχάνημα Linux που διαμορφώθηκε για τις τοπικές ρυθμίσεις του Ηνωμένου Βασιλείου και ρυθμίστηκε σε GMT, εκτύπωσε την ώρα, χρησιμοποιώντας το ρολόι 24 ωρών χωρίς ένδειξη ΠΜ ή ΜΜ, όπως αναμενόταν.

  Πώς να χρησιμοποιήσετε το rclone για δημιουργία αντιγράφων ασφαλείας στο Google Drive στο Linux

Επιλογές εμφάνισης της ώρας

%H: Εκτυπώνει την ώρα 00, 01, 02…23.
%I: Εκτυπώνει την ώρα χρησιμοποιώντας το ρολόι 12 ωρών, 00, 01, 02 … 12, με μηδέν στην αρχή εάν απαιτείται.

Επιλογές εμφάνισης λεπτών

%M: εκτυπώνει τα λεπτά, 01, 02, 03 … 59, με μηδέν στην αρχή εάν απαιτείται.

Επιλογές εμφάνισης δευτερολέπτων

%s: Εκτυπώνει τον αριθμό των δευτερολέπτων από το 1970-01-01 00:00:00, την έναρξη του Unix Epoch.
%S: Εκτυπώνει τα δευτερόλεπτα, 01, 02, 03 … 59, με ένα μηδέν στην αρχή, εάν απαιτείται.
%N: Εκτυπώνει τα νανοδευτερόλεπτα.

Επιλογές για την εμφάνιση πληροφοριών ζώνης ώρας

%z: Εκτυπώνει τη διαφορά ώρας μεταξύ της ζώνης ώρας και της UTC.
%:z: Εκτυπώνει τη διαφορά ώρας μεταξύ της ζώνης ώρας και του UTC, με ένα : μεταξύ των ωρών και των λεπτών. Σημειώστε το: ανάμεσα στο σύμβολο % και το z.
%::z: Εκτυπώνει τη διαφορά ώρας μεταξύ της ζώνης ώρας και του UTC, με ένα : μεταξύ των ωρών, των λεπτών και των δευτερολέπτων. Σημειώστε το :: ανάμεσα στο σύμβολο % και το z .
%Z: Εκτυπώνει το αλφαβητικό όνομα της ζώνης ώρας.

Επιλογές που σχετίζονται με τη μορφοποίηση

%p: Εκτυπώνει την ένδειξη AM ή PM με κεφαλαία.
%P: Εκτυπώνει την ένδειξη π.μ. ή μ.μ. με πεζά γράμματα. Σημειώστε την ιδιορρυθμία με αυτές τις δύο επιλογές. Ένα πεζό p δίνει κεφαλαία έξοδο, ένα κεφαλαίο P δίνει πεζά.
%t: Εκτυπώνει μια καρτέλα.
%n: Εκτυπώνει μια νέα γραμμή.

Επιλογές για τροποποίηση άλλων επιλογών

Αυτοί οι τροποποιητές μπορούν να εισαχθούν μεταξύ του % και του γράμματος επιλογής άλλων επιλογών για να τροποποιήσουν την εμφάνισή τους. Για παράδειγμα, το %S θα αφαιρούσε το αρχικό μηδέν για μονοψήφιες τιμές δευτερολέπτων.

–: Μια απλή παύλα αποτρέπει τη μηδενική συμπλήρωση σε μονοψήφιες τιμές.
_: μια μεμονωμένη υπογράμμιση προσθέτει κενά για μονοψήφιες τιμές.
0: Παρέχει μηδενικά στην αρχή για μονοψήφιες τιμές.
^: Χρησιμοποιεί κεφαλαία, αν είναι δυνατόν (δεν σέβονται όλες τις επιλογές αυτόν τον τροποποιητή).
#: Χρησιμοποιήστε το αντίθετο από την προεπιλεγμένη περίπτωση για την επιλογή, εάν είναι δυνατόν (δεν σέβονται όλες τις επιλογές αυτόν τον τροποποιητή).

  Πώς να εγκαταστήσετε το Plex Media Player σε Linux

Δύο ακόμη προσεγμένα κόλπα

Για να λάβετε τον τελευταίο χρόνο τροποποίησης ενός αρχείου, χρησιμοποιήστε την επιλογή -r (αναφορά). Σημειώστε ότι αυτό χρησιμοποιεί ένα – (ενωτικό) αντί για σύμβολο % και δεν απαιτεί σύμβολο +. Δοκιμάστε αυτήν την εντολή στον αρχικό σας φάκελο:

date -r .bashrc

Η ρύθμιση TZ σάς επιτρέπει να αλλάξετε τη ζώνη ώρας σας για τη διάρκεια μιας μεμονωμένης εντολής.

TZ=GMT date +%c

Χρήση της ημερομηνίας σε σενάρια

Η ενεργοποίηση ενός σεναρίου κελύφους Bash για την εκτύπωση της ώρας και της ημερομηνίας είναι ασήμαντο. Δημιουργήστε ένα αρχείο κειμένου με το ακόλουθο περιεχόμενο και αποθηκεύστε το ως 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

Πληκτρολογήστε την ακόλουθη εντολή για να ορίσετε τα δικαιώματα εκτέλεσης και να κάνετε το σενάριο εκτελέσιμο.

chmod +x gd.sh

Εκτελέστε το σενάριο με αυτήν την εντολή:

./gd.sh

Μπορούμε να χρησιμοποιήσουμε την εντολή ημερομηνία για να παρέχουμε μια χρονική σήμανση. Το σενάριο που εμφανίζεται θα δημιουργήσει έναν κατάλογο με τη χρονική σήμανση ως όνομα. Στη συνέχεια θα αντιγράψει όλα τα αρχεία κειμένου από τον τρέχοντα φάκελο σε αυτό. Εκτελώντας αυτό το σενάριο περιοδικά μπορούμε να τραβήξουμε ένα στιγμιότυπο των αρχείων κειμένου μας. Με τον καιρό θα δημιουργήσουμε μια σειρά φακέλων με διαφορετικές εκδόσεις των αρχείων κειμένου μας σε αυτούς.

Σημειώστε ότι αυτό δεν είναι ένα ισχυρό σύστημα δημιουργίας αντιγράφων ασφαλείας, είναι απλώς για επεξηγηματικούς σκοπούς.

Δημιουργήστε ένα αρχείο κειμένου με το ακόλουθο περιεχόμενο και αποθηκεύστε το ως 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

Πληκτρολογήστε την ακόλουθη εντολή για να ορίσετε τα δικαιώματα εκτέλεσης και να κάνετε το σενάριο εκτελέσιμο.

chmod +x snapshot.sh

Εκτελέστε το σενάριο με αυτήν την εντολή:

./snapshot.sh

Θα δείτε ότι έχει δημιουργηθεί ένας κατάλογος. Το όνομά του είναι η ημερομηνία και η ώρα κατά την οποία εκτελέστηκε το σενάριο. Μέσα σε αυτόν τον κατάλογο υπάρχουν αντίγραφα των αρχείων κειμένου.

Με λίγη σκέψη και δημιουργικότητα, ακόμη και η ταπεινή εντολή ημερομηνίας μπορεί να χρησιμοποιηθεί παραγωγικά.