24Aug
Το κέλυφος bash είναι το τυπικό τερματικό περιβάλλον που περιλαμβάνεται στις περισσότερες διανομές Linux, περιλαμβάνεται στο macOS και διατίθεται για εγκατάσταση στα Windows 10. Θυμάται τις εντολές που πληκτρολογείτε και τις αποθηκεύει σε ένα αρχείο ιστορικού.Πιθανότατα γνωρίζετε μερικά βασικά στοιχεία της ιστορίας του bash, αλλά είναι πολύ πιο ισχυρό από αυτό που θα μπορούσατε να συνειδητοποιήσετε.
Συντομεύσεις πληκτρολογίου
Για να μετακινηθείτε στο ιστορικό του bash, μπορείτε να χρησιμοποιήσετε μερικές από τις πολλές συντομεύσεις πληκτρολογίου του bash.Πατήστε αυτές τις συντομεύσεις και οι εντολές που χρησιμοποιήσατε προηγουμένως θα εμφανιστούν στη γραμμή εντολών.
- Πάνω βέλος ή Ctrl + P : Μεταβείτε στην προηγούμενη εντολή στο ιστορικό σας.Πιέστε το πλήκτρο πολλές φορές για να περπατήσετε προς τα πίσω μέσα από τις εντολές που έχετε χρησιμοποιήσει.
- Κάτω βέλος ή Ctrl + N : Μεταβείτε στην επόμενη εντολή στο ιστορικό σας.Πατήστε το πλήκτρο πολλές φορές για να προχωρήσετε προς τα εμπρός μέσω των εντολών που έχετε χρησιμοποιήσει.
- Alt + R : Επαναφορά οποιωνδήποτε αλλαγών σε μια εντολή που τραβήξατε από το ιστορικό σας αν την έχετε επεξεργαστεί στην τρέχουσα γραμμή.Το
Bash έχει επίσης μια ειδική λειτουργία "ανάκλησης" που μπορείτε να χρησιμοποιήσετε για να αναζητήσετε εντολές που είχατε εκτελέσει προηγουμένως, αντί να τις μετακινηθείτε μία προς μία.
- Ctrl + R : Ανακαλέστε την τελευταία εντολή που ταιριάζει με τους χαρακτήρες που παρέχετε.Πατήστε αυτήν τη συντόμευση και ξεκινήστε την πληκτρολόγηση για να αναζητήσετε το ιστορικό bash για μια εντολή.
- Ctrl + O : Εκτελέστε την εντολή που εντοπίσατε με το Ctrl + R.
- Ctrl + G : Αφήστε τη λειτουργία αναζήτησης ιστορικού χωρίς να εκτελέσετε μια εντολή.
Δείτε το ιστορικό μπάσων σας
Μπορείτε να εκτυπώσετε ολόκληρο το ιστορικό bash στην οθόνη εκτελώντας μια μόνο εντολή:
historyΘα δείτε μια λίστα όλων των εντολών στο ιστορικό bash σας, μαζί με έναν αριθμό στα αριστερά του καθενός.Η εντολή με ένα "1" δίπλα της είναι η παλαιότερη εντολή στην ιστορία bash, ενώ η εντολή με τον υψηλότερο αριθμό είναι η πιο πρόσφατη.
Μπορείτε να κάνετε ό, τι θέλετε με την έξοδο.Για παράδειγμα, μπορείτε να το διοχετεύσετε στο grepcommand για να αναζητήσετε το ιστορικό εντολών σας.Ιστορικό
|grep your_searchΜπορείτε επίσης να το διοχετεύσετε στην εντολή ουράς για να δείτε μόνο ένα μικρό αριθμό από τις πρόσφατες εντολές που έχετε εκτελέσει.Για παράδειγμα, στην ακόλουθη εντολή θα εμφανιστούν οι τελευταίες 5 καταχωρήσεις στο ιστορικό σας.Ιστορικό
|ουρά -5Εκτελέστε εντολές από το ιστορικό σας Το
Bash μπορεί να "επεκτείνει" γρήγορα τις προηγούμενες εντολές ή να τις επεκτείνει και να τις τροποποιήσει.Αυτή η λειτουργία είναι γνωστή ως "επέκταση ιστορίας" και χρησιμοποιεί ένα θαυμαστικό, γνωστό ως "κτύπημα".Απλά πληκτρολογήστε τα στη γραμμή εντολών και πατήστε Enter για να τα εκτελέσετε σαν να εκτελέσετε οποιαδήποτε άλλη εντολή.
Για να εκτελέσετε μια συγκεκριμένη εντολή από το ιστορικό σας με τον αριθμό της, χρησιμοποιήστε την ακόλουθη εντολή:
! #Για παράδειγμα, ας υποθέσουμε ότι θέλετε να εκτελέσετε τη δωδέκατη εντολή από το ιστορικό bash σας.Αυτή είναι η εντολή με "12" στα αριστερά της όταν τρέχετε την εντολή ιστορικού.Θα πληκτρολογήσετε την ακόλουθη εντολή.
! 12Για να εκτελέσετε ξανά την τελευταία εντολή που εκτελέσατε, πληκτρολογήστε τα παρακάτω.Αυτό έχει το ίδιο αποτέλεσμα με το πάτημα ενός βέλους μία φορά για να δείτε την προηγούμενη εντολή και μετά πατήστε Enter.
! !Μπορείτε επίσης να ανατρέξετε σε μια εντολή για έναν ορισμένο αριθμό γραμμών πίσω.Για παράδειγμα, το -2 θα τρέξει το δεύτερο στην τελευταία εντολή που τρέξατε.!!σημαίνει το ίδιο πράγμα με το -1.
Αυτή η επέκταση λειτουργεί οπουδήποτε στη γραμμή.Μπορείτε να προσθέσετε οτιδήποτε θέλετε πριν ή μετά!ή οποιαδήποτε από τις άλλες εκφράσεις σε αυτήν την ενότητα.Για παράδειγμα, μπορείτε να πληκτρολογήσετε την ακόλουθη εντολή για να επαναλάβετε την τελευταία εντολή που εκτελέσατε μέσω του sudo, δίνοντάς σας δικαιώματα root.Αυτό είναι ιδιαίτερα χρήσιμο εάν ξεχάσετε να προσθέσετε sudo πριν εκτελέσετε μια εντολή.
sudo! !Ή, για παράδειγμα, θα μπορούσατε να επαναλάβετε την προηγούμενη εντολή και να διοχετεύσετε την έξοδο της σε grep για να αναζητήσετε κάποιο κείμενο.
! !|grep textΓια να αναζητήσετε μια εντολή στο ιστορικό σας και να την εκτελέσετε, πληκτρολογήστε τα παρακάτω.Αυτό θα εκτελέσει την τελευταία εντολή που ταιριάζει με το κείμενο που καθορίζετε:
! ΚείμενοΈτσι, εάν τρέξατε πρόσφατα μια εντολή που ξεκίνησε με ping, μπορείτε να εκτελέσετε την ακόλουθη εντολή για να την αναζητήσετε.Αυτό θα ψάξει προς τα πίσω το ιστορικό σας, θα εντοπίσει την πιο πρόσφατη εντολή που αρχίζει με "pi" και θα τρέξει αμέσως:
! PiΜπορείτε να προσθέσετε ένα: p σε οποιαδήποτε από τις παραπάνω επεκτάσεις και bash θα εκτυπώσει την εντολή στο τερματικό χωρίς να το τρέξει.Αυτό είναι χρήσιμο εάν θέλετε να επιβεβαιώσετε ότι επιλέγετε τη σωστή εντολή πριν την εκτελέσετε.
! 12: p! !: p! Text: pΕπαναχρησιμοποίηση επιχειρημάτων από το ιστορικό σας Το
Bash σας επιτρέπει επίσης να εκτελέσετε μια νέα εντολή, αλλά να χρησιμοποιήσετε επιχειρήματα από προηγούμενες εντολές στο ιστορικό σας.Αυτό μπορεί να σας βοηθήσει να επαναχρησιμοποιήσετε γρήγορα μακρά ή περίπλοκα επιχειρήματα χωρίς να χρειάζεται να τα ξαναγράψετε.
εντολή! $Για παράδειγμα, ας υποθέσουμε ότι εκτελέσατε την εντολή touch /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 θα συμπληρώσει αυτόματα όλα τα επιχειρήματα που χρησιμοποιήσατε στην προηγούμενη εντολή
Μπορείτε να χρησιμοποιήσετε το ίδιο τέχνασμα που χρησιμοποιείτε για να εκτελέσετε εντολές από το ιστορικό σας για να λάβετε επιχειρήματα από αυτούς.Απλά χρησιμοποιήστε την ακόλουθη φόρμα
command! abc:#Για παράδειγμα, τρέξαμε την εντολή sudo hostname ubuntu νωρίτερα.Αν τρέχουμε την ακόλουθη εντολή, bash θα ψάξει προς τα πίσω μέσα από το ιστορικό για να βρει την τελευταία εντολή που αρχίζει με τα γράμματα που πληκτρολογούμε και να συμπληρώσουμε το όρισμα που καθορίζουμε.τρέχουμε echo! su: 2, bash θα αναζητήσει πίσω για να βρει την τελευταία εντολή που αρχίζει με "su" και συμπληρώστε το δεύτερο όρισμα της, το οποίο είναι "ubuntu".
Άλλα κόλπα λειτουργούν όπως θα περίμενε κανείς.Για παράδειγμα, αντικαθιστώντας τον αριθμό με έναν αστερίσκο, γνωστό ως μπαλαντέρ, προκαλεί bash να συμπληρώσει όλα τα επιχειρήματα από την εντολή:
εντολή! Abc: *Επανεξέταση της προηγούμενης εντολής και τροποποίησης
Το Bash σας επιτρέπει επίσης να επαναλάβετε την προηγούμενη εντολήκαι να προσδιορίσετε κάτι που πρέπει να αλλάξει.Αυτό μπορεί να είναι χρήσιμο για τη διόρθωση ενός τυπογραφικού λάθους σε μια εντολή.Για παράδειγμα, η ακόλουθη εντολή θα επαναλάβει την προηγούμενη εντολή, αντικαθιστώντας το κείμενο "abc" με το κείμενο "xyz".
^ abc ^ xyzΓια παράδειγμα, εάν λάβατε λάθος ping gogle.com, τότε θα μπορούσατε να εκτελέσετε ^ gog ^ goog και bash θα εκτελέσει την εντολή ping google.com.
όπου αποθηκεύεται το ιστορικό σας και πώς να το καθαρίσετε
Το shell κελύφους αποθηκεύει το ιστορικό των εντολών που έχετε εκτελέσει στο αρχείο ιστορικού του λογαριασμού χρήστη στο ~ /. bash_history από προεπιλογή.Για παράδειγμα, εάν το όνομα χρήστη σας είναι bob, θα βρείτε αυτό το αρχείο στο /home/bob/. bash_history.
Επειδή το ιστορικό σας αποθηκεύεται σε ένα αρχείο, αυτό παραμένει μεταξύ των περιόδων σύνδεσης.Μπορείτε να εκτελέσετε μερικές εντολές, να αποσυνδεθείτε, να επιστρέψετε την επόμενη μέρα και αυτές οι εντολές θα εξακολουθούν να βρίσκονται στο αρχείο ιστορικού σας έτοιμες για προβολή και χρήση.Κάθε λογαριασμός χρήστη έχει το δικό του αρχείο ιστορικού με ξεχωριστό ιστορικό εντολών.
Για να καθαρίσετε το ιστορικό bash, μπορείτε να εκτελέσετε την ακόλουθη εντολή.Αυτό διαγράφει το περιεχόμενο του αρχείου. bash_history του λογαριασμού χρήστη: Ιστορικό
-cΤο Bash θυμάται μόνο έναν περιορισμένο αριθμό εντολών από προεπιλογή, αποτρέποντας την υπερβολική μεγέθυνση του αρχείου ιστορικού.Ο αριθμός των καταχωρήσεων ιστορικού εισόδου ιστορικού ελέγχεται από τη μεταβλητή HISTSIZE.Η προεπιλογή είναι συνήθως 500 ή 1000 εγγραφές.Μπορείτε να εκτελέσετε την ακόλουθη εντολή για να δείτε το μέγεθος του ιστορικού bash στο σύστημά σας.
echo $ HISTSIZEΓια να θέσετε το ιστορικό σας στο μηδέν, εκτελέστε την ακόλουθη εντολή.
HISTSIZE = 0Για την τρέχουσα περίοδο λειτουργίας, το bash δεν θα αποθηκεύσει καταχωρήσεις ιστορικού παρά μόνο αν εκτελέσετε μια εντολή όπως HISTSIZE = 1000 για να την επαναφέρετε σε έναν ορισμένο αριθμό καταχωρήσεων.
Πώς να αγνοήσετε τα κενά και τα διπλότυπα Το
Bash σάς επιτρέπει να αγνοήσετε τις καταχωρήσεις ιστορικού που αρχίζουν με ένα κενό, αν ρυθμίσετε το HISTCONTROLvariable σε ignorespace.
HISTCONTROL = ignorespaceΠληκτρολογήστε ένα διάστημα πριν από μια εντολή, πριν την εκτελέσετε στο κέλυφος bash και η εντολή θα τρέξει κανονικά, αλλά δεν θα εμφανιστεί στο ιστορικό σας εάν έχετε ενεργοποιήσει αυτή τη μεταβλητή.Αυτό σας επιτρέπει να κρατήσετε το ιστορικό σας καθαρότερο, επιλέγοντας να εκτελέσετε εντολές χωρίς να εμφανίζονται στο ιστορικό σας.Το
Bash σας επιτρέπει επίσης να αγνοήσετε τις διπλές εντολές που μπορεί να γεμίσει το ιστορικό σας.Για να το κάνετε αυτό, ορίστε το HISTCONTROL σε ignoredups.
HISTCONTROL = ignoredupsΓια να χρησιμοποιήσετε τη λειτουργία ignorespace και ignoredups, ρυθμίστε τη μεταβλητή HISTCONTROL στο ignoreboth.
HISTCONTROL = ignorebothΣημειώστε ότι οι μεταβλητές bash που ορίσατε θα παραμείνουν μόνο για την τρέχουσα περίοδο λειτουργίας.Θα χρειαστεί να τα προσθέσετε στο αρχείο. bashrc του λογαριασμού χρήστη, έτσι ώστε αυτές οι τιμές να ορίζονται αυτόματα σε κάθε συνεδρία bash που ξεκινάτε, αν το προτιμάτε.
Το κέλυφος bash είναι ένα σύνθετο εργαλείο με πολλές επιλογές από αυτές.Συμβουλευτείτε τις ενότητες Buzz History History και Επέκταση Ιστορίας στο επίσημο εγχειρίδιο bash πιο λεπτομερείς πληροφορίες και άλλα προχωρημένα κόλπα που μπορείτε να χρησιμοποιήσετε.