Android

Η εντολή ιστορικού στο linux (ιστορικό bash)

Beginner's Guide to the Bash Terminal

Beginner's Guide to the Bash Terminal

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

Anonim

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

Χρησιμοποιώντας την επέκταση εντολών και ιστορικού ιστορικού

history είναι ενσωματωμένο στο κέλυφος και η συμπεριφορά του μπορεί να διαφέρει ελαφρώς από το κέλυφος στο κέλυφος. Θα καλύψουμε την έκδοση του history Bash.

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

history

… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history

Η πληκτρολόγηση !n εκτελεί την n-th εντολή από τη λίστα ιστορικού και !-n την εντολή n γραμμές πίσω. Στο παρακάτω παράδειγμα εκτελούμε την εντολή στη γραμμή 467 :

!467

Ένας άλλος τρόπος για να εκτελέσετε μια εντολή είναι να χρησιμοποιήσετε την επέκταση !word . word αναφέρεται στην πιο πρόσφατη εντολή ξεκινώντας με την λέξη.

Συνήθως, το history εμφανίζει πολλές γραμμές παραγωγής που δεν ταιριάζουν στην οθόνη. Για να προβάλετε τη σελίδα εξόδου μία φορά τη φορά, μπορείτε να την διοχετεύσετε σε ένα πρόγραμμα pager σαν more ή less εντολή:

history | less

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

history -5

Χρησιμοποιήστε τα up και down βελάκια για να περιηγηθείτε στις καταχωρήσεις στη λίστα. Όταν εμφανίζεται η εντολή που αναζητήσατε, πατήστε Enter για να την εκτελέσετε.

Τύπος !! για να εκτελέσετε την προηγούμενη εντολή:

!!

Αυτό είναι ιδιαίτερα χρήσιμο όταν ξεχάσετε να καταλάβετε μια εντολή με το sudo και αντί να πληκτρολογήσετε ξανά την εντολή μπορείτε να πληκτρολογήσετε:

sudo !!

!-1 είναι το ίδιο με !! και εκτελεί την τελευταία εντολή από τη λίστα ιστορικού, ! !-2 δευτερόλεπτα έως το τελευταίο, και ούτω καθεξής.

^word1^word2^ επέκταση σας επιτρέπει να επαναλάβετε την τελευταία εντολή αντικαθιστώντας "word1" με "word2". Εάν πληκτρολογήσατε sduo command αντί sduo command sudo command μπορείτε να επαναλάβετε την εντολή χρησιμοποιώντας τη σωστή λέξη με:

^sduo^sudo^

Χρησιμοποιήστε την εντολή grep για να φιλτράρετε την έξοδο. Για παράδειγμα, για να δείτε όλες τις εντολές, συμπεριλαμβανομένου του "nano", θα εκτελέσετε:

history | grep nano

302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh

Τώρα, αν θέλετε να εκτελέσετε εκ νέου την εντολή nano setup.py απλά πληκτρολογήστε:

!356

Ένας άλλος τρόπος για να πραγματοποιήσετε αναζήτηση στο ιστορικό εντολών είναι να πιέσετε το πλήκτρο Ctrl-R . Η ερώτηση θα αλλάξει ως εξής και μπορείτε να ξεκινήσετε την αναζήτηση μιας εντολής που εκτελέσατε προηγουμένως.

(reverse-i-search)`':

Το κέλυφος θα εμφανίσει μια γραμμή που ταιριάζει. Για να μεταβείτε στην επόμενη αντιστοιχισμένη πρόταση, πιέστε ξανά το Ctrl-R .

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

Αποθήκευση της λίστας ιστορικού

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

Η επιλογή -a σας επιτρέπει να αποθηκεύσετε την τρέχουσα λίστα ιστορικού συνεδριών στο αρχείο .bash_history :

history -a

Η επιλογή -w γράφει ολόκληρη τη λίστα ιστορικού στο αρχείο ιστορικού.

history -w

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

Η εντολή history σάς επιτρέπει να καταργήσετε την πλήρη λίστα ιστορικού ή να αφαιρέσετε ορισμένα τμήματα.

Για να καταργήσετε τη λίστα ιστορικού, χρησιμοποιήστε την επιλογή -c :

history -c

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

Για παράδειγμα, για να καταργήσετε τις γραμμές μεταξύ 365 και 375 (συμπεριλαμβανομένων αυτών των γραμμών), πληκτρολογήστε:

history -d 365 375

Όταν χρησιμοποιείται ένας αρνητικός ακέραιος αριθμός, οι γραμμές απαριθμούνται από το τέλος της λίστας ιστορικού.

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

history -c history -w

Τροποποίηση συμπεριφοράς ιστορικού

Η συμπεριφορά του ιστορικού Bash μπορεί να οριστεί χρησιμοποιώντας αρκετές διαφορετικές μεταβλητές περιβάλλοντος. Κατά την τροποποίηση της συμπεριφοράς ιστορικού, ορίστε τις μεταβλητές στο ~/.bashrc ή σε οποιοδήποτε άλλο αρχείο ρυθμίσεων που φορτώνεται όταν συνδεθεί ο χρήστης.

Από προεπιλογή, ο Bash διατηρεί 500 γραμμές στη λίστα ιστορικού εντολών. Η μεταβλητή HISTSIZE σας επιτρέπει να αλλάξετε αυτήν την τιμή. Για να το ορίσετε σε 10000, προσθέστε την ακόλουθη γραμμή στο αρχείο .bashrc :

HISTSIZE=10000

Η μεταβλητή HISTCONTROL δέχεται μια λίστα με τιμές που χωρίζονται από κόλον και ορίζει τον τρόπο με τον οποίο αποθηκεύονται οι εντολές στη λίστα ιστορικού:

  • ignorespace - Οι εντολές που ξεκινούν με το διάστημα δεν αποθηκεύονται στη λίστα ιστορικού. ignoredups - οι διπλές εντολές δεν αποθηκεύονται. ignoreboth - είναι μια στενογραφία, συμπεριλαμβανομένων και των ignorespace και ignoredups .

HISTCONTROL=ignoreboth

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

Για παράδειγμα, εάν ορίσετε:

HISTTIMEFORMAT="%F %T: "

Το ιστορικό θα εμφανίζεται με την ακόλουθη μορφή:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

συμπέρασμα

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

τερματικό ιστορικού