Πώς να εργαστείτε με την ημερομηνία και την ώρα στο Bash χρησιμοποιώντας την εντολή ημερομηνίας


Η εντολή Date είναι ένα εξωτερικό πρόγραμμα bash που σας επιτρέπει να ορίσετε ή να εμφανίσετε την ημερομηνία και την ώρα του συστήματος. Παρέχει επίσης πολλές επιλογές μορφοποίησης. Η εντολή Date είναι εγκατεστημένη σε όλες τις διανομές Linux από προεπιλογή.

which date
type -a date

Πληκτρολογήστε εντολή ημερομηνία στο τερματικό που θα εμφανίζει την τρέχουσα ημερομηνία και ώρα.

date

Αλλαγή ημερομηνίας και ώρας συστήματος Linux

Χρησιμοποιώντας την εντολή ημερομηνία, η ημερομηνία, η ώρα και η ζώνη ώρας του συστήματος μπορούν να τροποποιηθούν και η αλλαγή πρέπει να συγχρονιστεί με το ρολόι υλικού.

date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc

Επιλογές Μορφοποίησης

Ένα καλό μέρος για να λάβετε τη λίστα με τις επιλογές μορφοποίησης θα είναι η σελίδα man.

man date

Ας δούμε μερικές από τις πιο συνηθισμένες επιλογές μορφοποίησης που θα χρησιμοποιήσουμε.

  • Για να εφαρμόσετε μορφοποίηση, χρησιμοποιήστε το "+ ακολουθούμενο από το "formatter".
  • Για να λάβετε μια λίστα επιλογών μορφοποίησης για το GNU\LINUX, ρίξτε μια ματιά στη συνδεδεμένη σελίδα man.
  • Για να λάβετε μια λίστα με τις επιλογές μορφοποίησης για το BSD, ρίξτε μια ματιά στη συνδεδεμένη σελίδα man.

Τα δύο σημαντικά μέρη της εντολής date είναι η χρήση της επιλογής Μορφοποίηση +% και –date.

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

Ημερομηνία χειρισμού στο Linux

Ας ρίξουμε μια ματιά στον τρόπο χρήσης μορφοποιητών που σχετίζονται με ημερομηνίες σε ένα απλό σενάριο φλοιού που ονομάζεται "date.sh".

PRINT YEAR,MONTH,DAY AND DATE...

echo "We are in the year = $(date +%Y)"
echo "We are in the year = $(date +%y)"

Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year.

echo "We are in the month = $(date +%m)"
echo "We are in the month = $(date +%b)"
echo "We are in the month = $(date +%B)"

Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name.

echo "Current Day of the month = $(date +%d)"

echo "Current Day of the week = $(date +%A)"
echo "Current Day of the week = $(date +%a)"

Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name.

Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format.

echo "Date using %D = $(date +%D)"
echo "Date using %F = $(date +%F)"

Χειρισμός χρόνου στο Linux

Ας ρίξουμε μια ματιά στον τρόπο χρήσης μορφοποιητών που σχετίζονται με time σε ένα απλό σενάριο φλοιού που ονομάζεται "time.sh".

PRINT HOURS, MINS, SECONDS, NANO SECONDS

echo Hours = $(date +%H)
echo Minutes = $(date +%M)
echo Seconds = $(date +%S)
echo Nanoseconds = $(date +%N)
echo Epoch Time = $(date +%s)

echo "current time = $(date +%H:%M:%S:%N)"

can also use %T which displays Time in HH:MM:SS format.

echo "current time in 24 hour format = $(date +%T)"

can also use %r to display time in 12 hour format.

echo "current time in 12 hour format = $(date +%r)"

Με –ημερομηνία ή –d Σημαία

Με --date ή -d η είσοδος σημαίας μπορεί να μεταβιβαστεί ως συμβολοσειρά και η εντολή ημερομηνία ξέρει να τη χειρίζεται έξυπνα.

Ας δούμε μερικά παραδείγματα για να καταλάβουμε πώς λειτουργεί.

Print yesterday's date and time.
echo "Yesterday = $(date -d "Yesterday")"

Print Tomorrow date and time.
echo "tomorrow = $(date -d "tomorrow")"

Find what is the date and time before 10 days from now.
echo "Before 10 days = $(date -d "tomorrow -10 days")"

Find last month and next month
echo "Last month = $(date -d "last month" "%B")"
echo "Next month = $(date -d "next month" "%B")"

Find last year and next year
echo "Last Year = $(date -d "last year" "+%Y")"
echo "Next Year = $(date -d "next year" "+%Y")"

Forecast the weekday
echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")

Κοινές Λειτουργίες

υπολογίστε τον αριθμό των ημερών μεταξύ 2 δεδομένων ημερομηνιών.

echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))

Βρείτε το δεδομένο έτος είναι δίσεκτο ή όχι.

for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Εκχώρηση εντολής output of date σε μια μεταβλητή.

TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY 
echo $TODAY1

Δημιουργήστε αρχεία καταγραφής με την ημερομηνία που προστέθηκε στο όνομα αρχείου.

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

Αυτό το σενάριο θα λάβει αντίγραφο ασφαλείας από τις 00:00 έως τις 23:59 και έχει προγραμματιστεί να εκτελείται καθημερινά στις 00:00 της επόμενης ημέρας. Θέλουμε να δημιουργήσουμε αρχεία καταγραφής με τη μορφή της χθεσινής ημερομηνίας.

CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M")
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
echo "Script started" >>  ${LOG_FILE}
...
CODE BLOCKS
...
echo "Script completed" >> ${LOG_FILE}

Αυτό είναι για αυτό το άρθρο. Σε αυτό το άρθρο, είδαμε πώς να χρησιμοποιήσετε την ημερομηνία και την ώρα bash στο Linux. Πείτε μας τα σχόλιά σας.