Πώς να χρησιμοποιήσετε την εντολή ιστορικού στο Linux

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

Χειρισμός της Ιστορίας

Οπως και Ο Τζορτζ Σανταγιάνα λέγεται περίφημα, «Όσοι δεν μπορούν να θυμηθούν το παρελθόν είναι καταδικασμένοι να το επαναλάβουν». Δυστυχώς, στο Linux, αν δεν μπορείτε να θυμηθείτε το παρελθόν, δεν μπορείτε να το επαναλάβετε, ακόμα κι αν το θέλετε.

Τότε είναι χρήσιμη η εντολή ιστορικού Linux. Σας επιτρέπει να αναθεωρήσετε και να επαναλάβετε τις προηγούμενες εντολές σας. Αυτό δεν προορίζεται απλώς να ενθαρρύνει την τεμπελιά ή να εξοικονομήσει χρόνο—υπάρχει επίσης ένας παράγοντας αποτελεσματικότητας (και ακρίβειας). Όσο μεγαλύτερη και πιο περίπλοκη είναι μια εντολή, τόσο πιο δύσκολο είναι να θυμάστε και να πληκτρολογήσετε χωρίς να κάνετε λάθος. Υπάρχουν δύο τύποι σφαλμάτων: ένα που εμποδίζει την εντολή να λειτουργήσει και ένα που επιτρέπει στην εντολή να λειτουργήσει, αλλά την κάνει να κάνει κάτι απροσδόκητο.

Η εντολή ιστορικού εξαλείφει αυτά τα ζητήματα. Όπως οι περισσότερες εντολές Linux, έχει περισσότερα από όσα φαντάζεστε. Ωστόσο, εάν μάθετε πώς να χρησιμοποιείτε την εντολή ιστορικού, μπορεί να βελτιώσει τη χρήση της γραμμής εντολών Linux, κάθε μέρα. Είναι μια καλή επένδυση του χρόνου σας. Υπάρχουν πολύ καλύτεροι τρόποι για να χρησιμοποιήσετε την εντολή ιστορικού από το να πατάτε απλώς το επάνω βέλος επανειλημμένα.

Η εντολή της ιστορίας

Στην απλούστερη μορφή της, μπορείτε να χρησιμοποιήσετε την εντολή ιστορικού πληκτρολογώντας απλώς το όνομά της:

history

ο

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

Ένα παράδειγμα εξόδου από το

Οι εντολές είναι αριθμημένες, με τις πιο πρόσφατα χρησιμοποιημένες (αυτές με τους μεγαλύτερους αριθμούς) στο τέλος της λίστας.

Για να δείτε έναν συγκεκριμένο αριθμό εντολών, μπορείτε να περάσετε έναν αριθμό στο ιστορικό στη γραμμή εντολών. Για παράδειγμα, για να δείτε τις τελευταίες 10 εντολές που χρησιμοποιήσατε, πληκτρολογήστε τα εξής:

history 10

ο

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

history | tail -n 10

ο

Επαναλαμβανόμενες εντολές

Εάν θέλετε να χρησιμοποιήσετε ξανά μια εντολή από τη λίστα ιστορικού, πληκτρολογήστε ένα θαυμαστικό (!) και τον αριθμό της εντολής χωρίς κενά ενδιάμεσα.

Για παράδειγμα, για να επαναλάβετε την εντολή με αριθμό 37, θα πληκτρολογήσετε αυτήν την εντολή:

!37

Ενα

Για να επαναλάβετε την τελευταία εντολή, πληκτρολογήστε δύο θαυμαστικά, ξανά, χωρίς κενά:

!!

Ενα

Αυτό μπορεί να είναι χρήσιμο όταν εκδίδετε μια εντολή και ξεχνάτε να χρησιμοποιήσετε το sudo. Πληκτρολογήστε sudo, ένα κενό, τα διπλά θαυμαστικά και μετά πατήστε Enter.

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

mv ./my_script.sh /usr/local/bin/
sudo !!

Ενα

Έτσι, μπορείτε να πληκτρολογήσετε τον αντίστοιχο αριθμό από τη λίστα για να επαναλάβετε μια εντολή ή να χρησιμοποιήσετε τα διπλά θαυμαστικά για να επαναλάβετε την τελευταία εντολή που χρησιμοποιήσατε. Ωστόσο, τι γίνεται αν θέλετε να επαναλάβετε την πέμπτη ή την όγδοη εντολή;

  Πώς να δημιουργήσετε αντίγραφα ασφαλείας της εγκατάστασης Linux

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

Για να επαναλάβετε την 13η προηγούμενη εντολή, θα πληκτρολογήσετε τα εξής:

!-13

Ενα

Αναζήτηση για εντολές με συμβολοσειρά

Για να επαναλάβετε την τελευταία εντολή που ξεκινά με μια συγκεκριμένη συμβολοσειρά, μπορείτε να πληκτρολογήσετε ένα θαυμαστικό και, στη συνέχεια, τη συμβολοσειρά χωρίς κενά και, στη συνέχεια, να πατήσετε Enter.

Για παράδειγμα, για να επαναλάβετε την τελευταία εντολή που ξεκίνησε με sudo, θα πληκτρολογήσετε αυτήν την εντολή:

!sudo

Ενα

Ωστόσο, υπάρχει ένα στοιχείο κινδύνου σε αυτό. Εάν η τελευταία εντολή που ξεκίνησε με το sudo δεν είναι αυτή που νομίζετε ότι είναι, θα εκκινήσετε τη λάθος εντολή.

Ωστόσο, για να παράσχετε ένα δίχτυ ασφαλείας, μπορείτε να χρησιμοποιήσετε τον τροποποιητή :p (print), όπως φαίνεται παρακάτω:

!sudo:p

Ενα

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

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

Για παράδειγμα, για να βρείτε και να εκτελέσετε την πρώτη αντίστοιχη εντολή που περιέχει τη λέξη “ψευδώνυμο”, θα πληκτρολογήσετε αυτήν την εντολή:

!?aliases

Ενα

Αυτό θα βρει οποιαδήποτε εντολή περιέχει τη συμβολοσειρά “ψευδώνυμο”, ανεξάρτητα από το πού εμφανίζεται στη συμβολοσειρά.

Διαδραστική αναζήτηση

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

Απλώς πατήστε Ctrl+r για να ξεκινήσει η αναζήτηση.

Ένα παράθυρο τερματικού μετά

