συστήματα

* Γνώση Υπολογιστών >> συστήματα >> Unix

Πώς να βρείτε Διαφορά ώρας σε Unix Script

Αν θέλετε να βρείτε τη διαφορά μεταξύ δύο φορές , αν διαφέρουν μεταξύ τους μόνο λίγα δευτερόλεπτα ή χρόνια , μπορείτε να το κάνετε αυτό με την GNU έκδοση του Unix με την " ημερομηνία " εντολή . Ωστόσο , η διαδικασία δεν είναι διαισθητική , καθώς η εντολή ημερομηνία δεν παρέχει άμεσα μια σημαία ή επιχείρημα για αυτή τη διαδικασία . Επιπλέον , οι πολλαπλές εκδοχές της εντολής date υπάρχουν σε Unix . Σημειώστε ότι αυτό που λειτουργεί στην έκδοση GNU της εντολής date δεν θα λειτουργήσει με την έκδοση BSD . Unix Epoch
Η

Το κλειδί για την επίλυση του προβλήματος αυτού είναι η κατανόηση πώς ο υπολογιστής κρατά πραγματικά την αίσθηση του χρόνου . Ένας υπολογιστής Unix αποθηκεύει όλες τις φορές τον αριθμό των δευτερολέπτων που έχουν παρέλθει από την Unix Epoch . Το Unix Epoch είναι τα μεσάνυχτα της 1ης Ιανουαρίου 1970.
Εικόνων πάρει τα δευτερόλεπτα Από το Unix Epoch
Η

Μπορείτε να πάρετε τον αριθμό των δευτερολέπτων από την Unix Epoch σε μια δεδομένη ημερομηνία χρησιμοποιώντας ένα συνδυασμό της σημαίας και το " + % s " - εντολή " date" . Πληκτρολογήστε τα ακόλουθα σε ένα κέλυφος για να πάρετε τον αριθμό των δευτερολέπτων από την Unix Epoch στο 11 Μαρτίου 2011 :

ημερομηνία - ημερομηνία 2011-03-11 + % s

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

Η Η Λύση
Η Όπως μπορείτε να πάρετε οποιαδήποτε δεδομένη ημερομηνία ή φορά σε μια συμβατή μορφή Unix και το μετατρέπουν σε δευτερόλεπτα πριν ή μετά την Unix Epoch , μπορείτε να βρείτε τη διαφορά μεταξύ δύο οποιωνδήποτε φορές αφαιρώντας τα αποτελέσματα των δύο αυτών των εντολών .

Πληκτρολογήστε τις ακόλουθες εντολές στη συσκευή σας κέλυφος:

d1 = `date - ημερομηνία 2011-03-11 + % s `

d2 = `date - ημερομηνία 2010-05-12 + % s `

echo " $ ( ( ( d1 - d2 ) ) ) δευτερόλεπτα διαφορά»

στις δύο πρώτες γραμμές , η ` χαρακτήρας δεν είναι ένα σημάδι απόσπασμα . Είναι ένα back- τσιμπούρι. Μπορείτε να εντοπίσετε αυτό το χαρακτήρα στα αριστερά του " 1" σε ένα τυπικό πληκτρολόγιο ΗΠΑ .

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

Όπως θα ήταν μια ενόχληση για να πληκτρολογήσετε τα τρία μακρά εντολές κάθε φορά , θα πρέπει να ενσωματώσει σε ένα σενάριο . Ανοίξτε τον αγαπημένο σας επεξεργαστή κειμένου και επικόλληση του παρακάτω : !

# /Usr /bin /env bash

d1 = `date - date $ 1 + % s `

d2 = `date - date $ 2 + % s `

echo " $ ( ( ( d1 - d2 ) ) ) δευτερόλεπτα διαφορά "

Αυτό αλλάζει μερικά πράγματα . Η άνω γραμμή αφήνει το τρέχον κέλυφος ξέρετε ότι γράφετε αυτό το script να χρησιμοποιήσει τη γλώσσα του "πάρτι " κέλυφος . Όπως μπορείτε να αντικαταστήσετε τις ημερομηνίες κατά τις δύο εντολές ημερομηνία με "$ 1" και "$ 2 ", μπορείτε να περάσετε νέες ημερομηνίες για το σενάριο κάθε φορά που τρέχει . Για άλλη μια φορά , στις δύο πρώτες γραμμές , μπορείτε να χρησιμοποιήσετε το πίσω -tick ` , όχι μια μόνο προσφορά .

Αποθηκεύστε το σενάριό σας με το όνομα " timediff.sh " και τρέξτε την εντολή " chmod + x timediff.sh " με το κέλυφος σας για να Unix ξέρετε ότι έχει την άδεια για να τρέξει αυτό ως ένα σενάριο

Αφού το κάνετε αυτό , μπορείτε να βρείτε τη διαφορά μεταξύ δύο οποιωνδήποτε ημερομηνίες και οι ώρες πληκτρολογώντας : .

. /timediff.sh 09/13/2010 14/01/1981
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα