Αρχική σελίδα » πως να » Πώς να χρησιμοποιήσετε το ιστορικό βάσης σας στο τερματικό Linux ή macOS

    Πώς να χρησιμοποιήσετε το ιστορικό βάσης σας στο τερματικό Linux ή macOS

    Το κέλυφος bash είναι το τυπικό τερματικό περιβάλλον που περιλαμβάνεται στις περισσότερες διανομές Linux, περιλαμβάνεται στο macOS και είναι διαθέσιμο για εγκατάσταση στα Windows 10. Θυμάται τις εντολές που πληκτρολογείτε και τις αποθηκεύει σε ένα αρχείο ιστορικού. Πιθανότατα γνωρίζετε μερικά βασικά στοιχεία της ιστορίας του μπάσου, αλλά είναι πολύ πιο ισχυρό από ότι μπορείτε να το καταλάβετε.

    Συντομεύσεις πληκτρολογίου

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

    • Επάνω βέλος ή Ctrl + P: Μεταβείτε στην προηγούμενη εντολή στο ιστορικό σας. Πιέστε το πλήκτρο πολλές φορές για να περπατήσετε προς τα πίσω μέσα από τις εντολές που έχετε χρησιμοποιήσει.
    • Κάτω βελάκι ή Ctrl + N: Μεταβείτε στην επόμενη εντολή στην ιστορία σας. Πατήστε το πλήκτρο πολλές φορές για να προχωρήσετε προς τα εμπρός μέσω των εντολών που έχετε χρησιμοποιήσει.
    • Alt + R: Επαναφορά οποιωνδήποτε αλλαγών σε μια εντολή που τραβήξατε από το ιστορικό σας, αν την έχετε επεξεργαστεί στην τρέχουσα γραμμή.

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

    • Ctrl + R: Ανακαλέστε την τελευταία εντολή που ταιριάζει με τους χαρακτήρες που παρέχετε. Πατήστε αυτή τη συντόμευση και ξεκινήστε την πληκτρολόγηση για να αναζητήσετε το ιστορικό bash για μια εντολή.
    • Ctrl + O: Εκτελέστε την εντολή που εντοπίσατε με το Ctrl + R.
    • Ctrl + G: Αφήστε τη λειτουργία αναζήτησης ιστορικού χωρίς να εκτελέσετε μια εντολή.

    Προβολή του ιστορικού ιστορικού σας

    Μπορείτε να εκτυπώσετε ολόκληρο το ιστορικό bash στην οθόνη εκτελώντας μια μόνο εντολή:

    ιστορία

    Θα δείτε μια λίστα με όλες τις εντολές στο ιστορικό bash σας, μαζί με έναν αριθμό στα αριστερά του καθενός. Η εντολή με ένα "1" δίπλα της είναι η παλαιότερη εντολή στην ιστορία bash σας, ενώ η εντολή με τον υψηλότερο αριθμό είναι η πιο πρόσφατη.

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

    ιστορία | grep your_search

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

    ιστορία | ουρά -5

    Εκτελέστε εντολές από το ιστορικό σας

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

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

    !# #

    Για παράδειγμα, ας υποθέσουμε ότι θέλετε να εκτελέσετε τη δωδέκατη εντολή από την ιστορία του bash. Αυτή είναι η εντολή με "12" στα αριστερά της όταν τρέχετε το ιστορία εντολή. Θα πληκτρολογήσετε την ακόλουθη εντολή.

    !12

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

    !!

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

    Αυτή η επέκταση λειτουργεί οπουδήποτε στη γραμμή. Μπορείτε να προσθέσετε οτιδήποτε θέλετε πριν ή μετά !! ή οποιαδήποτε από τις άλλες εκφράσεις σε αυτήν την ενότητα. Για παράδειγμα, μπορείτε να πληκτρολογήσετε την ακόλουθη εντολή για να επαναλάβετε την τελευταία εντολή που εκτελέσατε sudo, δίνοντάς τα προνόμια root. Αυτό είναι ιδιαίτερα χρήσιμο αν ξεχάσετε να προσθέσετε  sudo πριν εκτελέσετε μια εντολή.

    sudo !!

    Ή, για παράδειγμα, θα μπορούσατε να επαναλάβετε την προηγούμενη εντολή και να διοχετεύσετε την έξοδο της σε grep για να αναζητήσετε κάποιο κείμενο.

    !! | grep text

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

    !κείμενο

    Έτσι, αν τρέξατε πρόσφατα μια εντολή που ξεκίνησε με ping, μπορείτε να εκτελέσετε την ακόλουθη εντολή για να την αναζητήσετε. Αυτό θα κάνει αναζήτηση πίσω στο ιστορικό σας, εντοπίστε την πιο πρόσφατη εντολή που ξεκινάει με "πι"Και αμέσως εκτελέστε το:

    !πι

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

    !12: σελ
    !!:Π
    !κείμενο: σ

    Επαναχρησιμοποίηση επιχειρημάτων από το ιστορικό σας

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

    εντολή!

    Για παράδειγμα, ας πούμε ότι εκτελέσατε την εντολή αγγίξτε / home / chris / some_long_file_name_you_dont_want_to_type_again . Τώρα θέλετε να εκτελέσετε την εντολή nano / home / chris / some_long_file_name_you_dont_want_to_type_again. Αντί να πληκτρολογείτε ολόκληρο το κείμενο από το μηδέν, θα μπορούσατε να εκτελέσετε:

    nano! $

    ο !$ θα κάνει το bash να συμπληρώσει αυτόματα το τελευταίο όρισμα από την προηγούμενη εντολή σας.

    Αυτό συμπληρώνει μόνο το τελευταίο επιχείρημα. Έτσι, αν τρέξετε ping google.com -c 4 και στη συνέχεια να τρέξει ping! $ , αυτό θα επεκταθεί απλώς σε "ping 4".

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

    εντολή! ^

    Έτσι, αν τρέξατε ping google.com -c 4 και στη συνέχεια έτρεξε ping! ^ , bash θα επεκτείνει αυτό το "ping google.com ".

    Για να συμπληρώσετε όλα τα επιχειρήματα που χρησιμοποιήσατε στην προηγούμενη εντολή αντί για ένα μόνο επιχείρημα, χρησιμοποιήσατε τα εξής:

    εντολή !*

    Έτσι, αν τρέξατε ping! * Αντίθετα, το bash θα συμπληρώσει αυτόματα όλα τα επιχειρήματα που χρησιμοποιήσατε στην προηγούμενη εντολή.

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

    εντολή! abc: #

    Για παράδειγμα, εκτελέσαμε την εντολή sudo hostname ubuntu νωρίτερα. Εάν εκτελέσουμε την ακόλουθη εντολή, το bash θα αναζητήσει προς τα πίσω το ιστορικό για να βρει την τελευταία εντολή ξεκινώντας από τα γράμματα που πληκτρολογούμε και να συμπληρώσουμε το όρισμα που καθορίζουμε. Έτσι, αν τρέξουμε echo! su: 2 , bash θα αναζητήσει πίσω για να βρει την τελευταία εντολή που αρχίζει με "su"Και συμπληρώστε το δεύτερο επιχείρημά του, το οποίο είναι"ubuntu".

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

    εντολή! abc: *

    Επαναλάβετε την προηγούμενη εντολή και τροποποιήστε την

    Το Bash σας επιτρέπει επίσης να επαναλάβετε την προηγούμενη εντολή και να ορίσετε κάτι που πρέπει να αλλάξει. Αυτό μπορεί να είναι χρήσιμο για τη διόρθωση τυπογραφικού λάθους σε μια εντολή. Για παράδειγμα, η ακόλουθη εντολή θα επαναλάβει την προηγούμενη εντολή, αντικαθιστώντας το κείμενο "αλφάβητο"Σε αυτό με το κείμενο"xyz".

    ^ abc ^ xyz

    Για παράδειγμα, εάν λάβατε λάθος ping gogle.com, τότε θα μπορούσατε να τρέξετε ^ gog ^ goog και bash θα εκτελέσει την εντολή ping google.com αντι αυτου.

    Όταν αποθηκεύεται το ιστορικό σας και πώς να το καθαρίσετε

    Το κέλυφος bash αποθηκεύει το ιστορικό των εντολών που έχετε εκτελέσει στο αρχείο ιστορικού του λογαριασμού χρήστη στο ~ / .bash_history από προεπιλογή. Για παράδειγμα, εάν το όνομα χρήστη σας είναι bob, θα βρείτε αυτό το αρχείο στο /home/bob/.bash_history.

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

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

    ιστορία -c

    Το Bash θυμάται μόνο έναν περιορισμένο αριθμό εντολών από προεπιλογή, αποτρέποντας την υπερβολική μεγέθυνση του αρχείου ιστορικού. Ο αριθμός των καταχωρήσεων ιστορικού που καταγράφει το bash θυμάται ελέγχεται από το HISTSIZEμεταβλητός. Η προεπιλογή είναι συνήθως 500 ή 1000 εγγραφές. Μπορείτε να εκτελέσετε την ακόλουθη εντολή για να δείτε το μέγεθος του ιστορικού bash στο σύστημά σας.

    echo $ HISTSIZE

    Για να θέσετε το ιστορικό σας στο μηδέν, εκτελέστε την ακόλουθη εντολή.

    HISTSIZE = 0

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

    Πώς να αγνοήσετε τα διαστήματα και τα διπλότυπα

    Το Bash σάς επιτρέπει να αγνοήσετε τις καταχωρήσεις ιστορικού που αρχίζουν με ένα κενό, αν ορίσετε το HISTCONTROLμεταβλητή σε ignorespace.

    HISTCONTROL = ignorespace

    Πληκτρολογήστε ένα κενό διάστημα πριν από μια εντολή πριν την εκτέλεσή της στο κέλυφος bash και η εντολή θα τρέξει κανονικά, αλλά δεν θα εμφανιστεί στο ιστορικό σας εάν έχετε ενεργοποιήσει αυτή τη μεταβλητή. Αυτό σας επιτρέπει να κρατήσετε το ιστορικό σας καθαρότερο, επιλέγοντας να τρέχετε εντολές χωρίς να εμφανίζονται στο ιστορικό σας.

    Το Bash σας επιτρέπει επίσης να αγνοήσετε τις διπλές εντολές που μπορεί να γεμίσει το ιστορικό σας. Για να το κάνετε αυτό, ρυθμίστε HISTCONTROL προς το ignoredups.

    HISTCONTROL = ignoredups

    Για να χρησιμοποιήσετε και τα δύο ignorespace και ignoredups χαρακτηριστικό, ορίστε το HISTCONTROL μεταβλητή σε ignoreboth.

    HISTCONTROL = ignoreboth

    Σημειώστε ότι οι μεταβλητές bash που έχετε ορίσει θα παραμείνουν μόνο για την τρέχουσα περίοδο λειτουργίας. Θα πρέπει να τα προσθέσετε στο αρχείο .bashrc του λογαριασμού χρήστη, ώστε να έχουν αυτές οι τιμές να ορίζονται αυτόματα σε κάθε συνεδρία bash που ξεκινάτε, αν προτιμάτε.

    Το κέλυφος bash είναι ένα πολύπλοκο εργαλείο με πολλές επιλογές από αυτές. Συμβουλευτείτε τις ενότητες Buzz History History και Expansion History στο επίσημο εγχειρίδιο bash πιο λεπτομερείς πληροφορίες και άλλα προχωρημένα κόλπα που μπορείτε να χρησιμοποιήσετε.