Καθώς πληκτρολογείτε την ένδειξη αναζήτησης, θα εμφανιστεί η πρώτη εντολή που ταιριάζει. Τα γράμματα που πληκτρολογείτε εμφανίζονται μεταξύ του backtick (`) και της απόστροφης (‘). Οι αντίστοιχες εντολές ενημερώνονται καθώς πληκτρολογείτε κάθε γράμμα.

ΕΝΑ

Κάθε φορά που πατάτε Ctrl+r, αναζητάτε προς τα πίσω την επόμενη αντίστοιχη εντολή, η οποία εμφανίζεται στο παράθυρο του τερματικού.

ΕΝΑ

Όταν πατήσετε Enter, η εντολή που εμφανίζεται θα εκτελεστεί.

ο

Για να επεξεργαστείτε μια εντολή πριν την εκτελέσετε, πατήστε είτε το Αριστερό είτε το Δεξί πλήκτρο βέλους.

ΕΝΑ

Η εντολή εμφανίζεται στη γραμμή εντολών και μπορείτε να την επεξεργαστείτε.

Μπορείτε να χρησιμοποιήσετε άλλα εργαλεία Linux για να κάνετε αναζήτηση στη λίστα ιστορικού. Για παράδειγμα, για τη διοχέτευση της εξόδου από το ιστορικό στο grep και αναζητήστε εντολές που περιέχουν τη συμβολοσειρά “Ψευδώνυμα” μπορείτε να χρησιμοποιήσετε αυτήν την εντολή:

history | grep aliases

ο

Τροποποίηση της τελευταίας εντολής

Εάν πρέπει να διορθώσετε ένα τυπογραφικό λάθος και, στη συνέχεια, να επαναλάβετε την εντολή, μπορείτε να χρησιμοποιήσετε το κουτί (^) για να το τροποποιήσετε. Αυτό είναι ένα εξαιρετικό κόλπο για να έχετε στο μανίκι σας κάθε φορά που γράφετε λάθος μια εντολή ή θέλετε να την εκτελέσετε ξανά με διαφορετική επιλογή ή παράμετρο γραμμής εντολών.

Για να το χρησιμοποιήσετε, πληκτρολογήστε (χωρίς κενά) ένα κουτί, το κείμενο που θέλετε να αντικαταστήσετε, ένα άλλο καρέ, το κείμενο με το οποίο θέλετε να το αντικαταστήσετε, ένα άλλο καρέ και, στη συνέχεια, πατήστε Enter.

Για παράδειγμα, ας υποθέσουμε ότι πληκτρολογείτε την ακόλουθη εντολή, πληκτρολογώντας κατά λάθος “shhd” αντί για “sshd”:

sudo systemctl start shhd

Θα μπορούσατε να το διορθώσετε εύκολα πληκτρολογώντας τα εξής:

^shhd^sshd^

ΕΝΑ

Η εντολή εκτελείται με το “shhd” διορθωμένο σε “sshd”.

Διαγραφή εντολών από τη λίστα ιστορικού

Μπορείτε επίσης να διαγράψετε εντολές από τη λίστα ιστορικού με την επιλογή -d (διαγραφή). Δεν υπάρχει λόγος να διατηρήσετε την ανορθόγραφη εντολή σας στη λίστα ιστορικού.

  Πώς να εγκαταστήσετε το UKUI Desktop Environment σε Linux

Μπορείτε να χρησιμοποιήσετε το grep για να το βρείτε, να δώσετε τον αριθμό του στο ιστορικό με την επιλογή -d για να το διαγράψετε και, στη συνέχεια, να αναζητήσετε ξανά για να βεβαιωθείτε ότι έχει φύγει:

history | grep shhd
history -d 83
history | grep shhd

ο

Μπορείτε επίσης να περάσετε μια σειρά από εντολές στην επιλογή -d. Για να διαγράψετε όλες τις καταχωρήσεις λίστας από το 22 έως το 32 (συμπεριλαμβανομένων), πληκτρολογήστε αυτήν την εντολή:

history -d 22 32

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

history -d -5

Μη αυτόματη ενημέρωση του αρχείου ιστορικού

Όταν συνδέεστε ή ανοίγετε μια περίοδο λειτουργίας τερματικού, η λίστα ιστορικού διαβάζεται από το αρχείο ιστορικού. Στο Bash, το προεπιλεγμένο αρχείο ιστορικού είναι .bash_history.

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

Ας υποθέσουμε ότι θέλετε να ανοίξετε ένα άλλο παράθυρο τερματικού για πρόσβαση στην πλήρη λίστα ιστορικού, συμπεριλαμβανομένων των εντολών που πληκτρολογήσατε στο πρώτο παράθυρο τερματικού. Η επιλογή -a (όλα) σας επιτρέπει να το κάνετε αυτό στο πρώτο παράθυρο τερματικού πριν ανοίξετε το δεύτερο.

Για να το χρησιμοποιήσετε, πληκτρολογήστε τα εξής:

history -a

ο

Οι εντολές εγγράφονται αθόρυβα στο αρχείο ιστορικού.

Εάν θέλετε να γράψετε όλες τις αλλαγές στη λίστα ιστορικού στο αρχείο ιστορικού (αν διαγράψατε κάποιες παλιές εντολές, για παράδειγμα), μπορείτε να χρησιμοποιήσετε την επιλογή -w (εγγραφή), όπως:

history -w

ο

Εκκαθάριση της λίστας ιστορικού

Για να διαγράψετε όλες τις εντολές από τη λίστα ιστορικού, μπορείτε να χρησιμοποιήσετε την επιλογή -c (διαγραφή), ως εξής:

history -c

Εάν θέλετε επιπλέον να επιβάλλετε αυτές τις αλλαγές στο αρχείο ιστορικού, χρησιμοποιήστε την επιλογή -w, όπως:

history -w

Ασφάλεια και το αρχείο ιστορικού

Εάν χρησιμοποιείτε οποιεσδήποτε εφαρμογές που απαιτούν να πληκτρολογήσετε ευαίσθητες πληροφορίες (όπως κωδικούς πρόσβασης) στη γραμμή εντολών, θυμηθείτε ότι θα αποθηκευτούν επίσης στο αρχείο ιστορικού. Εάν δεν θέλετε να αποθηκευτούν ορισμένες πληροφορίες, μπορείτε να χρησιμοποιήσετε την ακόλουθη δομή εντολών για να τις διαγράψετε αμέσως από τη λίστα ιστορικού:

special-app my-secret-password;history -d $(history 1)
history 5

ΕΝΑ

Αυτή η δομή περιλαμβάνει δύο εντολές που χωρίζονται με ένα ερωτηματικό (;). Ας το αναλύσουμε αυτό:

special-app: Το όνομα του προγράμματος που χρησιμοποιούμε.
my-secret-password: Ο μυστικός κωδικός πρόσβασης που πρέπει να παρέχουμε για την εφαρμογή στη γραμμή εντολών. Αυτό είναι το τέλος της πρώτης εντολής.
history -d: Στην εντολή δύο, καλούμε την επιλογή -d (delete) του ιστορικού. Αυτό που πρόκειται να διαγράψουμε βρίσκεται στο επόμενο τμήμα της εντολής.
$(ιστορικό 1): Αυτό χρησιμοποιεί μια αντικατάσταση εντολής. Το τμήμα της εντολής που περιέχεται στο $() εκτελείται σε ένα υποκέλυφος. Το αποτέλεσμα αυτής της εκτέλεσης δημοσιεύεται ως κείμενο στην αρχική εντολή. Η εντολή ιστορικού 1 επιστρέφει την προηγούμενη εντολή. Έτσι, μπορείτε να σκεφτείτε τη δεύτερη εντολή ως ιστορικό -d “τελευταία εντολή εδώ”.

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

Ωστόσο, υπάρχει ένας ακόμη πιο απλός τρόπος για να γίνει αυτό. Επειδή το Bash αγνοεί γραμμές που ξεκινούν με κενό από προεπιλογή, απλώς συμπεριλάβετε ένα διάστημα στην αρχή της γραμμής, ως εξής:

 special-app another-password
history 5

ΕΝΑ

Η εντολή με τον κωδικό πρόσβασης δεν προστίθεται στη λίστα ιστορικού. Ο λόγος που λειτουργεί αυτό το τέχνασμα περιέχεται στο αρχείο .bashrc.

  Πώς να εγκαταστήσετε το Ardor Audio Editor σε Linux

Το αρχείο .bashrc

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

Πληκτρολογήστε τα εξής:

gedit .bashrc

ο

Κοντά στην κορυφή του αρχείου, βλέπετε δύο εγγραφές:

HISTSIZE: Ο μέγιστος αριθμός καταχωρήσεων που μπορεί να περιέχει η λίστα ιστορικού.
HISTFILESIZE: Το όριο για τον αριθμό των γραμμών που μπορεί να περιέχει ένα αρχείο ιστορικού.

Αυτές οι δύο τιμές αλληλεπιδρούν με τους ακόλουθους τρόπους:

Όταν συνδέεστε ή ξεκινάτε μια περίοδο λειτουργίας παραθύρου τερματικού, η λίστα ιστορικού συμπληρώνεται από το αρχείο .bash_history.
Όταν κλείνετε ένα παράθυρο τερματικού, ο μέγιστος αριθμός εντολών που έχει οριστεί σε HISTSIZE αποθηκεύεται στο αρχείο .bash_history.
Εάν είναι ενεργοποιημένη η επιλογή κελύφους histappend, οι εντολές προσαρτώνται στο .bash_history. Εάν το histappend δεν έχει οριστεί, το .bash_history αντικαθίσταται.
Μετά την αποθήκευση των εντολών από τη λίστα ιστορικού στο .bash_history, το αρχείο ιστορικού περικόπτεται ώστε να μην περιέχει περισσότερες από HISTFILESIZE γραμμές.

Επίσης κοντά στην κορυφή του αρχείου, βλέπετε μια καταχώρηση για την τιμή HISTCONTROL.

ο

Μπορείτε να ορίσετε αυτήν την τιμή για να κάνει οποιοδήποτε από τα ακόλουθα:

ignorespaces: Οι γραμμές που ξεκινούν με κενό δεν προστίθενται στη λίστα ιστορικού.
ignoredups: Οι διπλές εντολές δεν προστίθενται στο αρχείο ιστορικού.
ignoreboth:Ενεργοποιεί και τα δύο παραπάνω.

Μπορείτε επίσης να παραθέσετε συγκεκριμένες εντολές που δεν θέλετε να προστεθούν στη λίστα ιστορικού σας. Διαχωρίστε τα με άνω και κάτω τελεία (:) και βάλτε τα σε εισαγωγικά (“…”).

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

export HISTIGNORE="ls:history"

Ενα

Χρήση χρονικών σφραγίδων

Εάν θέλετε να προσθέσετε χρονικές σημάνσεις στη λίστα ιστορικού, μπορείτε να χρησιμοποιήσετε τη ρύθμιση HISTIMEFORMAT. Για να το κάνετε αυτό, απλώς προσθέστε μια γραμμή όπως η παρακάτω στο αρχείο .bashrc:

export HISTTIMEFORMAT="%c "

Σημειώστε ότι υπάρχει ένα κενό πριν από τα εισαγωγικά κλεισίματος. Αυτό αποτρέπει τη χρονική σήμανση από το να προσαρμοστεί στις εντολές στη λίστα εντολών.

Ενα

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

Αυτή είναι μια πολύ μακροχρόνια χρονική σήμανση. Ωστόσο, μπορείτε να χρησιμοποιήσετε διακριτικά εκτός από το %c για να το κάνετε πιο συγκεκριμένο. Τα άλλα διακριτικά που μπορείτε να χρησιμοποιήσετε είναι:

%d: Ημέρα
%m: Μήνας
%y: Έτος
%H: Ώρα
%M: Λεπτά
%S: Δευτερόλεπτα
%F: Πλήρης ημερομηνία (μορφή έτους-μήνας-ημερομηνίας)
%T: Ώρα (μορφή ώρα:λεπτά:δευτερόλεπτα)
%c: Πλήρης σφραγίδα ημερομηνίας και ώρας (μορφές ημέρας-ημερομηνίας-μήνας-έτος και ώρα:λεπτά:δευτερόλεπτα)

Ας πειραματιστούμε και ας χρησιμοποιήσουμε μερικά διαφορετικά διακριτικά:

export HISTTIMEFORMAT="%d n%m %T "

Η εξαγωγή HISTTIMEFORMAT=

Η έξοδος χρησιμοποιεί την ημέρα, τον μήνα και την ώρα.

Ωστόσο, εάν αφαιρέσουμε την ημέρα και τον μήνα, θα εμφανιστεί απλώς η ώρα.

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

export HISTTIMEFORMAT="%T "

ο

Η παραγωγή μας είναι πλέον πιο διαχειρίσιμη.

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

Ακριβώς όπως μπορείτε στη ζωή, στο Linux, μπορείτε να χρησιμοποιήσετε την εντολή ιστορικού για να ξαναζήσετε τις καλές στιγμές και να μάθετε από τις κακές.