[Σεμινάριο - Unix κοχύλια, Περιβάλλοντα] [Douglas Kline - Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50. - CS50.TV] Το σημερινό θέμα είναι το κέλυφος του Unix. Είμαι Douglas Kline, εμπειρογνώμονα, ή τουλάχιστον λογικά αρμόδιο χρήστη, του κελύφους. Ένα κέλυφος είναι η διεπαφή για τον χρήστη με το λειτουργικό σύστημα του υπολογιστή. Το όνομα είναι παραπλανητική, καθώς, σε αντίθεση με το κέλυφος ενός ζώου, το οποίο είναι σκληρό και προστατευτικό, το κέλυφος του υπολογιστή επιτρέπει την επικοινωνία. Έτσι, πορώδης μεμβράνη θα μπορούσε πιθανότατα να είναι μια καλύτερη μεταφορά. Το αρχικό κέλυφος για Unix είναι το κέλυφος Bourne. Bourne είναι γραμμένες Β-Ο-Υ-Κ-Ν-Ε. Bourne ήταν ένας από τους αρχικούς δημιουργούς του Unix, και έτσι το κέλυφος έχει το όνομά του. Το όνομα του εν λόγω κελύφους ως εντολή είναι απλά sh. Αυτή είναι η εντολή που μπορείτε να εκτελέσετε. Το κέλυφος ξεκινά από την είσοδο. Όταν συνδέεστε με τον υπολογιστή, το κέλυφος αρχίζει ακριβώς τρέχει για σένα, και αυτό είναι που παίρνει τις εντολές σας. Μπορεί να ξεκινήσει σε άλλους χρόνους επίσης. Εάν εμφανιστεί ένα παράθυρο με καμία άλλη ένδειξη, θα ξεκινήσει ένα κέλυφος για σας. Αυτό είναι το πώς είναι ότι μπορείτε να πάτε σε ένα παράθυρο και να αρχίσετε να πληκτρολογείτε εντολές και ούτω καθεξής εκεί ακόμα κι αν δεν συνδεθείτε σε αυτό το παράθυρο. Επιπλέον, αν κάνετε μια απομακρυσμένη σύνδεση, τότε θα αρχίσει ένα κέλυφος στον απομακρυσμένο υπολογιστή. Και είναι δυνατόν να εκτελεί εντολές χωρίς ένα διαδραστικό κέλυφος. Αυτό μπορεί να σημαίνει στην τρέχουσα λειτουργία σας, και μπορεί επίσης να σημαίνει μια απομακρυσμένη λειτουργία. Θα μπορούσατε να στείλετε μια εντολή σε έναν άλλο υπολογιστή, η οποία περιλαμβάνει την εκκίνηση ενός κελύφους εκεί. Στην πραγματικότητα, θα πρέπει να περιλαμβάνει την εκκίνηση ενός κελύφους υπάρχει ακόμη και αν αυτό δεν είναι τελικός σκοπός σας. Όταν κάτι ξεκινάει σαν αυτό, δεν αρχίζει αναγκαστικά ένα νέο κέλυφος. Εάν εμφανιστεί ένα νέο παράθυρο, είναι δυνατόν να του πει να φέρει επάνω ένα πρόγραμμα επεξεργασίας ή κάποια άλλη εντολή. Στην περίπτωση αυτή, ο συντάκτης θα ξεκινήσει από το μηδέν. Όταν τελειώνει ο συντάκτης, το παράθυρο σταματά. Αυτό είναι λίγο ασυνήθιστο, αλλά αυτό μπορεί να γίνει. Σε αυτές τις περιπτώσεις, δεν θα είναι ένα κέλυφος. Γι 'αυτό δεν είναι απαραιτήτως η περίπτωση ότι ένα παράθυρο ή κάποια τέτοια εφαρμογή θα φέρει ένα κέλυφος. Shell αναλύει εντολές. Parsing σημαίνει τον προσδιορισμό των διαφόρων στοιχείων και ταξινόμησή τους. Μέσα σε μια εντολή, η πλήρης σειρά που πληκτρολογείτε, θα υπάρχουν 1 ή περισσότερα ενιαία εντολές που πρέπει να εκτελεστούν. Άλλα στοιχεία μπορούν να είναι τα επιχειρήματα. Μπορεί επίσης να υπάρχουν ειδικοί χαρακτήρες που επηρεάζουν την εκτέλεση της εντολής. Μπορούν να στείλει την έξοδο κάπου εκτός από την οθόνη Αν η εντολή που θα το στείλει κανονικά στην οθόνη. Μπορεί να ανακατευθύνει εισόδου? Μπορεί να κάνει άλλα πράγματα επίσης. Υπάρχουν διάφορα άλλα σύμβολα, χαρακτήρες, και ούτω καθεξής. Parsing περιλαμβάνει τον εντοπισμό και την ερμηνεία αυτών των πραγμάτων. Τώρα, αν δεν υπάρχουν περισσότερες ερωτήσεις, που είναι μάλλον πιθανό δεδομένου ότι δεν υπάρχουν περισσότερα άτομα, θα πάμε στο επόμενο σελίδα μου εδώ. Είπα και προηγουμένως ότι ο Bourne shell είναι το αρχικό κέλυφος. Υπάρχουν άλλοι. Το ένα είναι το C-κελύφους. Η εντολή είναι csh. Το όνομα C-shell είναι απλά ένα παιχνίδι με τις λέξεις. Αυτό το κέλυφος εισήχθη με Berkeley Unix στα μέσα της δεκαετίας του 1970. Berkeley Unix ήταν μια δημιουργική εκδήλωση στην ανάπτυξη του Unix. Ήταν μια τεράστια επανάσταση και περιελάμβανε την εισαγωγή αυτού του φλοιού. Ο λόγος για αυτό το παιχνίδι με τις λέξεις, C-shell, είναι ότι η C-κέλυφος έχει μερικά χαρακτηριστικά σε αυτό που μοιάζουν με τη γλώσσα C, τα οποία δεν έχουν το κέλυφος Bourne - ή δεν είχε εκείνη τη στιγμή. Υπάρχει επίσης το TC-shell. Πρόκειται για ένα υπερσύνολο της C-shell. Έχει επιπλέον χαρακτηριστικά, πολλά από τα οποία είναι χρήσιμα για αλληλεπιδραστική χρήση, όπως υπενθυμίζοντας εντολές στο μηχανισμό της ιστορίας, το οποίο θα περιγράψω λίγο αργότερα - με απλό τρόπο, διαμορφώθηκε μετά από έναν επεξεργαστή κειμένου. Έχει, επίσης, τις συνδέσεις που σας επιτρέπουν να συνδέσετε ένα σύντομο πάτημα string σε μεγαλύτερο εντολή. Εμείς δεν πρόκειται να πάρει σε αυτό σήμερα. Έχει κάποια χαρακτηριστικά που είναι χρήσιμα για τον προγραμματισμό. Ωστόσο, η C-shell δεν χρησιμοποιείται συχνά για τον προγραμματισμό κελύφους. Η Shell προγράμματα, αν δεν έχετε ήδη γνωρίζετε, είναι προγράμματα που αποτελούνται από τα χαρακτηριστικά του κελύφους. Θα μπορούσε να τρέξει αυτά τα προγράμματα. Μπορείτε να γράψετε ένα μάτσο εντολές του κελύφους σε ένα αρχείο και εκτελέστε το αρχείο. Δεν χρειάζεται να το υπολογίσουν. Αυτή είναι μια ερμηνευτική γλώσσα. Η φράση C-shell είναι πλέον ασαφής, δεδομένου ότι μπορεί να αναφέρεται μόνο στον αρχικό C-shell, csh, ή σε όλα τα C-κοχύλια, συμπεριλαμβανομένων tcsh. Είναι λίγο ασαφής. Μια μεταγενέστερη κέλυφος είναι το κέλυφος Korn, ksh, το όνομά του από τον προγραμματιστή, Korn. Αυτό το shell προσπαθούσε να ενσωματώσει σε 1 κέλυφος τα πλεονεκτήματα του C-shell για διαδραστική χρήση και το Bourne shell για τον προγραμματισμό. Έχει χρησιμοποιηθεί ως ένα διαδραστικό κέλυφος από κάποιους ανθρώπους - μια μειονότητα. Αργότερα όμως, υπήρχε μια άλλη εισαγωγή, το κέλυφος Bash, BASH, και πάλι ένα παιχνίδι με τις λέξεις, Bourne-again shell. Είναι μια επέκταση του κελύφους Bourne. Korn φλοιός είναι επίσης. Δύο από αυτούς είναι. Έχει τους ίδιους στόχους της Korn shell συγχωνευθούν το C-κελύφους και τα πλεονεκτήματα του φλοιού Bourne στο κέλυφος 1. Πολλές από τις βελτιώσεις του κελύφους Korn περιλαμβάνονται επίσης στο Bash. Bash, ωστόσο, έχει περισσότερα και είναι επομένως προτιμότερη. The Bourne-again κέλυφος και το κέλυφος Korn ονομάζονται κοχύλια Bourne τύπου διότι περιλαμβάνουν χαρακτηριστικά του φλοιού Bourne, η που είναι ασύμβατες σε ορισμένα σημεία με C-κελύφη. Υπάρχουν και άλλα κελύφη πέρα ​​από αυτές, ορισμένοι που προορίζονται για περιορισμένη χρήση, ίσως περιορίζεται σε κάποιες εντολές, ίσως εξειδικευμένους σκοπούς, που δεν χρησιμοποιούνται συχνά. Εντάξει. Επόμενο στοιχείο εδώ. Το Bash κέλυφος έχει συνδεθεί με διάφορες μορφές του Linux. Δεν είμαι σίγουρος αν αυτό είναι αλήθεια κάθε μορφής. Υπάρχουν πολλές μορφές έξω εκεί και δεν έχω όλα αυτά που χρησιμοποιούνται, αλλά σε αυτούς που έχω χρησιμοποιήσει έχει γίνει συνδεδεμένες με αυτό. Έτσι, ό, τι γνωρίζω, δεν υπάρχει τίποτα για το Bash γεγονός που καθιστά πλέον συμβατό με το Linux από οποιοδήποτε άλλο συνδυασμό του κελύφους και του λειτουργικού συστήματος. Νομίζω ότι αυτό πιθανώς αντανακλά μόνο τις κλίσεις των προγραμματιστών. Ότι έχει αρχίσει να συνδέεται με το Linux είναι ένας άλλος λόγος για να προτιμούν Bash για Ksh δεδομένου ότι τα πράγματα είναι πιθανό να είναι γραμμένο σε αυτό και είναι πιθανό να εξαπλωθεί. Θα σας δώσω άλλους λόγους γι 'αυτό αργότερα. Bourne shell scripts θα πρέπει να τρέξει κάτω από το κέλυφος Korn ή Bash. Αν γράψετε κάτι για το κέλυφος Bourne, μπορείτε πιθανώς να εκτελέσει σύμφωνα με ksh ή το bash. Korn shell scripts μάλλον θα τρέξει κάτω από Bash, αλλά δεν μπορώ να το εγγυηθώ. Αργότερα εδώ, scripts C-shell θα πρέπει να τρέξει κάτω από το TC-shell. Το C-shell ήταν στην πραγματικότητα ποτέ δεν χρησιμοποιείται εκτενώς για scripting δεδομένου ότι το κέλυφος Bourne και αργότερα τα κελύφη Bourne τύπου ήταν προτιμότερο για τον σκοπό αυτό. Έτσι, αυτό δεν είναι πραγματικά όλα αυτά σημαντικά. Υπάρχουν πάρα πολλά Bourne shell scripts τα οποία γράφτηκαν πολύ καιρό πριν, πριν από το κέλυφος Korn ή το Bourne-again κέλυφος εισήχθησαν. Αυτά είναι ακόμα σε χρήση, ένα μέρος των λειτουργικών συστημάτων, και έτσι θα τα βρείτε αν κοιτάξετε στο λειτουργικό σύστημα ή κάποια παλαιά πακέτα προγραμματισμού. Bash είναι σε κάποιο βαθμό να γίνει ένα είδος lingua franca για τα λειτουργικά συστήματα. Είναι ήδη επεκταθεί σε Windows και να αποκτήσει VMS. VMS, σε περίπτωση που δεν ξέρετε, είναι ένα ιδιόκτητο λειτουργικό σύστημα της Digital Equipment Corporation η οποία είναι ακόμη σε χρήση, σε μεγάλο βαθμό πίσω από τις σκηνές. Και αν πρόκειται να τρέχει σε πολλά διαφορετικά λειτουργικά συστήματα, πιθανό οι άνθρωποι τείνουν να στραφούν για αυτό. Αλλά αυτή η εξέλιξη είναι σχετικά πρόσφατη. Είναι μόνο η αρχή, οπότε δεν μπορώ να προβλέψω εάν αυτό θα αποδειχθεί ότι είναι πραγματικά αυτό το είδος της lingua franca. Επίσης, επειδή pathnames αρχείων και βιβλιοθηκών διαφέρουν μεταξύ αυτών των διαφορετικών λειτουργικών συστημάτων, ενδέχεται να μην είναι σε θέση να γράψει ένα σενάριο Bash σε ένα λειτουργικό σύστημα και στη συνέχεια να το εκτελέσετε σε ένα άλλο. Θα πρέπει να είναι σε θέση να κινούνται μεταξύ διαφορετικών Unix, Linux Λειτουργικά συστήματα Mac OS, αλλά όχι αναγκαστικά σε Windows ή VMS. Ίσως χρειαστεί να αλλάξετε την περιγραφή του αρχείου διαδρομή, και μερικές βιβλιοθήκες μπορεί να είναι διαφορετικά, η οποία μπορεί να επηρεάσει τον τρόπο που κάποιοι εντολές δουλεύουν ή πώς να επεξεργάζονται τα επιχειρήματα και τα παρόμοια. Επιπλέον προς αυτό, ένα άλλο προσοχής εδώ είναι ότι δεν υπάρχει εγγύηση ότι όλα τα διαφορετικά κελύφη που έχω αναφέρει - κέλυφος Bourne, C-shell, TC-κελύφους, κέλυφος Korn, Bourne-again κέλυφος - θα είναι διαθέσιμα από οποιαδήποτε Unix ή Linux ή Mac OS υπολογιστή. Απλώς δεν θα μπορούσε να υπάρχει. Αυτός είναι ένας από τους προειδοποιεί εδώ. Είναι ένα ατυχές περιορισμό εδώ αφού θα θέλατε να λειτουργήσουν τα πράγματα παντού, αλλά, δυστυχώς, δεν μπορείτε να βασιστείτε σε αυτό. Εντάξει. Επόμενο εδώ. Ας υποθέσουμε ότι θέλετε να γράψετε ένα shell script, ένα πρόγραμμα που αποτελείται από εντολές του κελύφους. Μπορείτε να γράψετε τις εντολές σας, βάλτε τα σε ένα αρχείο, εκτελέστε το αρχείο. Τι γίνεται αν θέλετε να συμπεριλάβετε τα επιχειρήματα; Στην περίπτωση των εργασιών του κελύφους, τα επιχειρήματα που ονομάζονται παράμετροι ή παράμετροι θέσης και θα πρέπει να κληθεί από το σύμβολο του δολαρίου και ο αριθμός, $ 1, $ 2. Έτσι, αν το σενάριο έχει αυτό το όνομα, το πρώτο επιχείρημά μου θα μπορούσε να είναι το επιχείρημα 1 και το δεύτερο μου μπορεί να είναι το επιχείρημα 2, και μέσα στο σενάριό μου αν θέλω να αναφερθώ σε αυτά τα πράγματα - ας διαγράψει αυτό δεδομένου ότι δεν είμαι πραγματικά πρόκειται να τρέξει - μέσα στο σενάριό μου θα μπορούσα να έχω $ 1 για να αναφερθώ σε ΠΑΡΑΜ1, $ 2, το οποίο θα βγει με αυτόν τον τρόπο, arg2. Έτσι, αυτά τα σύμβολα είναι διαθέσιμα για να αναφερθώ στα επιχειρήματα, και εκείνες που ισχύουν για όλα τα κελύφη. Επιπλέον, υπάρχουν και άλλες χαρακτήρων. $ * Αναφέρεται σε ολόκληρη τη λίστα επιχείρημα, όλοι τους. $ # Αναφέρεται στον αριθμό των επιχειρημάτων. Και πάλι, αυτό ισχύει για όλα τα κελύφη. Τα εν λόγω σύμβολα, * και #, μπορούν να χρησιμοποιηθούν με αυτές τις σημασίες και σε άλλα μέρη, επίσης. Εμείς δεν θα πάρει σε αυτό. Shell γραμμή προσδιοριστικό. Τι είναι αυτό; Ας πούμε ότι έχετε γράψει ένα σενάριο και αυτό είναι για ένα συγκεκριμένο κέλυφος και θέλετε να το εκτελέσετε. Πώς ξέρεις τι πληρώνω το λειτουργικό σας σύστημα θα χρησιμοποιήσει για να τρέξει το script σας; Σε ένα σημείο θα μπορούσε να υποθέσει ότι θα το τρέξει στο κέλυφος Bourne αν δεν λένε το αντίθετο, αλλά οι άνθρωποι δεν έχουν τη συγγραφή σεναρίων στο κέλυφος Bourne τόσο πολύ πια και δεν μπορεί ακόμη και να βασίζονται σε αυτό πια. Έτσι, εδώ έχουμε μια γραμμή προσδιοριστικό κέλυφος εδώ. Αυτό καθορίζει Bash. Σημειώστε ότι θα καθορίσει τη διαδρομή, / bin / bash. Εάν ένας υπολογιστής έχει το κέλυφος Bash, αλλά όχι στον κατάλογο bin, / bin, αυτό δεν θα λειτουργήσει. Αυτό είναι ένα άλλο προκριματικό, μια άλλη προφύλαξη εδώ. Η δίεση είναι ο χαρακτήρας της γραμμής σχόλιο. Αυτό ισχύει για όλους τους φλοιούς. Η συγκεκριμένη περίπτωση εδώ, #! κατά την έναρξη του σεναρίου, είναι μια ειδική περίπτωση. Αυτό καθορίζει το κέλυφος μέσα στο οποίο εκτελείται το script. Όπως έλεγα, μπορεί να μην είναι το ίδιο μέρος / bin. Επιπλέον, υπάρχει ένα άλλο πράγμα εδώ. Εάν χρησιμοποιείτε μόνο το δίεση χωρίς θαυμαστικό και διαδρομή, ότι θα πρέπει να αναφέρουν ένα C-shell. Ωστόσο, δεν συνιστούμε να το κάνετε αυτό, επειδή δεν είμαι σε θέση να εγγυηθεί ότι θα λειτουργεί πάντα. Αν θέλετε ένα C-shell, θα ήταν καλύτερα να το πω έτσι. Στη συνέχεια, υπάρχει κάτι μάλλον σύγχυση εδώ. Εάν χρησιμοποιείτε μια γραμμή κέλυφος προσδιοριστικό, όπως / bin / bash και ότι το κέλυφος δεν είναι διαθέσιμα εκεί, δεν υπάρχει τέτοιο πράγμα όπως / bin / bash για το συγκεκριμένο υπολογιστή, είτε επειδή δεν έχει Bash ή επειδή είναι σε μια διαφορετική θέση, θα πάρετε ένα λάθος που σας ενημερώνει ότι το σενάριο τρέξατε δεν υπάρχει. Και φυσικά υπάρχει το script σας, έτσι ώστε το μήνυμα λάθους είναι συγκεχυμένη. Ο λόγος για τον οποίο το λειτουργικό σύστημα σας δίνει αυτό το σφάλμα ή, ακριβέστερα, ότι το διαδραστικό κέλυφος σας, στο οποίο εκτελείτε αυτό δίνει αυτό το σφάλμα, είναι ότι αναφέρει την εντολή που χρησιμοποιείται, το οποίο είναι το όνομα του σεναρίου. Αυτό εντολή που ονομάζεται αποτελεσματικά το κέλυφος από το όνομα του σεναρίου. Αυτό είναι όπου μπορείτε να πάρετε αυτό το μήνυμα λάθους σύγχυση. Ένας άλλος τρόπος να καλέσετε το shell script είναι καθορίζοντας το κέλυφος στη γραμμή εντολών, όπως εδώ. Αυτή είναι μια εντολή. Αυτό λέει τρέχει Bash και στη συνέχεια να εκτελέσετε το σενάριό μου σε Bash. Αυτό θα υπερισχύουν μια γραμμή προσδιοριστικό, και αυτό έχει το χαρακτηριστικό σας επιτρέπει να παρέχουν ποικίλες pathnames. Αν δώσω μια εντολή, το λειτουργικό σύστημα θα ψάξει για εκείνη την εντολή σε διάφορα μέρη. Αν είναι διαθέσιμη, θα πρέπει να το βρείτε. Ο υπολογιστής θα βρείτε Bash όπου αυτό είναι που βρίσκεται και να τρέξει, έτσι ώστε να μην χρειάζεται στη συνέχεια να ανησυχεί για το πού βρίσκει. Υπάρχουν ενδεχομένως άλλες ανησυχίες εδώ, σαν να υπάρχει κάτι περισσότερο από 1 έκδοση του Bash, η οποία είναι δυνατή, αν και απίθανο. Έτσι, αυτό είναι ένας άλλος τρόπος για να ασχοληθεί με αυτά τα πράγματα. Γραμμές προσδιοριστής μπορεί να καλέσει οποιοδήποτε κέλυφος. Μπορούν επίσης να λέμε τα πράγματα εκτός από κοχύλια. Παραδείγματα έχω εδώ οι sed, που είναι ο συντάκτης ρεύμα? awk, η οποία είναι μια γλώσσα επεξεργασίας μοτίβο? και perl, μια πολύ ανεπτυγμένη γλώσσα scripting. Αν βάλετε μια γραμμή προσδιοριστικό δείχνει ένα από αυτά τα προγράμματα, κατά την έναρξη, θα πάει κατευθείαν στο εν λόγω πρόγραμμα και όχι ξεκινώντας ένα κέλυφος. Τα προγράμματα αυτά έχουν τα όρια με τις ικανότητές τους. Perl είναι πολύ ικανή. Sed είναι ένας επεξεργαστής. Μπορεί να κάνει πράγματα πέρα ​​από την απλή επεξεργασία. Αλλά μπορεί να είναι δύσκολο να προγραμματίσετε αυτό. Επιπλέον, περνώντας τα επιχειρήματα και τα πράγματα με το σενάριο είναι είτε αδύνατη ή σύγχυση. Έτσι, σε αυτές τις περιπτώσεις, με awk ή sed, είναι, τουλάχιστον από την εμπειρία μου, προτιμότερο να γράψετε ένα shell script και κλήση awk ή sed από το σενάριο φλοιού όχι καλώντας awk ή sed ως το σενάριο μια προσδιοριστικό. Perl είναι μια άκρως διαφοροποιημένη γλώσσα, όπως είπα. Δεν μπορείτε να εκτελέσετε μια εντολή σε perl, πράγμα που σημαίνει ότι δεν μπορείτε να δοκιμάσετε τα μέρη των σεναρίων που είστε ανάπτυξη εκτελώντας τα διαδραστικά. Ωστόσο, αυτό είναι ένα εξαιρετικά ικανό γλώσσα και έχει εξελιχθεί σε ένα πολύ ευρέως χρησιμοποιούμενο εργαλείο. Αυτό είναι μόνο ένα μικρό κομμάτι από ένα παρενθετική παρατήρηση σχετικά με τις γραμμές προσδιοριστικό. Σε όλες ή τις περισσότερες μορφές του Linux - και πάλι, δεν μπορώ να είμαι σίγουρος ότι είναι όλα - και σε Mac OS, αν πληκτρολογήσετε csh έχετε tcsh, και αν πληκτρολογήσετε sh παίρνετε bash. Προσπαθούσαν εκεί για να σας δώσει τις πιο εξελιγμένες εκδόσεις από αυτά τα κελύφη, αλλά αυτό μπορεί να προκαλέσει σύγχυση. Αν γράψεις ένα σενάριο χρησιμοποιώντας tcsh ή χαρακτηριστικά του Bash, ζητώντας ταυτόχρονα csh ή sh και στη συνέχεια προσπαθήστε να το εκτελέσετε σε έναν υπολογιστή που δεν έχει tcsh ή Bash, μπορείτε να πάρετε κάποια λάθη, αν υπάρχουν εντολές εκεί οποίους οι εν λόγω κελύφη δεν αναγνωρίζουν. Επιπλέον, μπορεί να έχετε κληθεί το κέλυφος σας σε τοπικό υπολογιστή σας αποκαλώντας την ως sh ή csh και στη συνέχεια να πάρει τις πιο προηγμένες κοχύλια. Δεν μπορείτε να σκεφτείτε ακόμη και για το γεγονός ότι είστε χρησιμοποιώντας την πιο προηγμένη κέλυφος. Έτσι, αυτό είναι μια πιθανή παγίδα. Πώς κρίνεται ότι αν πληκτρολογήσετε sh έχετε Bash, αν πληκτρολογήσετε csh έχετε tsch; Υπάρχουν πράγματα σε αυτούς τους υπολογιστές που ονομάζονται σύνδεσμοι η οποία μπορεί να συνδεθεί με το αρχείο ονομάτων και αναφέρονται στο ίδιο πράγμα. Μπορεί να είναι είτε 2 ονόματα για το ίδιο αρχείο ή ένα αρχείο, σκοπός των οποίων είναι να αναφερθώ σε ένα άλλο αρχείο. Λέγονται σκληρά και συμβολικούς δεσμούς. Δεν θα υπεισέλθω σε αυτό πια σήμερα. Μπορεί επίσης να υπάρχουν ξεχωριστά αρχεία - 1 αρχείο sh, 1 αρχείο Bash - αλλά και οι δύο τρέχουν Bash. Στη συνέχεια, υπάρχει ένα άλλο προκριματικό εδώ. Αν είστε καλώντας ένα από αυτά τα κελύφη από ένα όνομα, ίσως νομίζετε ότι θα πάρετε την ίδια λειτουργικότητα με αποκαλώντας με άλλο όνομα. Λοιπόν, η πραγματικότητα δεν είναι απαραίτητα αλήθεια. Αυτές οι εντολές μπορούν να εξετάσουν το όνομα με το οποίο κλήθηκαν και μπορούν, με βάση αυτό το όνομα, συμπεριφέρονται διαφορετικά. Μπορεί να υπάρχουν ζητήματα που προσπαθεί να είναι σύμφωνες με ένα πρότυπο. Κάποιοι από εσάς μπορεί να έχετε ακούσει για το πρότυπο POSIX ή άλλο, ίσως και άλλα χαρακτηριστικά. Αυτό μπορεί να επιλεγεί μερικές φορές από τα επιχειρήματα της γραμμής εντολών ή με τον καθορισμό των μεταβλητών κελύφους. Κλήση ως sh ή το bash μπορεί πράγματι να οδηγήσει σε μια διαφορετική εκτέλεση ακόμα κι αν είναι το ίδιο αρχείο που είστε εκτέλεση. Ένα άλλο πράγμα που εξετάζει είναι ότι ακόμα και αν κάποιος άλλος υπολογιστής έχει tcsh ή Bash, αν δεν συνδέονται όπως είναι στον τοπικό υπολογιστή σας εάν έχετε έναν τοπικό υπολογιστή Linux ή Mac OS, τότε και πάλι θα πάρετε το κέλυφος που σας καλούν sh ή csh, όχι αυτός που ίσως προτιμάτε. Το τρέχον κέλυφος Bourne έχει βελτιώσεις μικρότερο από ό, τι εκείνες Bash αλλά το παρελθόν εκείνα της αρχικής κέλυφος Bourne. Ως αποτέλεσμα του ότι, ακόμη και η τρέχουσα κέλυφος Bourne, SH, ακόμα και όταν δεν υπάρχει Bash, μοιάζει με τη γλώσσα C πάνω από το C-shell κάνει. Αυτό δεν ήταν αλήθεια, όταν δημιουργήθηκε για πρώτη φορά το C-shell, αλλά έχει αναπτυχθεί με αυτόν τον τρόπο. Μπορείτε να παρατηρήσετε εδώ ότι όλα αυτά τα ονόματα κέλυφος, εκτός από το κέλυφος Bourne έχουν κάτι να αναφέρουν ποια κέλυφος είναι - csh, bash - αλλά το κέλυφος Bourne είναι μόνο sh. Γιατί; Αυτή ήταν η αρχική κέλυφος. Ήταν στο κέλυφος, τότε, όχι ένα κέλυφος, και δεδομένου ότι ήταν το κέλυφος, δεν υπήρχε λόγος να το διακρίνει από ένα άλλο κέλυφος. Έτσι, γι 'αυτό και έχει αυτό το όνομα και εξακολουθεί να το κάνει. Το κορυφή εδώ είναι μια γραμμή από μια βάση δεδομένων κωδικό πρόσβασης για ένα λογαριασμό που έχω εκεί σε έναν άλλο υπολογιστή. Πάω να προσπαθήσει να πάρει αυτό το όνομα, ώστε να μπορείτε να δείτε αυτό το μέρος, στο τέλος, το κέλυφος. Η βάση δεδομένων κωδικού πρόσβασης κατέχει τα χαρακτηριστικά σύνδεσης για όλους τους χρήστες. Στην αρχή είναι το όνομα χρήστη, το οποίο μπορείτε να δείτε τα τελευταία 2 γράμματα μου τώρα. Τα πεδία εδώ χωρίζονται με άνω και κάτω τελεία. Το τελευταίο πεδίο, όπως μπορείτε να δείτε, είναι bin / tcsh, το κέλυφος. Αυτό είναι το προσδιοριστικό κέλυφος. Υπάρχει κάτι ενδιαφέρον εδώ. Όταν Unix αναπτύχθηκε για πρώτη φορά, υπήρχε μόνο 1 κέλυφος, οπότε δεν υπήρχε άλλη επιλογή εκεί. Γιατί, λοιπόν, να επιτρέπουν ένα πεδίο στη βάση δεδομένων κωδικό πρόσβασης για να καθορίσετε ένα κέλυφος; Δεν ξέρω, αλλά είναι ευτυχές το γεγονός ότι το έκαναν. Είναι μάλλον δύσκολο να γίνουν αλλαγές στη μορφή της βάσης δεδομένων κωδικού πρόσβασης επειδή πολλά προγράμματα αφορούν τη μορφή του και θα πρέπει να ξαναγραφεί. Είναι μια ευτυχής ή τυχαία εξέλιξη που περιλαμβάνεται αυτό το πεδίο. Αυτό το είδος της γραμμής κωδικό πρόσβασης αρχείο χρησιμοποιείται σε όλους τους υπολογιστές Unix και Linux, καθόσον γνωρίζω. Το Mac έχει το δικό του σύστημα. Έχει πραγματικά ένα κωδικό πρόσβασης αρχείο με τις γραμμές σε αυτή τη μορφή, αλλά αυτό δεν είναι το σημείο όπου τα χαρακτηριστικά ορίζονται από το χρήστη. Μια άλλη παρενθετική παρατήρηση εκεί. Αν είστε καλώντας ένα κέλυφος, μπορείτε να καλέσετε ως υπο-κελύφους των υφιστάμενων κελυφών σας. Έτσι, αν πάω εδώ, ας απαλλαγούμε από αυτά τα πράγματα. Εδώ είμαι στο C-shell. Αυτό μεταβλητή, η οποία προσδιορίζει με ακρίβεια το κέλυφος μου, στην πραγματικότητα δεν είναι πάντα ένας αξιόπιστος τρόπος για να καθοριστεί τι πληρώνω τρέχετε, αλλά σε αυτή την περίπτωση είναι. Τι θα συμβεί αν απλά πληκτρολογήστε - Τώρα είμαι σε Bash. Μερικά πράγματα που πρόκειται να είναι το ίδιο. ls μου λέει τις εντολές μου. Αν κάνω μια αναστολή πίσω μου C-shell, ls, το ίδιο. Σωστά; fg, τα νέα στοιχεία, πίσω στο κέλυφος Bash μου. pwd, τρέχοντα κατάλογο, πίσω στο C-shell. pwd, διαφορετικό κατάλογο - στην πραγματικότητα δεν είναι ένα διαφορετικό κατάλογο σε αυτή την περίπτωση. Είναι το ίδιο κατάλογο. Ας πούμε ότι θέλετε να καλέσετε μια εντολή εδώ: όπου ls. Τι σημαίνει ότι κάνει; Μου λέει πού εντολή οι ls, αυτό που μου δίνει μια λίστα καταλόγου, βρίσκεται στην ls. Ας πάμε πίσω στο κέλυφος Bash. Ας προσπαθήσουμε το ίδιο πράγμα. Χμμ, ενδιαφέρον υπάρχει, όπου: η εντολή δεν βρέθηκε. Γιατί συμβαίνει αυτό; Η εντολή όπου είναι χτισμένο μέσα στο C-shell. Αυτό δεν είναι μια εντολή που πρέπει να διαβάζονται στη μνήμη από κάπου αλλού και να εκτελεστεί. Το C-shell τρέχει μεταφέροντας την εκτέλεση στο πλαίσιο του δικού της κώδικα και δεν είναι στο κέλυφος Bash. Έτσι Bash, που δεν έχουν τέτοιο ενσωματωμένη εντολή, αναζητά αυτό, δεν το βρείτε, και παίρνουμε ένα σφάλμα. Έτσι, εκεί έχουμε ένα κέλυφος Bash εκτελείται σε ένα C-shell, και καλούμε ότι μια υπο-shell. Και ακριβώς σε περίπτωση που είστε περίεργοι, φλοιού Bash έχει το δικό του τρόπο για τον εντοπισμό εντολές. διαγραμμισμένο αναφέρεται στο γεγονός ότι μπορεί να εκτελεστεί ταχύτερα, που βρέθηκαν πιο γρήγορα. Αυτό είναι μία από τις βελτιώσεις χτισμένο σε ορισμένα από αυτά τα κελύφη. Κελύφη Bourne τύπου προτιμούνται για τον προγραμματισμό. Έχουν δομές ελέγχου όπως οι βρόχοι, υπό όρους δηλώσεις, το είδος των εντολών που μπορείτε να χρησιμοποιήσετε σε γλώσσες προγραμματισμού όπως η C ή ανεξάρτητα από τη γλώσσα. Ίσως είστε προγραμματισμό σε Java ή οτιδήποτε άλλο. Κελύφη έχουν γιαυτά. Τα κελύφη Bourne τύπου, ιδιαίτερα Bash, έχουν περισσότερες και έχουν σχεδιαστεί με μεγαλύτερη ευελιξία. Το φλοιού Bash έχει συστοιχίες. Η αρχική Bourne shell δεν το κάνει. Έτσι ώστε να μπορεί να είναι σημαντικά πλεονεκτική για τον προγραμματισμό. Το C-shell κάνει πραγματικά έχουν συστοιχίες, αλλά δεν έχει πολλά από αυτά τα άλλα χαρακτηριστικά. Τα κελύφη Bourne τύπου θα εκτελέσει γρηγορότερα εάν δεν έχουν τα χαρακτηριστικά που προορίζονται για διαδραστική χρήση. Θα φορτώσει τα πράγματα κάτω για ένα σκοπό? Αυτό τους φορτώνει τα κάτω για άλλο σκοπό. Υπάρχει ότι το εμπόριο-off εκεί. Αυτά τα χαρακτηριστικά τα οποία προορίζονται για τη διαδραστική χρήση πραγματικά είναι λίγο ή καθόλου χρήση για scripting. Είναι δυνατόν να χρησιμοποιήσετε ένα διαδραστικό υπο-shell ακριβώς όπως αυτή που ξεκίνησε εκεί να δοκιμάσουν τις εντολές που σκοπεύετε να χρησιμοποιήσετε σε ένα σενάριο. Αυτό είναι ό, τι δεν μπορείτε να κάνετε με perl. Μπορείτε να το κάνετε με τα κελύφη. Ακόμα και οι δομές, όπως για βρόχους και ούτω καθεξής μπορούν να τρέξετε με αλληλεπίδραση. Είναι μερικές φορές χρήσιμο να λειτουργεί αλληλεπιδραστικά, αλλά πιο πιθανό εσείς τους χρησιμοποιούν για να αναπτύξουν μια δέσμη ενεργειών. Ψευδώνυμα. Αυτό πρόκειται να είναι περίπου το C-shell. Ιστορία μηχανισμό όπου μπορείτε να πάρετε πίσω σε προηγούμενες εντολές ή μέρη αυτών που έχετε ήδη τρέξει. Και πάλι, για το C-shell, το κέλυφος Bourne και το κέλυφος Korn έχουν αυτά τα πράγματα, αλλά εγώ δεν πρόκειται να μπει σε αυτά. Έτσι, εδώ είναι μερικά χρήσιμα ψευδώνυμα που έχω. Αντί να πληκτρολογήσετε ls - είναι μια κοινή εντολή - απλά πληκτρολογήστε l και να σώσει τον εαυτό σας 1 χαρακτήρα. ls με διάφορες επιλογές, όλοι όσοι εργασία. Σημειώστε ότι οι ορισμοί αυτοί έχουν εισαγωγικά γύρω τους. Σε αυτές τις περιπτώσεις, τα εισαγωγικά δεν είναι απαραίτητες. Αν μπορεί να προσδιορίσει τις ψευδώνυμα χωρίς τα εισαγωγικά, θα εξακολουθούν να εργάζονται. Συνιστώνται. Υπάρχουν περιπτώσεις κατά τις οποίες δεν μπορείτε να χρησιμοποιήσετε το απόσπασμα επειδή θέλετε να συμβεί κάτι που θα αποτρέψει το απόσπασμα. Μερικές φορές μπορείτε να παραθέσω μέρος του ορισμού, αλλά όχι όλα. Είναι επίσης γενικά συνιστάται η χρήση μονά εισαγωγικά αντί για διπλά εισαγωγικά. Διπλά εισαγωγικά έχουν επιπτώσεις στις ορισμούς μεταβλητών, ιδιαίτερα προκαλώντας τους να αξιολογηθούν παρά τη διακοπή της. Γιατί να θέλουμε να σταματήσουμε την αξιολόγηση; Και πώς εισαγωγικά το κάνει αυτό για εμάς; Εδώ είναι μια εντολή που μπορείτε να βρείτε ενδιαφέροντα. «Ls g *» g *, όπως ίσως γνωρίζετε, είναι μια έκφραση μπαλαντέρ για όλα τα ονόματα που αρχίζουν με g. Αν απλά γράψετε σε μια εντολή ls g *, θα πάρετε μια λίστα με όλα αυτά τα ονόματα σε τρέχοντα κατάλογο μου. Αν μπορώ να προσδιορίσω ότι ψευδώνυμο όπως είναι εδώ με τα εισαγωγικά, θα τρέξει την εντολή αυτή στο τρέχοντα κατάλογο σας, όπου είστε το τρέξιμο. Αλλά αν τρέχετε τον ορισμό ψευδώνυμο χωρίς τα εισαγωγικά, θα αξιολογήσει την μπαλαντέρ g * όταν τρέχει αυτό τον ορισμό της εντολής. Έτσι, ο ορισμός του ψευδώνυμο θα ls ακολουθείται από την λίστα των αρχείων στον κατάλογο στην οποία η εντολή alias εκτελείται, ανεξάρτητα από το πού σκοπεύετε πραγματικά να εκτελέσετε την εντολή. Αυτό δεν είναι πολύ χρήση, και τα μονά εισαγωγικά εμποδίζουν την αξιολόγηση του αστερίσκου. Έτσι, μπορείτε απλά να πάρετε τον ορισμό ον ls g *. Στη συνέχεια, όταν εκτελείτε το ψευδώνυμο, lgs, τότε βάζει ότι έξω. Τώρα δεν υπάρχουν εισαγωγικά, και θα αξιολογήσει τον αστερίσκο όταν εκτελείτε την εντολή alias. Έτσι, αυτό είναι ένα πράγμα. Διπλά εισαγωγικά θα έχει τα ίδια αποτελέσματα και εδώ, αλλά υπάρχουν και άλλες περιπτώσεις στις οποίες διπλά εισαγωγικά δεν θα μπορούσε να λειτουργήσει τόσο καλά. Εδώ είναι ένα άλλο. Ίσως γνωρίζετε την εντολή grep. Η εντολή grep μπορεί να χρησιμοποιηθεί για να ανιχνεύσει ένα αρχείο για τις γραμμές που έχουν ορισμένες χορδές. Οπότε ας πάμε εδώ και θα βγείτε από το κέλυφος Bourne μου. Εντάξει. Εδώ είναι ένα αρχείο. Ας πούμε ότι είναι grep χορδές abc. Εκεί είναι. Αν το κάνω grep zddd, παίρνω τίποτα. Εντάξει. Γι 'αυτό βρίσκει ένα string, αναφέρει? Δεν βρίσκει, δεν το αναφέρετε. Εξάγει κάθε γραμμή που έχει αυτή η συμβολοσειρά σε αυτό. Υπάρχουν όλα τα είδη των επιλογών εδώ που μπορείτε να βρείτε στην τεκμηρίωση. Εδώ είναι ένας τρόπος για να το κάνει. Τι γίνεται με αυτό το ένα, το ψευδώνυμο grabc «grep abc»; Αυτό πρόκειται να περιλαμβάνει 1 επιχείρημα, όταν το ψευδώνυμο ορίζεται. Έτσι, αν το κάνω αυτό εδώ, τώρα αν κάνω grabc, τώρα το ψευδώνυμο περιλαμβάνει περισσότερα από την απλή εντολή. Έχει, επίσης, το επιχείρημα. Μέχρι στιγμής, αυτό λειτουργεί. Έχω μια άλλη εντολή εδώ, αυτή τη φορά, έτσι ώστε αυτές είναι διαφορετικές χορδές εκεί και δείχνουν ότι αυτό δεν βρείτε τίποτα εκεί, δεδομένου ότι δεν ταιριάζει. Τι γίνεται αν θέλω να συμπεριλάβουν στον ορισμό ψευδώνυμο το αρχείο που Πάω να αναζητήσετε και θέλω να δώσω ως επιχείρημα για την ψευδώνυμο το string που ψάχνω; Μπορεί να θέλω να πω abc ως επιχείρημα για το ψευδώνυμο μου, αλλά το ψευδώνυμο ήδη καθορίσει το αρχείο. Και αυτό είναι όπου η έκφραση αυτή μπαίνει Προσέξτε εδώ ότι έχουμε grep ακριβώς όπως πριν. Έχουμε το αρχείο εδώ, χορδές. \! ^, Το είδος της μια περίεργη έκφραση, υποθέτω, αν δεν το έχετε δει αυτό πριν. Θαυμαστικό είναι μέρος του μηχανισμού της ιστορίας C-shell. Μπορεί να ανακαλέσετε προηγούμενες εντολές, μπορούν να θυμηθούν τα επιχειρήματα για τις εντολές αυτές και ούτω καθεξής. Ο μηχανισμός ιστορία χρησιμοποιείται ως μέρος του aliasing. Εάν καθορίσετε μια γραμμή μετά το θαυμαστικό, θα αναφερθώ σε αυτή τη γραμμή στη λίστα ιστορικού, το οποίο δεν θα πρέπει να πάρει τώρα σε δεδομένου ότι είναι ένα εντελώς άλλο θέμα. Είναι δυνατόν να προσδιορίζει τμήμα μιας γραμμής. Έτσι! 3:02 θα είναι το δεύτερο επιχείρημα του αριθμού εντολών 3. Το καρέ εδώ σε αυτή την έκφραση ξεχωρίζει για το πρώτο επιχείρημα. Αν δεν δώσετε μια ένδειξη της οποίας εντολή είστε αναφέρεστε, αναφέρεται στην αμέσως προηγούμενη εντολή, και το καρέ είναι ένα σύμβολο για το πρώτο επιχείρημα. Επειδή είναι το καρέ και όχι τον αριθμό, δεν χρειάζεται να χρησιμοποιήσετε το παχύ έντερο, έτσι! ^ σημαίνει το πρώτο επιχείρημα της προηγούμενης εντολής. Λίγο μπερδεμένα εδώ. Σε αυτή την περίπτωση, όταν χρησιμοποιείτε αυτό ως ορισμός ψευδωνύμου, η αναφορά της ιστορίας παραπέμπει στις εντολές στις οποίες χρησιμοποιείται το ψευδώνυμο. Έτσι, αυτό θα επιστρέψει 1 διοίκησης, ως επιχείρηση της ιστορίας, αλλά ως μια λειτουργία ψευδώνυμο αναφέρεται στην εντολή στην οποία θα πρέπει να πληκτρολογήσετε, λένε, grstrings_file. Έχουμε τα εισαγωγικά εδώ σε αυτό. Ποια είναι η κάθετος για; Σε αυτή την περίπτωση, όπως και αλλού, εμείς δεν θέλουμε να εκτελέσουμε τον μηχανισμό ιστορία ενώ προσδιόρισε το ψευδώνυμο. Αν δεν είχαμε την ανάστροφη κάθετο εκεί, το κέλυφος θα τραβήξει το πρώτο όρισμα της εντολής δικαίωμα πριν έτρεξε αυτή την εντολή ψευδώνυμο, το οποίο δεν θέλουμε. Θέλουμε αυτό που θα κατασκευαστούν στο στην εντολή alias να καλέσετε σε ένα επιχείρημα αργότερα. Απλά εισαγωγικά δεν ξεφεύγουν ένα θαυμαστικό, η αναφορά της ιστορίας. Ίσως γνωρίζετε η διαφυγή έκφραση σημαίνει να αλλάζει το νόημα της κάτι. Στην περίπτωση αυτή, αυτό σημαίνει να σταματήσει κάτι από το να έχουν ιδιαίτερη σημασία. Ιδιαίτερη σημασία θαυμαστικό είναι ιστορία. Αποδράστε και δεν έχουν αυτό το νόημα. Αποσπάσματα δεν το κάνουμε αυτό? Backslash κάνει. Έτσι, είμαστε στην πραγματικότητα, χρησιμοποιώντας 2 επίπεδα διαφυγή εδώ. Πάω να προχωρήσουμε αυτή την εντολή στο άλλο παράθυρο χωρίς να πληκτρολογήσετε το με τη χρήση αυτών των λειτουργιών επεξεργασίας, το οποίο μπορείτε να βρείτε χρήσιμες. Κάτι άλλο εδώ θα σας δείξω. Αν απλά πληκτρολογήστε το ψευδώνυμο χωρίς επιχειρήματα, σας λέει όλα τα επιχειρήματά σας. Αυτό είναι ένα μάτσο ψευδώνυμα είχα ήδη εδώ εκτός από αυτά που έχω χρησιμοποιήσει εδώ σήμερα. Αλλά αν απλά πληκτρολογήστε το όνομα ενός ψευδωνύμου, μου λέει τι σημαίνει. Σημειώστε ότι οι τιμές έχουν φύγει και η αντίστροφη κάθετος φύγει. Αυτή η σειρά εδώ είναι το αποτέλεσμα της εν λόγω ορισμός ψευδωνύμου, και τώρα έχει μόνο! ^ σε αυτό. Αυτό πρόκειται να δούμε στις χορδές αρχείο για τίποτα. Έτσι, αν κάνω grstrings_file χορδές, δεν είχα δώσει τα πάντα για να αναζητήσουν εκεί, αλλά αυτό που ψάχνει σε χορδές. Δεν μπόρεσε να βρει τους χορδές λέξη χορδές αρχείο, αλλά δεν βρίσκουν abc. Και δεν βρίσκουν. Έτσι, εδώ δίνουμε ένα επιχείρημα που χτυπά στον ορισμό του ψευδωνύμου, που εισάγεται σε αυτό. Είναι το μέρος όπου η έκφραση αυτή προέρχεται. Μπορείτε να χρησιμοποιήσετε περισσότερα από 1. Το καρέ είναι ένα σύμβολο για το πρώτο επιχείρημα. Εάν θέλετε να χρησιμοποιήσετε ένα δεύτερο επιχείρημα, τότε θα πω: 2. Δεν υπάρχει ειδικό σύμβολο για το δεύτερο επιχείρημα. Και επειδή είστε χρησιμοποιώντας ένα αριθμό, θα πρέπει να χρησιμοποιήσετε το παχύ έντερο. Υπάρχει, ωστόσο, μια άλλη επιλογή εδώ. Το σύμβολο του δολαρίου ξεχωρίζει για το τελευταίο επιχείρημα. Και επειδή αυτό είναι ένα σύμβολο, μπορείτε να παραλείψετε το παχύ έντερο. Γι 'αυτό θα ήταν το τελευταίο επιχείρημα της λίστας. Και υπάρχει, επίσης, ότι το ένα. Asterisk σημαίνει ότι όλοι, έτσι αυτό είναι ο πλήρης κατάλογος των argument της, και πάλι, μπορείτε να παραλείψετε το παχέος εντέρου, επειδή δεν είναι ένας αριθμός. Ελπίζω να είστε όλοι παρατηρώντας όλα αυτά. Ο μηχανισμός ιστορία μπορεί να πάει πίσω σε προηγούμενες γραμμές στη λίστα του ιστορικού. Θα μπορούσατε να το κάνετε αυτό σε έναν ορισμό ψευδώνυμο. Δεν έχω δει ποτέ γίνει αυτό. Θα έχει ως αποτέλεσμα το τράβηγμα έξω προηγούμενες εντολές από τη λίστα ιστορικού όταν εκτελείτε το ψευδώνυμο, το οποίο θα μπορούσε να είναι διαφορετικές εντολές ανάλογα με το πότε και πού θα το εκτελέσει. Θεωρητικά μπορεί να θέλετε να τραβήξετε μια τέτοια αναφορά Απλά για να ξέρετε τι μια προηγούμενη εντολή ήταν. Δεν έχω δει ποτέ αυτό να συμβεί. Υποθέτω ότι κάποιος μπορεί να θέλει, αλλά αυτό είναι πολύ απίθανο. Υπάρχει ένα άλλο πράγμα εδώ. Αν χρησιμοποιήσετε αυτή την αναφορά ιστορικού τύπου, τότε μόνο τα επιχειρήματα στα οποία υπάρχει ένα τέτοιο αναφοράς που χρησιμοποιείται. Εάν έχετε έναν ορισμό ψευδώνυμο που δεν χρησιμοποιεί μια αναφορά ιστορικού τύπου, αν γίνει μόνο η αρχή της εντολής και έχετε περαιτέρω επιχειρήματα, τότε οτιδήποτε και αν πληκτρολογήσετε μετά ότι θα προστεθεί στην εντολή. Στην περίπτωση αυτή, το παράδειγμα που μόλις έδωσε εκεί, χρησιμοποιήσαμε το πρώτο επιχείρημα? εμείς δεν χρησιμοποίησε κανένα από τους άλλους. Εάν άλλα επιχειρήματα είχαν δοθεί στη γραμμή εντολών, δεν θα πρέπει να χρησιμοποιείται. Έτσι, αν χρησιμοποιείτε την αναφορά ιστορία σε όλα, τότε θα πρέπει να χρησιμοποιήσετε για να πάρετε κανένα επιχείρημα. Υπάρχει ένα άλλο πράγμα εδώ θέλω απλώς να αναφέρω, εν μέρει μέσα σε παρένθεση, δηλαδή ότι αυτός ο μηχανισμός ιστορία με το θαυμαστικό πηγαίνει πίσω στο αρχικό C-shell. Το tcsh εισήγαγε λειτουργίες ιστορία που χρησιμοποιούν τα είδη των εντολών και έγχορδα από τους εκδότες, είτε Emacs ή vi. Η προσωπική μου γνώμη είναι Emacs είναι πολύ ευκολότερο να χρησιμοποιήσει για το σκοπό αυτό ακόμα κι αν vi χρησιμοποιήσετε για την τακτική επεξεργασία σας. Υπάρχουν διάφορες Emacs εντολές που έχουν προσαρμοστεί τώρα για την ιστορία. Έλεγχος P παίρνει την προηγούμενη γραμμή στη λίστα ιστορικού. Ένας άλλος έλεγχος P θα σας πάρει το ένα πριν από αυτό. Το επάνω βέλος κάνει το ίδιο πράγμα. Έλεγχος N παίρνει την επόμενη εντολή αν έχετε ήδη μεταβεί πίσω κάποιους τρόπους. Κάτω βέλος κάνει αυτό πάρα πολύ. Μπορείτε να μετακινήσετε τα αριστερά προς τα δεξιά με τα βελάκια και διάφορα άλλα πράγματα. Αυτό μπορεί να κάνει χρήση του μηχανισμού ιστορίας πολύ πιο εύκολο από ό, τι χρησιμοποιώντας τη σύνταξη θαυμαστικό, αλλά δεν θέλετε να χρησιμοποιήσετε ότι σε μια ορισμός ψευδωνύμου. Θα πάμε πάνω από ότι κάποια άλλη φορά. Μεταβλητές. Ξέρετε τι είναι οι μεταβλητές στις γλώσσες προγραμματισμού. Τα κελύφη τους έχουν επίσης. Το C-shell χρησιμοποιεί την εντολή που να εκχωρήσει μεταβλητές, έτσι, ώστε να θέτει τη μεταβλητή α με την αξία του β - όπως είπα, ένα άχρηστο ορισμό, αλλά μια εικόνα για το πώς αυτό χρησιμοποιείται. Η εντολή set θα δημιουργήσει μια μεταβλητή, αν δεν υπάρχει ήδη. Οι παράμετροι θέσης για τα προγράμματα κελύφους μπορούν να θεωρηθούν μεταβλητές, αλλά η χρήση τους και οι κανόνες τους είναι κάπως διαφορετική. Δεν μπορείτε να ορίσετε μια τιμή σε $ 1, κατά τη διάρκεια ενός σεναρίου. Θα πρέπει να ορίσετε μια νέα μεταβλητή για το σκοπό αυτό, εάν κάποιοι από εσάς ήθελαν να. Πληκτρολογήστε που χωρίς επιχειρήματα και μπορείτε να πάρετε μια λίστα με όλες τις τρέχουσες καθορισμένες μεταβλητές. Και ας πάμε πάνω στο άλλο κέλυφος μου εδώ και να δούμε τι έχουμε, αν το κάνουμε αυτό. Αρκετά μακρύ κατάλογο εκεί, σωστά; Μετακινηθείτε προς τα πάνω λίγο. Κοιτάξτε όλα αυτά. Μερικά από αυτά τα πράγματα ορίζονται αυτόματα από το κέλυφος. Το κέλυφος δημιουργεί τη μεταβλητή και του δίνει μια τιμή. Μερικά από αυτά ορίζονται από το κέλυφος, αλλά στη συνέχεια επαναπροσδιοριστεί από τον χρήστη σύμφωνα με τις προτιμήσεις του. Και ορισμένα από αυτά έχουν δημιουργηθεί από το χρήστη ανάλογα με το τι κάνει εκείνη την ημέρα. Αυτό είναι ακριβώς που χωρίς επιχειρήματα. Υπάρχει ένα περίεργο χαρακτηριστικό εδώ από αυτό το πράγμα. Πρέπει να υπάρχουν είτε δεν υπάρχουν κενά μεταξύ των ίσον και το όνομα της μεταβλητής και η αξία ή χώρους και στις δύο πλευρές του το σύμβολο του ίσον, όπως σε αυτό το ένα. Αυτό δεν θα λειτουργήσει, και αυτό είναι πραγματικά μια έγκυρη εντολή αλλά δεν θα κάνει ό, τι σκοπεύετε. Η εντολή αυτή θα λειτουργήσει, γιατί αν απλά λένε που και ένα όνομα μεταβλητής με κανένα ίσον ή να ορίσετε και ένα όνομα μεταβλητής με ένα ίσον και δεν έχει αξία, θα θέσει τη μεταβλητή με μηδενική αξία. Έτσι ορίσετε ένα = είναι μια έγκυρη εντολή. Η εντολή set να ορίσετε περισσότερα από 1 μεταβλητή για την ίδια γραμμή. Έτσι, αυτή η εντολή εδώ έχει ως αποτέλεσμα τον καθορισμό τόσο α και β σε null τιμές. Μάλλον δεν είναι ό, τι θέλετε. Αυτός εδώ, που αναφέρθηκε προηγουμένως, θα οδηγήσει σε ένα σφάλμα επειδή = b δεν είναι μια έγκυρη έκφραση. Το όνομα μιας μεταβλητής δεν μπορεί να αρχίσει με την ένδειξη ίσων. Και υπάρχουν αυτά τα πράγματα περαιτέρω εδώ. Τα ερωτηματικά χρησιμοποιήθηκαν για την επιλογή επιχειρήματα από τις γραμμές της ιστορίας, και μπορούν να χρησιμοποιηθούν - και δεν είχα πάει στο παρελθόν - να τροποποιήσει αυτά τα πράγματα. Μπορούν επίσης να χρησιμοποιηθούν για να τροποποιήσουν τις μεταβλητές κελύφους. Αυτός εδώ, το $ a, έχει μια αξία. : R θα απογειωθεί παράταση. Η παράταση δεν θα είναι τίποτα μετά από μια τελεία, μια τελεία και οτιδήποτε μετά από αυτήν, στο τέλος ενός αρχείου, μόνο στο τέλος της λίστας μετά την τελευταία κάθετο. Έτσι έχω εδώ. α είναι ότι. Θα πέσει το. O. Εάν δεν υπάρχει παράταση, μόνο τα ονόματα διαδρομών μετά την τελευταία κάθετο, δεν θα έχει κανένα αποτέλεσμα. a: h, ότι η μεταβλητή έκφραση, θα απογειωθεί το τελευταίο στοιχείο της λίστας καταλόγου, πάλι, μόνο μετά την τελευταία κάθετο. Έτσι, / a / b / c γίνεται / a / b, αλλά αυτό έχει αλλάξει, επειδή το στοιχείο μετά τον κατάλογο είναι null. Εδώ υπάρχει κάτι το οποίο επίσης θέλω να τονίσω. Οι προσδιορισμοί αυτοί δεν ψάχνουν για την ύπαρξη αυτών των αρχείων. Θα εξετάσουμε μόνο για έγχορδα. Τα προϊόντα αυτά προορίζονται να χειραγωγήσουν τα ονόματα αρχείων, ονόματα καταλόγων, αλλά μπορεί να χρησιμοποιηθεί σε οποιαδήποτε σειρά, ακόμη και αν δεν είναι ένα όνομα αρχείου. Και δεν φαίνονται για την ύπαρξη, οπότε αν δεν υπάρχει τέτοιο αρχείο, / a / b / c, αυτό θα συνεχίσει να λειτουργεί. Είτε πρόκειται για οποιαδήποτε χρήση είναι ένα άλλο ζήτημα, αλλά θα συνεχίσει να λειτουργεί. Οι μεταβλητές είναι διαφορετικές στα κελύφη Bourne. Θα φτάσουμε σε αυτό αργότερα. Σύμβολο του δολαρίου μπορεί να δραπετεύσει ακριβώς όπως το θαυμαστικό και τον αστερίσκο. Σύμβολο του δολαρίου μπορεί να δραπετεύσει με μια ανάστροφη κάθετο ή τα μονά εισαγωγικά. Διπλά εισαγωγικά έχουν την περίεργη επίδραση σε όλους τους φλοιούς αναγκάζοντας την αξιολόγηση του δολαρίου υπογράψει μεταβλητή έκφραση. Έτσι, αν είναι να διαφύγει ένας τρόπος, τα διπλά εισαγωγικά μπορεί να έχει ως αποτέλεσμα προκαλώντας της να αξιολογούνται έτσι κι αλλιώς. Αυτή είναι μια μικρή σύγχυση. Εάν υπάρχουν πολλαπλά επίπεδα της απόδρασης, όπως μονά εισαγωγικά μέσα σε διπλά εισαγωγικά ή διπλά εισαγωγικά μέσα σε μονά εισαγωγικά, θα πρέπει να δοκιμάσετε για να δούμε τι θα συμβεί σε μια μεταβλητή, αν είστε με τη χρήση ενός. Αυτές οι 2 περιπτώσεις - διπλό μέσα ενιαία, ενιαίο εσωτερικό του διπλού - δεν είναι απαραίτητο να σας δώσει το ίδιο αποτέλεσμα. Οι μεταβλητές περιβάλλοντος, δεσμεύεται μεταβλητές C-shell. Μεταβλητές περιβάλλοντος είναι επίσης μεταβλητές στην C-κέλυφος, και είναι επίσης μεταβλητές σε άλλα κελύφη πάρα πολύ. Στην C-κέλυφος, που είναι ξεχωριστές δέσμες. Τα πράγματα που έλεγα πριν είναι σχετικά με τις μεταβλητές κελύφους. Οι μεταβλητές περιβάλλοντος είναι ένα ξεχωριστό σύνολο μεταβλητών με την εξαίρεση των αρκετών μεταβλητών που καλούμε δεσμευμένο μεταβλητές, που είναι πολύ σημαντικό και θα φτάσουμε σε αυτά αργότερα. Οι μεταβλητές περιβάλλοντος περάσει αυτόματα στην με κοχύλια ή τις εντολές που εκτελούνται από το κέλυφος σας. Τα άλλα πράγματα που δεν είναι. Οι μεταβλητές κελύφους, τα ψευδώνυμα δεν είναι. Οι μεταβλητές περιβάλλοντος είναι. Γι 'αυτό καλούμε τους μεταβλητές περιβάλλοντος, η ιδέα είναι ότι το περιβάλλον εκτείνεται πέρα ​​από απλά τρέχον κέλυφος σας. Μπορούν να χρησιμοποιηθούν για να καθορίσουν τα πράγματα για τις εντολές. Εδώ είναι ένα παράδειγμα. PRINTER, LPDEST. Και οι δύο από αυτές τις μεταβλητές μπορεί να καθορίσει έναν εκτυπωτή που μια εντολή θα χρησιμοποιήσετε για να εκτυπώσετε τα πράγματα. Εάν έχετε πολλούς εκτυπωτές γύρω, ίσως να θέλετε να βάλετε αυτό που σας αρέσει. Ο λόγος που έχουμε 2 μεταβλητές είναι ότι διαφορετικά σύνολα εντολών γράφτηκαν χρήση αυτών των διαφορετικών μεταβλητών. Μπορείτε να τους δώσει διαφορετικές τιμές. Το πιο πιθανό είναι ότι θα τους δώσει και τα δύο την ίδια αξία. Αυτά τα πράγματα λειτουργούν, διότι οι εντολές που κάνουν την εκτύπωση είχαν προγραμματιστεί να εξετάσει τις τιμές αυτών των μεταβλητών. Εάν ένα πρόγραμμα δεν γράφτηκαν με αυτόν τον τρόπο, αν γράφτηκαν για να κάνουν κάτι άλλο, η μεταβλητή θα ήταν άνευ σημασίας. Έτσι, το λειτουργικό σύστημα δεν ψάχνει για αυτές τις μεταβλητές κάθε φορά που σας παραπέμψει σε έναν εκτυπωτή. Μια εντολή που κάνει την εκτύπωση ψάχνει για αυτές τις μεταβλητές, εάν είναι προγραμματισμένο με αυτόν τον τρόπο. Αυτές οι μεταβλητές ορίζονται συχνά με τα αρχεία ρύθμισης αλλά όχι απαραίτητα. Μπορείτε να ορίσετε την γραμμή εντολών. Μπορούν να οριστούν σε μια εντολή. Μια εντολή που τρέχει κάτι θα μπορούσε να έχει τη δική της επιλογή των μεταβλητών - μεταβλητές που είναι μοναδικά για ένα συγκεκριμένο πακέτο λογισμικού, για παράδειγμα. Θα πρέπει να ορίζεται όταν εκτελείτε αυτό το πακέτο. Πώς αυτές οι μεταβλητές που περνάνε σε μια υπο-shell; Όταν μια υπο-shell είναι γραμμένο, δεν γράφουν στην εν λόγω περιοχή. Η περιοχή της υπο-κέλυφος που είναι αφιερωμένο στις μεταβλητές περιβάλλοντος Δεν είναι γραμμένο από τον υπο-shell? είναι γραμμένο από την αντιγραφή. Όταν εκτελείτε μια συνηθισμένη εντολή, όπως οι εντολές για να εκτυπώσετε ή οτιδήποτε άλλο, θα ξεκινήσει με τη δημιουργία ενός νέου κελύφους. Το κέλυφος δημιουργεί ένα κέλυφος και στη συνέχεια αντικαθιστά μέρος του με την εντολή που τρέχετε, η οποία είναι μια μικρή σύγχυση, αλλά αυτό είναι το πώς αυτές οι εντολές παίρνουν τις μεταβλητές περιβάλλοντος ότι στη συνέχεια αναφέρονται σε αργότερα. Η εντολή εδώ για τον ορισμό της μεταβλητής setenv. Αυτό είναι το πώς μπορείτε να ορίσετε. Είναι 3 στοιχεία: setenv, μεταβλητή, αξία. Αν απλά δεν setenv χωρίς επιχειρήματα, τι θα πάρετε; Ένας κατάλογος όλων αυτών των μεταβλητών. Και πάλι, αυτό είναι ένα ωραίο μακρύ κατάλογο και σε αυτή την περίπτωση, όπως και στις άλλες, αυτές οι μεταβλητές καθορίζονται σε μεγάλο βαθμό από τη λειτουργία της σύνδεσής μου από το ίδιο το κέλυφος και όχι από οτιδήποτε έκανα. Υπάρχει μια άλλη εντολή εδώ, printenv. Αυτό εκτυπώνει επίσης το περιβάλλον. Παρατηρήστε αυτό το τελευταίο πράγμα εδώ, EDITOR = vi. Αυτό λέει ότι αν είμαι με τη χρήση κάτι που απαιτεί ένα πρόγραμμα επεξεργασίας και δεν καθορίσετε ένα πρόγραμμα επεξεργασίας και μου δίνει την επιλογή, μπορεί να μου δώσει vi. Τι θα συμβεί αν κάνω printenv ΕΠΙΜΕΛΕΙΑ; Μου λέει τι είναι. Ακριβώς πριν από αυτό, υπήρχε μια μεταβλητή, ΛΙΓΟΤΕΡΟ. Αυτές είναι οι επιλογές προεπιλογές σας όταν τρέχω το λιγότερο εντολή, η οποία εμφανίζει τα αρχεία. Έτσι, αν το κάνω αυτό, printenv μπορεί να πάρει 1 ή 0 επιχείρημα επιχειρήματα, όχι περισσότερο από 1. Υπάρχουν και άλλες εντολές, επίσης, αλλά εμείς δεν πρόκειται να μπει σε όλα αυτά τα σήμερα. Θυμηθείτε ότι οι τροποποιητές για τις μεταβλητές κελύφους, όπως: h, το οποίο θα μειωθεί το τελευταίο στοιχείο της διαδρομή, ή: r, το οποίο θα μειωθεί παράταση. Όσοι τώρα ισχύουν για τις μεταβλητές περιβάλλοντος πάρα πολύ. Δεν χρησιμοποιείται για να. Χρησιμοποιείται για να είναι ότι δεν θα μπορούσε να τροποποιηθεί. Τώρα μπορεί να είναι. Είναι μία από τις προόδους με τις εξελίξεις των κελυφών όλα αυτά τα χρόνια. Έλεγα ότι τα κελύφη ως μέρος των περιβαλλόντων και οι μεταβλητές κελύφους στο C-shell είναι, με ορισμένες εξαιρέσεις, διαφορετικές ομάδες. Μπορείτε να δημιουργήσετε μια μεταβλητή περιβάλλοντος και μια μεταβλητή του κελύφους με το ίδιο όνομα. Θα είναι διαφορετικές μεταβλητές? Μπορούν να έχουν διαφορετικές τιμές. Η αλλαγή της τιμής του ενός δεν θα αλλάξει την αξία του άλλου. Αυτές οι μεταβλητές αξιολογήθηκαν όλα με το σύμβολο του δολαρίου - $ a, $ οτιδήποτε. Έτσι τι εάν έχετε αυτό; Ξέρετε ποια θα πάρει; Στις δοκιμές μου, πήρα τη μεταβλητή του κελύφους, αλλά αυτό δεν έχει αποδειχθεί και δεν μπορείτε να βασιστείτε σε αυτό. Έτσι, σας ζητώ, είναι η δημιουργία κέλυφος και μεταβλητές περιβάλλοντος με τα ίδια ονόματα είναι μια καλή ιδέα; Όχι Εντάξει. Ποιες είναι αυτές οι σημαντικές εξαιρέσεις στις οποίες οι μεταβλητές για το περιβάλλον και το κέλυφος συνδέονται μεταξύ τους; Υπάρχουν αυτά τα 4. Κεφαλαίο γράμμα TERM μεταβλητής περιβάλλοντος, κέλυφος μεταβλητής διάρκειας με μικρά γράμματα, το είδος της εξομοίωσης τερματικού. Είμαι ακριβώς πρόκειται να πάει πέρα ​​από εδώ και θα πάω να κάνω echo, μια χρήσιμη εντολή εδώ, $ $ TERM όρο. Και εκεί. xterm είναι ένας τύπος τερματικού για τα παράθυρα που εμφανίζονται στο System x παράθυρο. xterm-χρώμα είναι μια παραλλαγή που που επιτρέπει διαφορετικά χρώματα. Γιατί ορίζουμε αυτά; Τι είναι αυτό καλό για? Οι εντολές που αναδιατάξετε την οθόνη, όπως το επεξεργαστή στείλετε συγκεκριμένες αλληλουχίες, που ονομάζονται ακολουθίες διαφυγής, σε ένα τερματικό ή ένα παράθυρο για να αναδιατάξετε και ούτω καθεξής. Αυτές οι αλληλουχίες είναι διαφορετικές για διάφορους τύπους τερματικών. Αυτό το ποια να χρησιμοποιήσει λέει. Μερικές φορές υπάρχουν ζητήματα εκεί. Μπορεί να θέλετε να το αλλάξουμε αυτό. Αν τα πράγματα δεν λειτουργούν, μερικές φορές ο τύπος τερματικού έχει οριστεί λάθος, ενδέχεται να μπορείτε να το διορθώσετε με τον επαναπροσδιορισμό του όρου μεταβλητή. Σε αυτές τις περιπτώσεις, η αλλαγή μία μεταβλητή, η μεταβλητή περιβάλλοντος ή την μεταβλητή κελύφους, πρέπει να αλλάξει το άλλο. Έχω ανακαλύψει μέσα από την εμπειρία ότι η αλλαγή TERM με κεφαλαία γράμματα δεν αλλάζει πάντα κέλυφος μεταβλητής διάρκειας με μικρά γράμματα. Αυτό είναι ένα bug. Δεν ξέρω αν αυτό είναι πάντα αλήθεια. Τις περισσότερες φορές δεν είναι αλήθεια, αλλά μπορεί να είναι. Έτσι, αν κάνετε μια αλλαγή, απλά ελέγξτε ότι έξω. Δεν είναι συχνά ότι θα πρέπει να αλλάξετε αυτήν την τιμή, αλλά κάποια στιγμή που κάνετε. Μεταβλητή περιβάλλοντος ΧΡΗΣΤΗ. Και πάλι, μεταβλητή περιβάλλοντος με κεφαλαία γράμματα, πληρώνω μεταβλητή με μικρά γράμματα. Αυτό είναι το όνομα χρήστη σας. Είναι μόνο σε πολύ εξαιρετικές περιπτώσεις ότι θα θέλατε να το αλλάξουμε αυτό. Αν το όνομα χρήστη σας είναι κάποιος άλλος, μπορεί να ρίξει όλα τα είδη των πραγμάτων μακριά. Home κατάλογο, τον κατάλογο home του χρήστη. Και πάλι, δεν θα θέλατε να το αλλάξουμε αυτό. Ανακοίνωση σε όλες αυτές τις περιπτώσεις και αυτό που είμαστε για να καλύψει τη μεταβλητή διαδρομή, μεταβλητή περιβάλλοντος είναι με κεφαλαία γράμματα και η δεσμευμένη μεταβλητή κελύφους είναι με μικρά γράμματα. Εάν αλλάξετε ένα, θα πρέπει να αλλάξετε το άλλο. Αυτό το είδος των δεσμευτικών δεν μπορεί να αποδειχθεί, όπως δεν μπορεί να δεσμεύσει 2 μεταβλητές, εκτός από αυτά 4, και η σύνδεση σε αυτές τις μεταβλητές δεν μπορεί να αναιρεθεί, δεν μπορείτε να τους χωρίσει. Έτσι είναι αυτά τα 4 ζεύγη μεταβλητών δεσμεύεται. Τα πάντα θα είναι. Κανένας άλλοι θα είναι. Επιπλέον, θα ήταν δυνατόν να δημιουργηθούν οι μεταβλητές με τα ίδια ονόματα των απέναντι τύπων. Θα μπορούσατε να κάνετε ένα κέλυφος μεταβλητής διάρκειας με μικρά γράμματα ή μια μεταβλητή περιβάλλοντος TERM με κεφαλαία γράμματα. Οι μεταβλητές αυτές θα είναι ανεξάρτητες από αυτά τα ζεύγη μεταβλητών και θα είναι ανεξάρτητες μεταξύ τους. Δεν μπορώ να φανταστώ γιατί θα το κάνουμε αυτό αν δεν θέλετε να μπερδεύουν τους ανθρώπους. Αυτός εδώ, μεταβλητή πορεία, αυτό είναι ένα πραγματικά σημαντικό. Ένα άλλο πράγμα εδώ είναι ότι μπορεί να υπάρχουν περιπτώσεις των μεταβλητών που έχει αντιστοιχιστεί με παρόμοιες ονομασίες που δεν συνδέονται μεταξύ τους. Μπορεί να υπάρχουν μεταβλητές, SHELL και το κέλυφος, με κεφαλαία και μικρά γράμματα. Με βάση αυτό το όνομα, δεν ξέρω αν αυτό είναι μία μεταβλητή κέλυφος ή μεταβλητή περιβάλλοντος, και από όπου και αν δεν είναι συνδεδεμένα μεταξύ τους. Έτσι, αυτό το είδος του ζεύγη ονόματα δεν συνεπάγεται δεσμεύεται μεταβλητές. Η μεταβλητή μονοπατιού, το οποίο έδειχνε πριν, είναι ένας κατάλογος των pathnames στην οποία το κέλυφος αναζητά εντολές. Ας πάρει πάνω σε αυτό το παράθυρο εδώ και εμείς θα κάνουμε echo $ PATH, με κεφαλαία γράμματα - μεταβλητή περιβάλλοντος - echo $ path, μικρά γράμματα - κέλυφος μεταβλητή. Παρατηρήστε ότι η λίστα των καταλόγων είναι η ίδια. Αυτά δεσμεύονται. Αλλάξτε το ένα, μπορείτε να αλλάξετε το άλλο. Στη μεταβλητή περιβάλλοντος τα στοιχεία διαχωρίζονται με άνω και κάτω τελεία. Παρατηρήστε ότι. Οι μεταβλητές κελύφους χωρισμένα με κενά. Αυτή η μεταβλητή περιβάλλοντος είναι μια χορδή. Η μεταβλητή κέλυφος είναι ένας πίνακας. The Bourne shell δεν έχουν συστοιχίες. Bash κάνει, αλλά αυτό είναι ήδη ένα σταθερό μέρος του κελύφους. Αυτό είναι ένα μόνο χορδή και όχι μία συστοιχία. Το C-shell είχε πάντα συστοιχίες. Οι πίνακες είναι πολύ πιο εύκολο να εργαστεί με. Μπορείτε να ανατρέξετε σε τμήματά του. Έτσι echo $ path [1], και παίρνω / usr / bin, το πρώτο στοιχείο. Και πάλι, να θυμάστε σύμβολο του δολαρίου σημαίνει το τελευταίο στοιχείο της λίστας ιστορικού. Τι συμβαίνει εκεί; Προσπάθησε να βρει το σύμβολο του δολαρίου ως σύμβολο μεταβλητής. Μου ξεφύγει. Ωχ. Δεν θα πάρετε ούτε αυτό. Μερικά από αυτά τα πράγματα δεν λειτουργούν τόσο καλά. Ίσως θα αφήσει μόνο ότι έξω. Asterisk αναφέρεται στο όλο θέμα, αλλά αυτό είναι τι θα πάρετε αν δεν καθορίσετε ένα στοιχείο. Ένας άλλος τρόπος ότι οι μεταβλητές συστοιχία μπορεί να αλλοιωθεί, αριθμό στοιχείων εκεί, 7 στοιχεία. Εδώ βάζουμε τη δίεση πριν το όνομα της μεταβλητής. Εδώ είναι ένα άλλο. Βάλτε υπάρχει ένα ερωτηματικό. Αυτό είναι μια λογική τιμή. Αυτό δείχνει ότι υπάρχει η μεταβλητή. Είναι ένας άλλος τρόπος εργασίας με τις μεταβλητές. Αυτό, παρεμπιπτόντως, δεν πρέπει να είναι μια μεταβλητή πίνακα. Αυτό θα μπορούσε να είναι οποιαδήποτε μεταβλητή. Και αν το κάνω, δεν υπάρχει τέτοια μεταβλητή και να πάρω ένα 0. Ένα άλλο μικρό πράγμα εκεί περίπου μεταβλητή αξιολογήσεων. Επιστροφή στην αυτή εδώ, αν για κάποιο λόγο θέλετε να εργαστείτε με αυτό αντί να εργάζονται με τη σειρά, η μεταβλητή του κελύφους, υπάρχουν εντολές που μπορεί να διαχωρίσει αυτά τα πράγματα που βασίζονται στο κόλον. Στην πραγματικότητα, αν θέλει κάποιος να κάνει αυτό με την φλοιού Bash, ενδεχομένως, κάποιου είδους σενάριο, που θα είναι κατά πάσα πιθανότητα το πώς θα το κάνουμε. Αλλά στο C-shell είναι πολύ πιο εύκολο να χρησιμοποιήσετε τον πίνακα. Στο Bourne shell, οι μεταβλητές ανατίθενται από μια μοναδική έκφραση όπως αυτή, όπως τον τρόπο που θα μπορούσε να εκχωρήσετε μια μεταβλητή σε μια γλώσσα προγραμματισμού, και εδώ θα πρέπει να υπάρχουν κενά. Είναι απαραίτητο να είναι μόλις 1 χορδών. Στα κελύφη Bourne τύπου, όλες οι μεταβλητές είναι μεταβλητές κελύφους. Οι μεταβλητές περιβάλλοντος είναι ένα υποσύνολο των μεταβλητών κελύφους. Διακρίνονται από τα μη-μεταβλητές περιβάλλοντος με την εξαγωγή. Η εντολή για να το κάνει αυτό είναι η εξαγωγή, όπως είναι οι εξαγωγικές ΕΚΤΥΠΩΤΗ. Αν ήταν να ορίσει μια τέτοια μεταβλητή, αν θέλαμε μια εντολή εκτύπωσης για να το βρείτε, θα πρέπει να είναι μια μεταβλητή περιβάλλοντος, και αυτό είναι το πώς μπορούμε να μπορεί κανείς να κάνει. Εδώ υπάρχει κάτι το είδος της σύγχυσης. Αυτή η έκφραση, την εξαγωγή προς το περιβάλλον, προέρχεται από αυτό το Bourne έννοια του κελύφους, και ακόμη ότι η έκφραση αυτή χρησιμοποιείται στις περιγραφές του C-κέλυφος, όπου δεν υπάρχει τέτοια εντολή ως εξαγωγή. Αν πω εξαγωγή από την ίδια, μπορείτε να πάρετε μια λίστα των εξαγόμενων - Έτσι, αν εγώ απλά εξάγουν εδώ, δεν υπάρχει τέτοιο πράγμα. Εντάξει, εκεί πάμε. Αυτά τα πράγματα, από τον τρόπο, που επίσης ορίζεται από το κέλυφος. Εγώ δεν καθορίζουν κάποιο από αυτά από τον εαυτό μου. Το κέλυφος έχει όλα τα είδη των πραγμάτων από μόνη της. Θα πρέπει να κάνουμε τα πράγματα αυτόματα. Στο Bash ή κέλυφος Korn, μπορείτε να εκτελέσετε μια εντολή όπως αυτή, το οποίο, αφενός, θα δώσει μια μεταβλητή μια τιμή και να εξάγει σε 1 εντολή. Στο κέλυφος Bourne πρέπει να είναι χωριστές εντολές όπως για εξαγωγές, μια. Εδώ είναι μια άλλη πτυχή που είναι συγκεχυμένη. Η εντολή set στο C-shell ορίζει μεταβλητές και χωρίς επιχειρήματα σας λέει ποιες είναι οι αξίες των μεταβλητών. Στο Bash shell, η εντολή set χωρίς επιχειρήματα κάνει το ίδιο πράγμα, αλλά με επιχειρήματα που κάνει κάτι εντελώς διαφορετικό. Αυτά λοιπόν είναι τα διάφορα επιχειρήματα εδώ. Μερικοί από αυτούς είναι οι μεταβλητές περιβάλλοντος, ορισμένες από αυτές είναι μεταβλητές κελύφους. Όλοι τους είναι μεταβλητές κελύφους πραγματικά. Μερικοί από αυτούς είναι οι μεταβλητές περιβάλλοντος. Η εντολή set με επιχειρήματα μπορούν να χρησιμοποιηθούν για τη λειτουργία σχετικά με τις παραμέτρους θέσης σε ένα σενάριο, η οποία είναι ένας τρόπος για να πάρει όλα με τη μία. Δεν μπορεί πραγματικά να μπω σε αυτό σήμερα. Μπορεί επίσης να χρησιμοποιηθεί για να αλλάξει η συμπεριφορά κελύφους. Ιδιαίτερα στο Bash υπάρχουν μεταβλητές που θα καθορίσει το πώς συμπεριφέρεται το κέλυφος. Τότε, επίσης, μόνο αυτό μια εντολή που μπορείτε να δείτε, αυτή η εντολή. Στοιχειοθεσία ακολουθείται από μεταβλητές και τύπους μεταβλητών χρησιμοποιείται στα Korn και Bash κελύφη. Δεν είναι υποχρεωτικό, αλλά μπορεί να χρησιμοποιηθεί για να περιορίσει τις τιμές των μεταβλητών, το οποίο μπορεί να είναι χρήσιμο για την πρόληψη των σφαλμάτων, και είναι αρκετά κοινό. Έτσι, είμαι απλώς να σημειωθεί ότι σε περίπτωση που το δείτε κάπου. Η εντολή πού. Θυμηθείτε ανέφερα προηγουμένως η οποία εντολή στο C-shell, το οποίο μπορεί να σας πει τη θέση του διαδρομή εντολών. Εδώ είναι η αντικατάσταση εντολών. Θα πρέπει να βρείτε στο πληκτρολόγιό σας κάπου ένας χαρακτήρας που μοιάζει με αυτό. Η θέση στο πληκτρολόγιο πρόκειται να διαφέρουν. Έχουμε αυτό που ονομάζεται backquote. Είναι περίπου το μέγεθος του ένα απόσπασμα. Πηγαίνει από πάνω αριστερά προς τα κάτω δεξιά. Εδώ σε Mac πληκτρολόγιο μου είναι στην επάνω αριστερή γωνία. Ότι ο χαρακτήρας μπορεί να χρησιμοποιηθεί για να εκτελέσει μια εντολή εντός μίας εντολής. Εάν έχετε μια έκφραση μέσα ανάποδα μονά εισαγωγικά, ότι η έκφραση είναι μια εντολή, είναι να τρέξει. Η έξοδος της εντολής Στη συνέχεια, υποκατεστημένο για το σύνολο έκφραση backquote μέσα σε ένα μεγαλύτερο εντολή η οποία στη συνέχεια τρέχει με την εν λόγω έξοδο ως μέρος της συμβολοσειράς του επιχειρήματα και ούτω καθεξής. Εδώ είναι μια εντολή που χρησιμοποιεί αυτό. Ας γίνει επίδειξη της λειτουργίας εδώ. Ας πάμε εδώ, να λάβει τα ανάποδα μονά εισαγωγικά. Έλεγχος Α με παίρνει στην αρχή της γραμμής, με τη σύνταξη επεξεργασίας Emacs. Μέχρι στιγμής, η pathnames είναι ό, τι όταν κάνει, αλλά όταν το κάνω σαν αυτό, τότε συνδέεται στον εν λόγω κατάλογο των pathnames στη θέση του όλη αυτή την έκφραση backquote και τρέχει ls-l σε αυτά. Kind of βολικό, ε; Έτσι, αυτό είναι ένα ωραίο πράγμα. Αυτό είναι το πώς λειτουργούν ανάποδα μονά εισαγωγικά. Τώρα ας πάμε κάτω λίγο περισσότερο. Αυτά είναι τα ψευδώνυμα. Χρησιμοποιώ πραγματικά αυτά. Θα προσπαθήσετε να πάρετε αυτό με 1 λειτουργία επεξεργασίας. Εντάξει. Τώρα, ας δούμε πώς οι ορισμοί αυτοί βγήκαν. ψευδώνυμο LWH μου λέει πώς έχει οριστεί. Παρατηρήστε ότι είναι μόνο αυτό, αλλά τα εξωτερικά εισαγωγικά έχουν απογειωθεί και το θαυμαστικό απογειωθεί. ! *, Πλήρη κατάλογο όλων των επιχειρημάτων. Σε μια ορισμός ψευδωνύμου θα εφαρμόσει πίσω στο σημείο όπου μπορώ να χρησιμοποιήσω αυτό. LWH ksh bash. Εντάξει. Δείτε πώς λειτουργεί; Μου εξοικονομεί κάποια πληκτρολόγηση. Ας πάμε μέχρι λίγο μόνο να αναφέρω κάτι άλλο εδώ. Προσέξτε εδώ αυτά τα διαφορετικά κελύφη. Θα έπρεπε να είχα αναφερθεί πριν από αυτό. Το csh έχει 2 εδώ και το ίδιο κάνει και / bin / tcsh. Θα μπορούσε να δημιουργήσει με άλλα μέσα ότι αυτά είναι στην πραγματικότητα το ίδιο αρχείο. Θυμηθείτε έλεγα αν πληκτρολογήσετε sh παίρνετε bash. Πληκτρολογήστε αυτό και μπορείτε να πάρετε αυτό. Αλλά εκείνοι που δεν συνδέονται. Όσοι έχουν μονά εκεί. Και αυτό δεν είναι το είδος των αρχείων που μπορεί να καλέσει ένα άλλο. Έτσι, αυτά είναι ξεχωριστά αρχεία? Αυτοί C-shell είναι το ίδιο το αρχείο. Εδώ κάτω, το άλλο εδώ, αυτό το ψευδώνυμο, Σημειώστε ότι τρέχει αυτήν την εντολή, το αρχείο. Αυτό ψευδώνυμο τρέχει αυτό. Αρχείο που λέει ο τύπος του αρχείου. Έτσι ΙΜΕ bash ksh. Εντάξει. Αυτή είναι η έξοδος της εντολής του αρχείου. Δεν ξέρω αν γνωρίζετε τι σημαίνει αυτό εδώ, Mach-O καθολική δυαδική με 2 αρχιτεκτονικές. Υπάρχουν 2 πιθανές μορφές επεξεργαστή Mac, και κάποια προγράμματα που γράφτηκαν για να είναι σε θέση να τρέξει με δύο, και η εντολή file μπορεί να καθορίσει ότι, έτσι ώστε να είναι ό, τι σημαίνει αυτό. Και τα δύο από αυτά τα αρχεία έχουν γραφτεί με αυτόν τον τρόπο. Έτσι βλέπουμε πώς λειτουργεί το ψευδώνυμο, θα δούμε πώς λειτουργεί ο backquote, βλέπουμε πώς λειτουργεί η πραγματική ls ή ένα αρχείο. Αυτό δεν θα μπορούσε να λειτουργήσει. Δοκιμάστε "όπου όπου" και "LWH όπου". Εντάξει, ας το δοκιμάσουμε. όπου όπου. όπου είναι ένα κέλυφος ενσωματωμένο. Θυμηθείτε νωρίτερα δείξαμε ότι το Bash δεν έχουν πού. Εάν πληκτρολογήσετε όπου στο κέλυφος Bash, μπορείτε να πάρετε ένα μήνυμα σφάλματος. Είναι απλά μέρος του κελύφους αντί να είναι μια ξεχωριστή εντολή. Τι θα συμβεί αν τύπου LWH ψάχνετε για το πού; Δείτε τι συμβαίνει εκεί. Έτρεξε όπου όπου, πήρε αυτήν την έξοδο, και στη συνέχεια προσπάθησε να τρέξει ls ως l για το πού είναι ένα κέλυφος built-in. όπου υπάρχει, αλλά δεν υπάρχουν οι υπόλοιπες. Κανένα από αυτά δεν υπάρχουν, στην πραγματικότητα. Έτσι, αυτό δεν λειτουργεί πάντα, και αυτό καταδεικνύει επίσης πως κάποια πράγματα δεν κάνουν αρκετά, τι μπορεί να έχετε σκεφτεί. Ας κατέβουμε λίγο περισσότερο εδώ. Αυτό εδώ είναι το Bash. Αυτό είναι, επίσης, η υποκατάσταση εντολή όπως η backquote. Αλλά σε αντίθεση με backquote, χρησιμοποιεί αυτή την μεταβλητή στυλ. Υπάρχουν μια σειρά από εκφράσεις που αρχίζουν με το σύμβολο του δολαρίου, και ενώ αυτές δεν είναι μεταβλητές, που δανείστηκαν τη χρήση του το σύμβολο του δολαρίου να υποδείξει μια έκφραση κάποιου είδους. Που μπορεί να περιβάλλεται από παρενθέσεις ή αγκύλες ή διπλά παρενθέσεις, η οποία έχει διαφορετικό σκοπό. Ενιαία παρενθέσεις εδώ είναι μια αντικατάσταση εντολών όπως ακριβώς τα ανάποδα μονά εισαγωγικά. Διπλό παρενθέσεις είναι στην πραγματικότητα μια αριθμητική πράξη. Υπάρχουν και άλλες συντάξεις, άλλες εργασίες. Backquote σύνταξη είναι διαθέσιμο σε Bash. Ωστόσο, αυτό είναι προτιμότερο. Είναι πολύ πιο εύκολο να διαβάσει και να επιτρέπει φωλιάσματος. Μπορείτε να έχετε μέσα στο $ (εντολή) μια άλλη εντολή, κάτι σαν - Θα πάρετε μια λίστα εκεί. Αυτό θα μπορούσε να λειτουργήσει αν είχα την backquote επίσης. Τι γίνεται αν θέλω να κάνω κάτι σαν - Πιθανώς δεν θα χρησιμοποιούσε αυτή την εντολή, αλλά αυτή η εσωτερική αντικατάσταση εντολών απηχεί τα ονόματα όλων των αρχείων που αρχίζουν με ένα, τότε αυτό εκτελεί ls-l σε αυτά τα αρχεία, και τότε αυτό απηχεί ακριβώς την έξοδο. Πιθανώς δεν θα το κάνουμε αυτό? Θα κάνετε μόνο την ηχώ ή ls, αλλά αυτό δείχνει πώς λειτουργεί το φώλιασμα των εντολών. Έτσι ακριβώς ένα άλλο χαρακτηριστικό εδώ.  Το ανέφερα νωρίτερα, ότι όταν έχεις όπου στο C-shell, πληκτρολογήστε τα έργα στα κελύφη Bourne τύπου για τον εντοπισμό εντολές. Built-in εντολές, ακριβώς αυτό που λέει εκεί. Οι εντολές είναι μέρος του κελύφους, όπως το πού. Όταν ο φλοιός εκτελεί μια εντολή όπως ls, να εντοπίζει μέσα από τη διαδρομή, βρίσκει σε κάποιο φάκελο κάπου, αναφέρει ότι στη μνήμη, δημιουργεί ένα νέο κέλυφος, διαβάζει την εντολή ls ή οτιδήποτε άλλο μέσα στο κέλυφος όπου οι μεταβλητές περιβάλλοντος βρίσκονται ήδη, και στη συνέχεια μεταφέρει την εκτέλεση σε αυτό. Ενσωματωμένη εντολή, ο κώδικας για την εντολή είναι μέσα στο περίβλημα, έτσι ώστε το κέλυφος μόλις αρχίζει την εκτέλεση μέρους του τον δικό του κώδικα. όπου είναι μια τέτοια εντολή. Παίρνει πραγματικά γρήγορα. Δεν χρειάζεται να διαβάσει τίποτα στη μνήμη? Είναι ήδη στη μνήμη. Built-in εντολές υπερισχύουν πάντοτε εντολές με το ίδιο όνομα. Οι εντολές που βρίσκονται σε καταλόγους στη διαδρομή μπορεί να έχουν το ίδιο όνομα, εντολές σε διαφορετικούς καταλόγους, αρχεία σε διαφορετικούς καταλόγους. Το ένα που εμφανίζεται νωρίτερα στη διαδρομή είναι αυτό που θα πάρετε. Εάν υπάρχει μια ενσωματωμένη εντολή, μπορείτε να το έχετε πάντα. Δεν υπάρχει κανένας τρόπος για να δώσει μια χαμηλότερη προτεραιότητα από μια εντολή στο δρόμο. Αν θέλετε να πάρετε εκείνη την εντολή διαδρομής, μπορείτε να πληκτρολογήσετε την πλήρη διαδρομή. Αν υπήρχε μια εντολή, όπου στη διαδρομή κάπου, μπορείτε να πληκτρολογήσετε / bin /, όπου και θα το πάρει. Εάν δεν θέλετε να πληκτρολογήσετε ολόκληρη τη διαδρομή, μπορείτε να ορίσετε ένα ψευδώνυμο. Στην πραγματικότητα, αν σας έδωσε το ψευδώνυμο το ίδιο όνομα με την ενσωματωμένη εντολή, θα μπορούσε να λειτουργήσει επειδή ο ορισμός ψευδωνύμου αξιολογείται πριν από το κέλυφος καθορίζει ότι είναι μια ενσωματωμένη εντολή που πρέπει να εκτελεστεί. Στη συνέχεια, αυτό γίνεται λίγο πιο περίπλοκη με κάποιες εντολές εδώ. Η περίπτωση κάποιες εντολές είναι πραγματικά ενσωματωμένες εντολές και στη διαδρομή. Ένας από αυτούς είναι η ηχώ, η εντολή που μόλις χρησιμοποιηθεί πριν από λίγο σε αυτά τα παραδείγματα. Echo είναι μια εντολή στη διαδρομή και είναι σε κάθε κέλυφος. Δεν είναι απαραίτητα όλα συμπεριφέρονται με τον ίδιο τρόπο. Ήταν αρχικά μία εντολή μόνο στη διαδρομή. Χτίστηκε στα κελύφη αργότερα. Επειδή υπάρχουν επιλογές που εξαρτώνται από το περιβάλλον και οι επιλογές της γραμμής εντολών, οι ενσωματωμένες εντολές γράφτηκαν για να λειτουργήσει το ίδιο με την εντολή που είχε στη διαδρομή, Είναι απίθανο ότι θα έχουν γραφτεί με αυτόν τον τρόπο αν η εντολή δεν είχε ήδη γραφτεί για τη διαδρομή. Έτσι, αυτό έχει παρενέργειες. Η ιστορία του έχει αποτελέσματα εδώ. Υπάρχουν επιλογές εκεί. Υπάρχει επίσης μια επιλογή που ορίζεται από μια μεταβλητή στο tcsh ονομάζεται echo_style. Αυτή είναι μία από τις μεταβλητές που μπορεί να αλλάξει τον τρόπο που θυμίζουν έργα. Υπάρχουν και άλλες περιπτώσεις στις οποίες μπορείτε να ορίσετε μια μεταβλητή που αλλάζει τον τρόπο με τον οποίο η λειτουργία του κελύφους, συμπεριλαμβανομένου ενός ενσωματωμένη εντολή, λειτουργεί. Δεν θα επηρεάσει τίποτα άλλο δεδομένου ότι άλλες εντολές δεν έχουν πρόσβαση στις μεταβλητές του κελύφους, μόνο οι μεταβλητές περιβάλλοντος. Όμως, οι δραστηριότητες του κελύφους μπορεί να διαβάσει τις μεταβλητές κελύφους. Αυτό δεν θα λειτουργήσει για το csh. Αυτό είναι μόνο το tcsh. Αυτό είναι ένα από τα αξεσουάρ. Parsing έχει ακολουθίες όταν αξιολογεί μεταχαρακτήρων, όταν αξιολογεί τις μεταβλητές, τα ψευδώνυμα, οι αναφορές της ιστορίας. Υπάρχει μια συγκεκριμένη αλληλουχία για αυτά τα πράγματα. Αν το κάνει τα πράγματα σε μια συγκεκριμένη αλληλουχία και παίρνει σε κάτι που είναι μια έκφραση ενός είδους η οποία έχει ήδη αξιολογηθεί, δεν θα το αξιολογήσει ξανά. Αν παίρνει, τότε θα περάσει ακριβώς στις χαρακτήρων. Έτσι, όταν από την αξιολόγηση ορισμένων εκφράσεων όπως αντικατάσταση εντολών ή μεταβλητό, ή ό, τι οδηγεί σε μια έκφραση το οποίο θα θέλατε να αξιολογηθούν, ότι θα λειτουργήσει μόνο εάν η εν λόγω αξιολόγηση πραγματοποιείται αργότερα στη σειρά. Ελπίζω ότι είμαι σαφής εκεί. Αυτό ακολουθία ανάλυσης, μια επιχείρηση στο C-shell, δεν είναι το ίδιο για ενσωματωμένες εντολές, όπως είναι για μη ενσωματωμένες εντολές. Δεν είμαι σίγουρος για το Bash εκεί. Για παράδειγμα, εάν μια μεταβλητή κελύφους παρήγαγε μια αναφορά ιστορία, μάλλον δεν θα πάει πίσω στην ιστορία. Θα πάρει μόνο το θαυμαστικό. Στην πραγματικότητα, μπορούμε να προσπαθήσουμε ακριβώς αυτό έξω τώρα. ορίσετε ένα = και εμείς θα πρέπει να το βάλουμε εκεί. Περίμενε. Λυπάμαι. Το έκανα αυτό στο Bash. Ήθελα να το κάνω εδώ. Βλέπε, γι 'αυτό δεν αξιολογούν ότι η αναφορά της ιστορίας επειδή ήταν ήδη πέρα ​​από το σημείο της αξιολόγησης εκφράσεων ιστορίας όταν αξιολόγησε την μεταβλητή. Έτσι ώστε να είναι 1 αποτέλεσμα της ανάλυσης. Και πάλι, ενσωματωμένες εντολές δεν γίνονται με τον ίδιο τρόπο. Εντάξει. Ας πάμε στο επόμενο εδώ. Αυτό προορίζεται να είναι 1 γραμμή, αλλά αυτό είναι που καθιστά ευκολότερο να διαβάσει. Τι σημαίνει ότι κάνει; Ίσως να θυμάστε ότι μπορούμε να αξιολογήσουμε αστερίσκους ως μπαλαντέρ αρχείου, και υπάρχουν και άλλα μπαλαντέρ όνομα αρχείου, όπως το ερωτηματικό και εκφράσεων. Αυτό το είδος της αξιολόγησης ονομάζεται globbing. που noglob στην αρχή αυτής της εντολής λέει να μην το κάνουμε αυτό. απενεργοποίηση noglob λέει να πάει πίσω για να το κάνουμε αυτό. Σημειώστε ότι η σειρά glob δεν θα έχει αυτό το αποτέλεσμα. Σε απλή γλώσσα, που glob ή παροπλισμός noglob φαίνεται να είναι ισοδύναμες, αλλά εδώ δεν είναι. Είναι απενεργοποίηση noglob. Τώρα Tset. TSET στάθηκε για τερματικό σύνολο. Δεν χρησιμοποιείται, που συχνά τώρα, αλλά πριν έγινε διαθέσιμα συστήματα windowing και είχατε ένα μόνο τερματικό, ίσως χρειαστεί να προσδιορίσετε τον τύπο. Και αν κάτι ερχόταν πάνω από Ethernet ή από το δίκτυο, ίσως να θέλετε να πω ότι είναι μια vt100. VT100 είναι ένα είδος προτύπου στον κλάδο τερματικό. Προέρχεται από το τερματικό αποσ. Αν απλά κάνετε dialup - παρατηρήσετε ότι; Αυτό πάει πίσω ένα τρόπους, ε; Έτσι, αν εμείς απλά Tset εδώ, αν κάνω ακριβώς TSET, είναι η επαναφορά τερματικό μου, αλλά δεν είδα τίποτα. Αυτό δεν αλλάζει τίποτα. -S Εντάξει. setenv TERM xterm-χρώμα. Γνωρίζουμε ήδη ότι ο όρος αυτός ορίζεται με αυτόν τον τρόπο, έτσι ώστε δεν άλλαξε. Αυτός είναι ο τρόπος με τον οποίο θα θέλατε να το κάνουμε. Να σημειωθεί όμως ότι η εντολή αυτή, TSET-s, μόνο έξοδος αυτές τις εντολές. Δεν τους τρέξει. Δεν εκτελέσετε αυτές τις εντολές? Είναι η εξαγωγή τους. Έτσι, αυτό έχει ως στόχο να παράγει τις εντολές που θα τρέξει στη συνέχεια. Θυμάστε την εντολή σε αυτό το αρχείο μόλις έδειξα είχατε ένα Q σε αυτό. Οπότε ας το κάνουμε αυτό. Η Q καταστέλλει κάποιο αποτέλεσμα, αλλά αυτό δεν έχει σημασία εδώ, όπως μπορείτε να δείτε. Απλά κάνω αυτό για να σας δείξω ότι δεν είχε καμία σημασία. Αυτό είναι σε σύνταξη backquote. Σημειώστε το backquote εδώ, backquote εδώ. Είμαι παραλείποντας αυτά τα πράγματα εδώ. Πρόκειται για τις περιπτώσεις της λέει τι να κάνει στην περίπτωση των συγκεκριμένων τύπων τερματικών - Ethernet, το δίκτυο, dialup, τι έχετε. Δεν έχει σημασία εδώ επειδή δεν είμαστε πραγματικά κάνει οποιαδήποτε από αυτά τα πράγματα. Είμαι απλά απεικονίζει την εντολή. Αν το κάνω αυτό με την backquote, τι είμαι πρόκειται να πάρει; Επίσης, παρατηρούμε εδώ ότι αυτό περιλαμβάνεται το σύνολο noglob και την απενεργοποίηση noglob, έτσι ώστε αυτές έχουν πλέον απολυμένους στον ορισμό. Αυτό δεν ήταν πάντα αλήθεια, αλλά τώρα είναι που περιλαμβάνονται σε αυτήν την εντολή. Αλλά ας δούμε τι θα συμβεί αν το κάνω αυτό και να πάει στην αρχή της γραμμής ελέγχου με Α και το κάνω αυτό. Εντάξει, ορίστε: Η εντολή δεν βρέθηκε. Αυτό είναι το είδος περίεργο, έτσι δεν είναι; σύνολο είναι ένα πολύ γνωστό εντολή. Είναι μέρος του κελύφους. που: εντολή δεν βρέθηκε; Γιατί συμβαίνει αυτό; Χμμ. Λοιπόν, ας το σκεφτούμε αυτό. Είναι εκτελεί μια αντικατάσταση εντολών backquote, και ότι συμβαίνει σε ένα ορισμένο μέρος της αλληλουχίας του parsing την εντολή. το σύνολο είναι μια ενσωματωμένη εντολή. Έτσι, από τη στιγμή που κάνει την εν λόγω αντικατάσταση εντολών, είναι ήδη πάρει πέρα ​​από το σημείο εντοπισμού ενσωματωμένες εντολές. Έτσι αντιμετωπίζει οριστεί σαν να ήταν μια εντολή στη διαδρομή. Περιττό να πω, δεν το βρείτε και μπορείτε να πάρετε ένα σφάλμα. Καλά. Υπάρχει ένα παράδειγμα της ακολουθίας ανάλυσης. Και τι κάνουμε γι 'αυτό; Παρατηρήστε αυτήν την πολύ ενδιαφέρουσα εντολή εδώ, eval. Αναρωτιέμαι τι κάνει αυτό. Αν κοιτάξετε στο εγχειρίδιο - και ας το κάνουμε αυτό για να δείξει πώς σύγχυση είναι αυτές εγχειρίδια - άνθρωπος tcsh, σύγχυση εγχειρίδιο, βρίσκοντας τα πράγματα εδώ δεν είναι εύκολο ούτε. Εδώ πάμε, eval arg, ώστε να έχουμε 1 ή περισσότερα επιχειρήματα και υπάρχει μια λίστα με τα πράγματα εκεί. Αντιμετωπίζει τα επιχειρήματα ως εισροές στο κέλυφος και εκτελεί τις εντολές που προκύπτουν στα πλαίσια της τρέχουσας κελύφους. Αυτό χρησιμοποιείται συνήθως για να εκτελέσει τις εντολές που δημιουργούνται ως αποτέλεσμα της εντολής ή αντικατάσταση μεταβλητών, επειδή parsing συμβαίνει πριν από αυτές τις αντικαταστάσεις. Πολύ καλό. Και εδώ θα αναφερθώ καν στην εντολή TSET για τη χρήση του δείγματος όπως αυτή που σας έδειξα. Τώρα πρέπει να πάρω το πίσω παράθυρο σε ένα χρήσιμο χώρο. Ας πάρει εδώ και θα δούμε ότι η eval χρησιμοποιείται ακριβώς πριν από αυτό. Ας δούμε λοιπόν τι θα συμβεί αν βάλουμε - εδώ ανεβαίνουμε με τα βέλη σε αυτή την εντολή και Ελέγχου Α στην αρχή, eval. Εντάξει, έτσι λειτουργεί. Όταν κάνετε eval, παίρνει ό, τι έρχεται μετά από αυτό και το καθιστά μια εντολή. Αυτό σας δίνει τη δυνατότητα να αναλύσει ουσιαστικά δύο φορές. Το τμήμα εδώ εκτελεί αυτήν την εντολή μέσα από τα ανάποδα μονά εισαγωγικά, παίρνει την έξοδο. Έξοδος υποτίθεται ότι πρέπει να λειτουργούν ως τις εντολές αυτές εδώ, όπως αυτές σε αυτό και αυτό. Έτσι, αυτές οι εντολές είναι τώρα εδώ σε αυτήν την ακολουθία, αλλά αυτά είναι ενσωματωμένες εντολές και δεν μπορεί να τα πάρει αμέσως. Οπότε πάμε να eval, eval παίρνει ότι μέχρι, ξεκινά το όλο θέμα και πάλι, και λειτουργεί. Ένα παράδειγμα τόσο της backquoting, eval, parsing, τις συνέπειες της ανάλυσης, και μια εντολή που είναι πιθανώς πολύ μικρή χρησιμότητα για να σας σήμερα. Εντάξει. Εντάξει, umask. Ας δούμε αυτήν την εντολή εδώ, umask 022. Αναρωτιέμαι τι κάνει αυτό. Ας απλά πληκτρολογήστε umask με τίποτα μετά από αυτό. 22. Εντάξει. 022 και να το κάνουμε ξανά. Όπως θα έχετε καταλάβει, umask χωρίς επιχειρήματα σας λέει την τρέχουσα μάσκα? umask με επιχειρήματα κάνει αυτό, αλλά αυτό ήταν το ένα είχα ήδη. Τι σημαίνει 022 σημαίνει; Αυτοί εδώ οι προστασίες για ένα αρχείο. Θα καθορίσει ποιος επιτρέπεται να διαβάσει ή να γράψει ή να εκτελέσει το αρχείο. Οι προστασίες που ονομάζεται επίσης δικαιώματα. Το r σημαίνει ανάγνωση, το w για write, και το Χ, το οποίο δεν είναι παρούσα εκεί, στέκεται για να εκτελέσει. Υπάρχουν 3 κατηγορίες εκεί. Τα τελευταία 3 στοιχεία είναι στην κατηγορία των χρηστών. Αυτοί ισχύουν για μένα, το χρήστη. Αυτά τα 3 εδώ ισχύουν για την ομάδα. Το αρχείο ανήκει στην ομάδα 1, ο χρήστης μπορεί να ανήκει σε πολλές ομάδες, αλλά αν ο χρήστης βρίσκεται μέσα στην ομάδα στην οποία ανήκει αυτό το αρχείο, τότε οι προστασίες θα ισχύουν για αυτόν, αν αυτός δεν είναι ο χρήστης. Και αυτό είναι όλοι οι άλλοι. Οι κατηγορίες αυτές είναι αμοιβαία αποκλειόμενες. Οι προστασίες των χρηστών εφαρμόζονται με τον ίδιο, η προστασία της ομάδας ισχύουν για τα μέλη της ομάδας, εκτός από το χρήστη, και οι άλλες προστασίες ισχύουν μόνο για τους ανθρώπους, εκτός από το χρήστη και τα μέλη της ομάδας. Εάν υπάρχει μια r ή aw ή x, αυτό σημαίνει ότι έχει χορηγηθεί προστασία. Αν υπάρχει ένα ενωτικό, αυτό σημαίνει ότι δεν είναι. Στην πραγματικότητα υπάρχουν άλλα πράγματα που μπορούν να τεθούν εδώ, εκτός από αυτά, το οποίο δεν θα μπει τώρα. Το umask ορίζει μια προεπιλογή για τα αρχεία που έχετε δημιουργήσει. Και σαν μάσκα, ουσιαστικά λέει τα κομμάτια που δεν ορίσετε. Πώς έχει γίνει αυτό bits; Αν νομίζετε ότι από κάθε ένα από αυτά ως οκταδικό αριθμό, αυτό είναι το 1s bit, αυτό είναι το 2s, αυτή είναι η 4s. Έτσι, από 0 έως 7 Θα περιγράψει τι συνδυασμός του r, w, καθώς και το x έχετε για αυτά τα 3 και, στη συνέχεια, ένας παρόμοιος αριθμός για αυτές και στη συνέχεια για αυτές. Έτσι 022 σημαίνει 0 για άλλες 2 για την ομάδα, 2 για το χρήστη. Αλλά αυτό είναι μια μάσκα. Η μάσκα είναι ό, τι δεν έχετε. Λυπάμαι. Σας έδωσα μόνο τα πράγματα με λάθος σειρά. Είναι η πρώτη 3. Αυτά τα 3 είναι ο χρήστης, αυτά τα 3 είναι η ομάδα, αυτά τα 3 είναι το άλλο. Συγνώμη που έδωσε αυτά με λάθος σειρά. Η 0, η οποία είναι η πρώτη από αυτές, δεν εμφανίζει την τιμή, αλλά αν ένας αριθμός δεν είναι εκεί, είναι ένα 0. Αυτό σημαίνει ότι όλα τα 3 από αυτά θα πρέπει να επιτρέπονται. Παρατηρήστε ότι στη συγκεκριμένη ένα από τα x δεν επιτρέπεται. Ο λόγος είναι ότι το κέλυφος είναι ικανό προσδιορισμού αν ένα αρχείο θα πρέπει να εκτελεστεί ή όχι. Δεδομένου ότι αυτό δεν είναι ένα εκτελέσιμο αρχείο, δεν έθεσε το x. Τα 2 μέσα που γράφουν την άδεια, τη δεύτερη κατηγορία εδώ, το ένα στη μέση, απορρίπτεται. Έτσι και πάλι, αυτά είναι τα πράγματα που αρνήθηκε. Λοιπόν, χ επιτρέπεται αλλά δεν είναι εδώ επειδή δεν είναι εκτελέσιμο και ομοίως για τους άλλους. Έτσι, αυτό είναι μια κοινή umask. Ένα άλλο κοινό ένα είναι 700 - δώστε στον εαυτό σας τα πάντα και κανένας άλλος τίποτα. Και υπάρχουν και άλλες δυνατότητες. Θα επιστρέψω σε αυτό. Χρησιμοποιώντας την ιστορία που μπορώ να ψάξει πίσω γι 'αυτό, LWH εκεί. Εντάξει. Έτσι, εδώ, αυτά είναι τα κοχύλια. Bash, ο ιδιοκτήτης, ο οποίος είναι ο λογαριασμός του συστήματος, μπορεί να κάνει τα πάντα. Ομάδα και όλοι οι υπόλοιποι μπορούν να διαβάζουν ή να εκτελέσει, αλλά δεν γράφουν. Αυτός δεν επιτρέπουν καν ο ιδιοκτήτης να γράψει σε αυτό. Εάν ο ιδιοκτήτης ήθελε να γράψει σε αυτό το λογαριασμό συστήματος, θα πρέπει να αλλάξετε την προστασία από την πρώτη. Αλλά και πάλι, το umask ορίζει την προεπιλεγμένη συγκαλύπτοντας αυτή, αναφέροντας τα κομμάτια που δεν θα πρέπει να οριστεί. Αυτό είναι συνήθως σε ένα από τα αρχεία αρχικοποίησης σας, το οποίο είναι το. Cshrc για την C-κελύφους ή το. προφίλ για τα κελύφη Bourne τύπου. Μπορεί να είναι αλλού επίσης αν υπάρχουν άλλα αρχεία αρχικοποίησης στο σύστημα. Τέλος πάντων, αυτό είναι umask. Υπάρχει κάτι το είδος περίεργο εδώ, και ότι είναι, γιατί είναι μια ενιαία διοίκηση υπάρχει γι 'αυτό; Αν έγραφα αυτό, θα ήθελα να μια μεταβλητή, umask = κάποια αξία το κάνει. Γιατί υπάρχει μια ολόκληρη εντολή μόνο για το σκοπό αυτό; Ο λόγος είναι αυτό πηγαίνει ακριβώς πίσω στις ρίζες του Unix. Το Unix ήταν μόνο μερικά προγραμματισμό των έργων στα Bell Labs στις αρχές του 1970. Οι άνθρωποι απλά πήρε μαζί με το πρόγραμμα. Ποτέ δεν προορίζεται να γίνει ένα παγκόσμιο λειτουργικό σύστημα. Διαφορετικοί άνθρωποι έγραψαν διάφορα μέρη χωρίς να σκεφτεί πολύ για το πώς επρόκειτο να χρησιμοποιηθεί - και όχι αποσπασματικά. Και ήρθε μαζί σαν αυτό, και είναι ακόμα, όπως ότι σε ορισμένα σημεία. Έτσι ώστε να αντανακλά την ιστορία, και εξακολουθούν να υπάρχουν αυτές οι ασυνέπειες και περίεργα στοιχεία της. Εντάξει. Επόμενο εδώ. Όπως έγραψα νωρίτερα, το C-shell δεν είναι πραγματικά χρησιμοποιείται πολύ για τον προγραμματισμό, αν και μπορεί να είναι. Εκτελεί πιο αργά, και πάλι το trade-off μεταξύ αλληλεπιδραστική χρήση, το οποίο έχει περισσότερη επεξεργασία από την ταχύτητα που εμπλέκονται, το οποίο μπορεί να κάνει και χωρίς την επεξεργασία. Τα επιπλέον χαρακτηριστικά που προστέθηκαν στο κέλυφος Bourne από τους Korn και τους Bourne-again κοχύλια δεν φαίνεται να επιβραδύνει τους, και δεν ξέρω γιατί συμβαίνει αυτό. Θα μπορούσε απλώς να είναι καλύτερο προγραμματισμό, αλλά δεν είμαι σε θέση να γνωρίζω. Επιταχύνει εδώ στην πραγματικότητα δεν είναι μια τέτοια μεγάλη υπόθεση, αν και αναφέρεται. Ο λόγος είναι ότι τα shell scripts πραγματικά να πάρει αρκετά γρήγορα. Εάν υπάρχει πολλή εντολές όπως σε ένα πρόγραμμα υπολογιστικών, τότε μάλλον δεν θα το κάνει σε ένα σενάριο φλοιού. Οι εργασίες που υπάρχουν είναι αρκετά απλή και άμεση. Οι αυτοί που έχω βιώσει που είναι πάρα πολύ αργά περιλαμβάνει επαναλαμβανόμενες εφαρμογές της αργής εντολές. Νωρίτερα ανέφερα την συντάκτης ροής sed. Η εντολή αυτή είναι αργή. Αν εκτελέσετε sed πολλές φορές, θα πάρετε μια αργή σενάριο, αλλά δεν είναι το κέλυφος που είναι αργή. Τρέχει στο κέλυφος Bourne δεν θα είναι πολύ πιο γρήγορα από ό, τι τρέχει στο C-shell, αν και υπάρχει ίσως κάποια πλεονεκτήματα εκεί. Οι πρόσθετες δυνατότητες προγραμματισμού, από την άλλη πλευρά, είναι σημαντικοί λόγοι για τους οποίους θα πρέπει να χρησιμοποιήσετε τα κελύφη Bourne τύπου. C-shell έχει περίεργα χαρακτηριστικά σε αυτό - το γεγονός ότι δεν ξέρετε αν μια μεταβλητή είναι μια μεταβλητή του κελύφους ή μεταβλητή περιβάλλοντος. Μπορεί να είναι πολύ συγκεχυμένη. Δεν είναι τόσο εύκολο να γράψει μόνο με βάση την εμπειρία σας από τον προγραμματισμό σε άλλες γλώσσες. Νομίζω ότι μπορείτε να βρείτε τα κελύφη Bourne τύπου πιο συνεπής με την εμπειρία σας. Κάποια scripts, όμως, μπορεί να είναι χιλιάδες γραμμές σε μήκος. Εκείνοι που έχω δει είναι που χρησιμοποιούνται για την επισκευή των λειτουργικών συστημάτων. Αυτοί μπορεί να εκτελέσει πολύ αργά, αλλά δεν μπορείτε να εκτελέσετε αυτές τις πολύ συχνά. Είναι μόνο όταν κάνεις διορθώσεις, και αυτό είναι μόνο ο διαχειριστής του συστήματος που κάνει αυτά τα πράγματα, έτσι δεν είναι πραγματικά πολύ από ένα θέμα. Εκείνοι που είναι εκατοντάδες γραμμές καιρό στην πραγματικότητα εκτελούν αρκετά γρήγορα. Παραπέμπουν σε αυτό εδώ, ποιες είναι αυτές οι βελτιώσεις; Έχω ήδη αναφέρει μερικά από αυτά - πίνακες, υπολογισμοί, τα $ () έκφρασης για τους υπολογισμούς του φλοιού Bash, το άλλο είδος της αντικατάστασης εντολών. Υπάρχουν διάφορα είδη των εντολών δοκιμών με την οποία μπορείτε να κάνετε εξαρτάται από δοκιμές σχετικά με την ύπαρξη ενός αρχείου ή άλλα πράγματα. Διαρκούν εδώ, αυτή η εντολή εδώ. Τι κάνει αυτό το κάνει, και γιατί κάποιος θα το χρησιμοποιήσει; printenv variablename. Ξέρουμε τι printenv κάνει. Μας αφηγείται την τιμή μιας μεταβλητής. Και printenv variablename δεν θα μας πει πάρα πολύ γιατί δεν υπάρχει τέτοια μεταβλητή. Λευκά. Αλλά ας το δώσει κάτι ουσιαστικό. Αυτό δεν είναι ούτε εκεί. Εντάξει. Υποθέτω, ότι δεν ορίζεται αυτό. Ας ελέγξει το περιβάλλον μου. Αυτό είναι μια άλλη εντολή με την οποία μπορείτε να επιθεωρήσει το περιβάλλον σας. Υπάρχει παλιό καλό EDITOR, που είδαμε πριν. Τι σημαίνει ότι κάνει; Εδώ έχουμε μια έκφραση backquote. Θυμηθείτε ότι αυτό είναι το C-shell. Έτσι printenv ΕΠΙΜΕΛΕΙΑ θα μας δώσει μια τιμή EDITOR. Είναι vi. Και τότε θα ορίσετε αυτήν την τιμή σε μεταβλητή α, την εντολή set. Έτσι τώρα, αν κάνω echo $ a, παίρνω vi. Αυτό δεν φαίνεται τρομερά χρήσιμο. Ωστόσο, δεν έχουν πραγματικά έναν σκοπό. Επειδή δεν γνωρίζουμε αν η μεταβλητή είναι μια μεταβλητή του κελύφους ή μεταβλητή περιβάλλοντος με χρήση της σύνταξης αξιολόγησης σύμβολο του δολαρίου, μπορούμε να χρησιμοποιήσουμε printenv για να βεβαιωθείτε ότι είναι μια μεταβλητή περιβάλλοντος. Έτσι αν υπήρχε μια μεταβλητή κέλυφος editor, αυτό δεν θα το πάρει. Αυτό λειτουργεί μόνο με τη μεταβλητή περιβάλλοντος. Αν υπήρχε μια μεταβλητή του κελύφους και θα ήθελα την αξία του, Θα πρέπει να βρούμε κάποιο άλλο τρόπο για να το κάνει. Ένας τρόπος για να γίνει αυτό θα ήταν κάνοντας σετ και σωληνώσεις. Αυτό είναι ένα από τα μεταχαρακτήρων, ειδικούς χαρακτήρες. Στέλνει την έξοδο του συνόλου σε κάτι άλλο. Ας δούμε τι μπορούμε να βρούμε εκεί. Τίποτα. Εντάξει. Ας δούμε τι υπάρχει εκεί όλοι μαζί. Ήταν echo_style, το ένα που ανέφερα πριν. Εντάξει, ας το κάνουμε αυτό. Θυμηθείτε ανέφερα και πριν, echo_style καθορίζει τον τρόπο η εντολή echo θα εκτελεστεί. bsd σημαίνει Berkeley Πρότυπης Κατανομής. Αυτή είναι η Berkeley Unix από τη δεκαετία του 1970. Αυτός είναι ένας από τους τρόπους που αντηχούν μπορεί να τρέξει. Ρύθμιση echo_style σε αυτή την τιμή στο TC-κέλυφος θα οδηγήσει την echo να συμπεριφέρεται με αυτόν τον τρόπο. Έτσι που το κάνει αυτό, αλλά που παίρνει μόνο μεταβλητές κελύφους. Δεν θα βρει Editor, το οποίο δεν είναι μια μεταβλητή κελύφους. Τίποτα. Έτσι, αυτό είναι ένας τρόπος να τα διακρίνει. Αλλά το γεγονός ότι θα πρέπει να περάσει από κάποια παράξενη εντολή όπως αυτή να γίνει διάκριση μεταξύ των μεταβλητών του κελύφους ή μεταβλητές περιβάλλοντος δείχνει το είδος της πρακτικό χαρακτήρα του C-shell για ορισμένους σκοπούς. Και τώρα, το τελευταίο και ίσως λιγότερο, αυτό είναι οι σελίδες man. Όσοι από που ίσως γνωρίζετε, ο άνθρωπος είναι η σύντομη εντολή για χειροκίνητη. Οι σελίδες man για τα κελύφη είναι δύσκολο να διαβαστούν. Είναι πολύ καιρό. Είναι οργανωμένη με τρόπο που μπορεί να είναι δύσκολο να βρείτε αυτό που ψάχνετε. Έτσι, αν ψάχνετε για κάτι με ένα σκοπό, ίσως δεν ξέρω αν ο σκοπός είναι μια μεταβλητή του κελύφους ή κάτι άλλο, έτσι μπορεί να μην ξέρετε πού να κοιτάξετε για αυτό. Μπορείτε να ψάξετε για διάφορα χορδές, αλλά οι χορδές επαναλαμβάνονται συχνά. Έτσι, είναι γενικά δύσκολο να διαβαστεί. Εμείς απλά κοίταξε τη σελίδα man TC-shell λίγο πριν να βρείτε την εντολή eval. Κάποια πράγματα πάνε πιο γρήγορα. Μία προσέγγιση είναι να ψάξει για ένα string. Μπορείτε να χρησιμοποιήσετε τη συσκευή τηλεειδοποίησης. Pager έχει την κάθετο για να ψάξουν για μια εντολή ή ένα string μέσα σε μια λειτουργία pager. Ο άνθρωπος από προεπιλογή θα χρησιμοποιήσει συσκευές τηλεειδοποίησης, είτε είναι περισσότερο ή λιγότερο. Δεν ξέρω αν είστε εξοικειωμένοι με αυτά, αλλά αυτά μπορεί να δείξει τα αρχεία κομμάτι από το κομμάτι. Έχω χρησιμοποιήσει λιγότερο να εμφανίσετε αυτά τα συγκεκριμένα αρχεία που έχουμε εδώ. Μπορείτε να ψάξετε εκεί μέσα. Μπορείτε να δοκιμάστε να χρησιμοποιήσετε διαφορετικές χορδές αναζήτησης. Επίσης man σελίδες σε διαφορετικά λειτουργικά συστήματα μπορεί να μην είναι το ίδιο. Μπορούν να είναι ξεχωριστές σελίδες για csh και tcsh. Όπου και αν δεν είναι στο Mac, αλλά θα μπορούσε να είναι αν αυτά είναι ξεχωριστές εντολές. Αν sh πραγματικά δεν απαιτούν Bash, πιθανότατα θα υπάρξει μια ξεχωριστή σελίδα man. Μερικά συστήματα έχουν ξεχωριστές σελίδες man μόνο για τα C-shell ενσωματωμένες εντολές. Μερικές φορές, αν θέλετε να διαβάσετε μια περιγραφή ενός ενσωματωμένη εντολή ότι είναι, επίσης, στην πορεία, όπως echo, θα πρέπει να διαβάσετε τη σελίδα man για αυτή την εντολή echo για να καθορίσει πώς θα λειτουργήσει ως ενσωματωμένη εντολή ακόμα κι αν δεν είστε καλώντας την ενσωματωμένη εντολή. Αυτό είναι ένα μειονέκτημα του λειτουργικού συστήματος σε γενικές γραμμές, όχι μόνο για τα κελύφη, αν και για τα κελύφη ειδικότερα οι σελίδες man είναι αρκετά μεγάλη, εν μέρει επειδή έχουν προστεθεί χρήσιμες λειτουργίες για τους, η οποία μπορεί να είναι θετική. Εντάξει. Υπάρχουν ερωτήσεις; Τυχόν θέματα που θέλετε να εμφανιστεί; Οτιδήποτε σχετικό εδώ; Λοιπόν, αυτό είναι πολύ ωραίο να μιλάμε σε όλους σας. Ελπίζω να έχεις κάτι από το σεμινάριο ότι θα είναι χρήσιμο για σας στις μελλοντικές επιδιώξεις σας. [CS50.TV]