1 00:00:00,000 --> 00:00:02,320 >> [Σεμινάριο - Unix κοχύλια, Περιβάλλοντα] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Πανεπιστήμιο του Χάρβαρντ] 3 00:00:04,180 --> 00:00:07,160 [Αυτό είναι CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Το σημερινό θέμα είναι το κέλυφος του Unix. 5 00:00:12,770 --> 00:00:20,600 Είμαι Douglas Kline, εμπειρογνώμονα, ή τουλάχιστον λογικά αρμόδιο χρήστη, του κελύφους. 6 00:00:20,600 --> 00:00:25,280 Ένα κέλυφος είναι η διεπαφή για τον χρήστη με το λειτουργικό σύστημα του υπολογιστή. 7 00:00:25,280 --> 00:00:29,580 Το όνομα είναι παραπλανητική, καθώς, σε αντίθεση με το κέλυφος ενός ζώου, 8 00:00:29,580 --> 00:00:34,890 το οποίο είναι σκληρό και προστατευτικό, το κέλυφος του υπολογιστή επιτρέπει την επικοινωνία. 9 00:00:34,890 --> 00:00:39,120 Έτσι, πορώδης μεμβράνη θα μπορούσε πιθανότατα να είναι μια καλύτερη μεταφορά. 10 00:00:39,120 --> 00:00:44,500 >> Το αρχικό κέλυφος για Unix είναι το κέλυφος Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne είναι γραμμένες Β-Ο-Υ-Κ-Ν-Ε. 12 00:00:46,450 --> 00:00:49,770 Bourne ήταν ένας από τους αρχικούς δημιουργούς του Unix, 13 00:00:49,770 --> 00:00:51,700 και έτσι το κέλυφος έχει το όνομά του. 14 00:00:51,700 --> 00:00:54,850 Το όνομα του εν λόγω κελύφους ως εντολή είναι απλά sh. 15 00:00:54,850 --> 00:00:57,400 Αυτή είναι η εντολή που μπορείτε να εκτελέσετε. 16 00:00:57,400 --> 00:01:00,810 Το κέλυφος ξεκινά από την είσοδο. 17 00:01:00,810 --> 00:01:04,459 Όταν συνδέεστε με τον υπολογιστή, το κέλυφος αρχίζει ακριβώς τρέχει για σένα, 18 00:01:04,459 --> 00:01:06,820 και αυτό είναι που παίρνει τις εντολές σας. 19 00:01:06,820 --> 00:01:09,790 Μπορεί να ξεκινήσει σε άλλους χρόνους επίσης. 20 00:01:09,790 --> 00:01:16,780 Εάν εμφανιστεί ένα παράθυρο με καμία άλλη ένδειξη, θα ξεκινήσει ένα κέλυφος για σας. 21 00:01:16,780 --> 00:01:20,450 Αυτό είναι το πώς είναι ότι μπορείτε να πάτε σε ένα παράθυρο και να αρχίσετε να πληκτρολογείτε εντολές 22 00:01:20,450 --> 00:01:23,960 και ούτω καθεξής εκεί ακόμα κι αν δεν συνδεθείτε σε αυτό το παράθυρο. 23 00:01:23,960 --> 00:01:26,670 Επιπλέον, αν κάνετε μια απομακρυσμένη σύνδεση, 24 00:01:26,670 --> 00:01:30,250 τότε θα αρχίσει ένα κέλυφος στον απομακρυσμένο υπολογιστή. 25 00:01:30,250 --> 00:01:44,310 Και είναι δυνατόν να εκτελεί εντολές χωρίς ένα διαδραστικό κέλυφος. 26 00:01:44,310 --> 00:01:48,990 Αυτό μπορεί να σημαίνει στην τρέχουσα λειτουργία σας, 27 00:01:48,990 --> 00:01:50,700 και μπορεί επίσης να σημαίνει μια απομακρυσμένη λειτουργία. 28 00:01:50,700 --> 00:01:52,900 Θα μπορούσατε να στείλετε μια εντολή σε έναν άλλο υπολογιστή, 29 00:01:52,900 --> 00:01:55,460 η οποία περιλαμβάνει την εκκίνηση ενός κελύφους εκεί. 30 00:01:55,460 --> 00:01:57,760 Στην πραγματικότητα, θα πρέπει να περιλαμβάνει την εκκίνηση ενός κελύφους υπάρχει 31 00:01:57,760 --> 00:02:01,740 ακόμη και αν αυτό δεν είναι τελικός σκοπός σας. 32 00:02:05,310 --> 00:02:12,350 Όταν κάτι ξεκινάει σαν αυτό, δεν αρχίζει αναγκαστικά ένα νέο κέλυφος. 33 00:02:12,350 --> 00:02:17,430 Εάν εμφανιστεί ένα νέο παράθυρο, είναι δυνατόν να του πει να φέρει επάνω ένα πρόγραμμα επεξεργασίας 34 00:02:17,430 --> 00:02:18,940 ή κάποια άλλη εντολή. 35 00:02:18,940 --> 00:02:20,560 Στην περίπτωση αυτή, ο συντάκτης θα ξεκινήσει από το μηδέν. 36 00:02:20,560 --> 00:02:22,930 Όταν τελειώνει ο συντάκτης, το παράθυρο σταματά. 37 00:02:22,930 --> 00:02:24,620 Αυτό είναι λίγο ασυνήθιστο, αλλά αυτό μπορεί να γίνει. 38 00:02:24,620 --> 00:02:27,140 Σε αυτές τις περιπτώσεις, δεν θα είναι ένα κέλυφος. 39 00:02:27,140 --> 00:02:31,890 Γι 'αυτό δεν είναι απαραιτήτως η περίπτωση ότι ένα παράθυρο ή κάποια τέτοια εφαρμογή θα φέρει ένα κέλυφος. 40 00:02:31,890 --> 00:02:34,030 >> Shell αναλύει εντολές. 41 00:02:34,030 --> 00:02:40,900 Parsing σημαίνει τον προσδιορισμό των διαφόρων στοιχείων και ταξινόμησή τους. 42 00:02:40,900 --> 00:02:43,470 Μέσα σε μια εντολή, η πλήρης σειρά που πληκτρολογείτε, 43 00:02:43,470 --> 00:02:47,310 θα υπάρχουν 1 ή περισσότερα ενιαία εντολές που πρέπει να εκτελεστούν. 44 00:02:47,310 --> 00:02:50,050 Άλλα στοιχεία μπορούν να είναι τα επιχειρήματα. 45 00:02:50,050 --> 00:02:55,020 Μπορεί επίσης να υπάρχουν ειδικοί χαρακτήρες που επηρεάζουν την εκτέλεση της εντολής. 46 00:02:55,020 --> 00:02:59,710 Μπορούν να στείλει την έξοδο κάπου εκτός από την οθόνη 47 00:02:59,710 --> 00:03:01,750 Αν η εντολή που θα το στείλει κανονικά στην οθόνη. 48 00:03:01,750 --> 00:03:04,390 Μπορεί να ανακατευθύνει εισόδου? Μπορεί να κάνει άλλα πράγματα επίσης. 49 00:03:04,390 --> 00:03:08,120 Υπάρχουν διάφορα άλλα σύμβολα, χαρακτήρες, και ούτω καθεξής. 50 00:03:08,120 --> 00:03:13,600 Parsing περιλαμβάνει τον εντοπισμό και την ερμηνεία αυτών των πραγμάτων. 51 00:03:13,600 --> 00:03:19,560 >> Τώρα, αν δεν υπάρχουν περισσότερες ερωτήσεις, που είναι μάλλον πιθανό δεδομένου ότι δεν υπάρχουν περισσότερα άτομα, 52 00:03:19,560 --> 00:03:24,620 θα πάμε στο επόμενο σελίδα μου εδώ. 53 00:03:24,620 --> 00:03:29,170 >> Είπα και προηγουμένως ότι ο Bourne shell είναι το αρχικό κέλυφος. 54 00:03:29,170 --> 00:03:31,550 Υπάρχουν άλλοι. 55 00:03:31,550 --> 00:03:34,520 Το ένα είναι το C-κελύφους. Η εντολή είναι csh. 56 00:03:34,520 --> 00:03:36,830 Το όνομα C-shell είναι απλά ένα παιχνίδι με τις λέξεις. 57 00:03:36,830 --> 00:03:41,260 Αυτό το κέλυφος εισήχθη με Berkeley Unix στα μέσα της δεκαετίας του 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix ήταν μια δημιουργική εκδήλωση στην ανάπτυξη του Unix. 59 00:03:44,830 --> 00:03:48,770 Ήταν μια τεράστια επανάσταση και περιελάμβανε την εισαγωγή αυτού του φλοιού. 60 00:03:48,770 --> 00:03:50,790 Ο λόγος για αυτό το παιχνίδι με τις λέξεις, C-shell, 61 00:03:50,790 --> 00:03:56,490 είναι ότι η C-κέλυφος έχει μερικά χαρακτηριστικά σε αυτό που μοιάζουν με τη γλώσσα C, 62 00:03:56,490 --> 00:03:59,740 τα οποία δεν έχουν το κέλυφος Bourne - 63 00:03:59,740 --> 00:04:02,140 ή δεν είχε εκείνη τη στιγμή. 64 00:04:02,140 --> 00:04:05,190 Υπάρχει επίσης το TC-shell. 65 00:04:05,190 --> 00:04:07,360 Πρόκειται για ένα υπερσύνολο της C-shell. 66 00:04:07,360 --> 00:04:11,470 Έχει επιπλέον χαρακτηριστικά, πολλά από τα οποία είναι χρήσιμα για αλληλεπιδραστική χρήση, 67 00:04:11,470 --> 00:04:16,050 όπως υπενθυμίζοντας εντολές στο μηχανισμό της ιστορίας, 68 00:04:16,050 --> 00:04:18,459 το οποίο θα περιγράψω λίγο αργότερα - 69 00:04:18,459 --> 00:04:23,120 με απλό τρόπο, διαμορφώθηκε μετά από έναν επεξεργαστή κειμένου. 70 00:04:23,120 --> 00:04:29,170 Έχει, επίσης, τις συνδέσεις που σας επιτρέπουν να συνδέσετε ένα σύντομο πάτημα string σε μεγαλύτερο εντολή. 71 00:04:29,170 --> 00:04:31,440 Εμείς δεν πρόκειται να πάρει σε αυτό σήμερα. 72 00:04:31,440 --> 00:04:33,650 Έχει κάποια χαρακτηριστικά που είναι χρήσιμα για τον προγραμματισμό. 73 00:04:33,650 --> 00:04:37,020 Ωστόσο, η C-shell δεν χρησιμοποιείται συχνά για τον προγραμματισμό κελύφους. 74 00:04:37,020 --> 00:04:39,080 Η Shell προγράμματα, αν δεν έχετε ήδη γνωρίζετε, 75 00:04:39,080 --> 00:04:41,690 είναι προγράμματα που αποτελούνται από τα χαρακτηριστικά του κελύφους. 76 00:04:41,690 --> 00:04:43,220 Θα μπορούσε να τρέξει αυτά τα προγράμματα. 77 00:04:43,220 --> 00:04:46,760 Μπορείτε να γράψετε ένα μάτσο εντολές του κελύφους σε ένα αρχείο και εκτελέστε το αρχείο. 78 00:04:46,760 --> 00:04:49,760 Δεν χρειάζεται να το υπολογίσουν. Αυτή είναι μια ερμηνευτική γλώσσα. 79 00:04:49,760 --> 00:04:57,320 Η φράση C-shell είναι πλέον ασαφής, δεδομένου ότι μπορεί να αναφέρεται μόνο στον αρχικό C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 ή σε όλα τα C-κοχύλια, συμπεριλαμβανομένων tcsh. Είναι λίγο ασαφής. 81 00:05:01,200 --> 00:05:08,250 >> Μια μεταγενέστερη κέλυφος είναι το κέλυφος Korn, ksh, το όνομά του από τον προγραμματιστή, Korn. 82 00:05:08,250 --> 00:05:14,160 Αυτό το shell προσπαθούσε να ενσωματώσει σε 1 κέλυφος 83 00:05:14,160 --> 00:05:16,960 τα πλεονεκτήματα του C-shell για διαδραστική χρήση 84 00:05:16,960 --> 00:05:19,230 και το Bourne shell για τον προγραμματισμό. 85 00:05:19,230 --> 00:05:25,440 Έχει χρησιμοποιηθεί ως ένα διαδραστικό κέλυφος από κάποιους ανθρώπους - μια μειονότητα. 86 00:05:25,440 --> 00:05:32,050 Αργότερα όμως, υπήρχε μια άλλη εισαγωγή, το κέλυφος Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 και πάλι ένα παιχνίδι με τις λέξεις, Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 Είναι μια επέκταση του κελύφους Bourne. Korn φλοιός είναι επίσης. Δύο από αυτούς είναι. 89 00:05:43,830 --> 00:05:48,100 Έχει τους ίδιους στόχους της Korn shell συγχωνευθούν το C-κελύφους 90 00:05:48,100 --> 00:05:50,980 και τα πλεονεκτήματα του φλοιού Bourne στο κέλυφος 1. 91 00:05:50,980 --> 00:05:56,810 Πολλές από τις βελτιώσεις του κελύφους Korn περιλαμβάνονται επίσης στο Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, ωστόσο, έχει περισσότερα και είναι επομένως προτιμότερη. 93 00:06:00,710 --> 00:06:05,180 The Bourne-again κέλυφος και το κέλυφος Korn ονομάζονται κοχύλια Bourne τύπου 94 00:06:05,180 --> 00:06:07,730 διότι περιλαμβάνουν χαρακτηριστικά του φλοιού Bourne, η 95 00:06:07,730 --> 00:06:11,180 που είναι ασύμβατες σε ορισμένα σημεία με C-κελύφη. 96 00:06:11,180 --> 00:06:15,520 Υπάρχουν και άλλα κελύφη πέρα ​​από αυτές, ορισμένοι που προορίζονται για περιορισμένη χρήση, 97 00:06:15,520 --> 00:06:20,670 ίσως περιορίζεται σε κάποιες εντολές, ίσως εξειδικευμένους σκοπούς, που δεν χρησιμοποιούνται συχνά. 98 00:06:20,670 --> 00:06:24,240 >> Εντάξει. Επόμενο στοιχείο εδώ. 99 00:06:31,300 --> 00:06:38,970 Το Bash κέλυφος έχει συνδεθεί με διάφορες μορφές του Linux. 100 00:06:38,970 --> 00:06:41,550 Δεν είμαι σίγουρος αν αυτό είναι αλήθεια κάθε μορφής. 101 00:06:41,550 --> 00:06:43,280 Υπάρχουν πολλές μορφές έξω εκεί και δεν έχω όλα αυτά που χρησιμοποιούνται, 102 00:06:43,280 --> 00:06:46,870 αλλά σε αυτούς που έχω χρησιμοποιήσει έχει γίνει συνδεδεμένες με αυτό. 103 00:06:46,870 --> 00:06:49,670 Έτσι, ό, τι γνωρίζω, δεν υπάρχει τίποτα για το Bash 104 00:06:49,670 --> 00:06:52,210 γεγονός που καθιστά πλέον συμβατό με το Linux 105 00:06:52,210 --> 00:06:55,020 από οποιοδήποτε άλλο συνδυασμό του κελύφους και του λειτουργικού συστήματος. 106 00:06:55,020 --> 00:06:59,690 Νομίζω ότι αυτό πιθανώς αντανακλά μόνο τις κλίσεις των προγραμματιστών. 107 00:06:59,690 --> 00:07:07,500 Ότι έχει αρχίσει να συνδέεται με το Linux είναι ένας άλλος λόγος για να προτιμούν Bash για Ksh 108 00:07:07,500 --> 00:07:11,820 δεδομένου ότι τα πράγματα είναι πιθανό να είναι γραμμένο σε αυτό και είναι πιθανό να εξαπλωθεί. 109 00:07:11,820 --> 00:07:15,410 Θα σας δώσω άλλους λόγους γι 'αυτό αργότερα. 110 00:07:15,410 --> 00:07:21,330 Bourne shell scripts θα πρέπει να τρέξει κάτω από το κέλυφος Korn ή Bash. 111 00:07:21,330 --> 00:07:22,650 Αν γράψετε κάτι για το κέλυφος Bourne, 112 00:07:22,650 --> 00:07:26,180 μπορείτε πιθανώς να εκτελέσει σύμφωνα με ksh ή το bash. 113 00:07:26,180 --> 00:07:30,610 Korn shell scripts μάλλον θα τρέξει κάτω από Bash, αλλά δεν μπορώ να το εγγυηθώ. 114 00:07:30,610 --> 00:07:36,040 Αργότερα εδώ, scripts C-shell θα πρέπει να τρέξει κάτω από το TC-shell. 115 00:07:38,850 --> 00:07:41,690 Το C-shell ήταν στην πραγματικότητα ποτέ δεν χρησιμοποιείται εκτενώς για scripting 116 00:07:41,690 --> 00:07:48,110 δεδομένου ότι το κέλυφος Bourne και αργότερα τα κελύφη Bourne τύπου ήταν προτιμότερο για τον σκοπό αυτό. 117 00:07:48,110 --> 00:07:50,620 Έτσι, αυτό δεν είναι πραγματικά όλα αυτά σημαντικά. 118 00:07:50,620 --> 00:07:53,480 Υπάρχουν πάρα πολλά Bourne shell scripts τα οποία γράφτηκαν πολύ καιρό πριν, 119 00:07:53,480 --> 00:07:56,860 πριν από το κέλυφος Korn ή το Bourne-again κέλυφος εισήχθησαν. 120 00:07:56,860 --> 00:07:59,300 Αυτά είναι ακόμα σε χρήση, ένα μέρος των λειτουργικών συστημάτων, 121 00:07:59,300 --> 00:08:01,590 και έτσι θα τα βρείτε αν κοιτάξετε στο λειτουργικό σύστημα 122 00:08:01,590 --> 00:08:03,760 ή κάποια παλαιά πακέτα προγραμματισμού. 123 00:08:03,760 --> 00:08:12,840 >> Bash είναι σε κάποιο βαθμό να γίνει ένα είδος lingua franca για τα λειτουργικά συστήματα. 124 00:08:12,840 --> 00:08:17,580 Είναι ήδη επεκταθεί σε Windows και να αποκτήσει VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, σε περίπτωση που δεν ξέρετε, είναι ένα ιδιόκτητο λειτουργικό σύστημα 126 00:08:20,440 --> 00:08:25,480 της Digital Equipment Corporation η οποία είναι ακόμη σε χρήση, σε μεγάλο βαθμό πίσω από τις σκηνές. 127 00:08:25,480 --> 00:08:29,250 Και αν πρόκειται να τρέχει σε πολλά διαφορετικά λειτουργικά συστήματα, 128 00:08:29,250 --> 00:08:31,110 πιθανό οι άνθρωποι τείνουν να στραφούν για αυτό. 129 00:08:31,110 --> 00:08:33,840 Αλλά αυτή η εξέλιξη είναι σχετικά πρόσφατη. 130 00:08:33,840 --> 00:08:39,490 Είναι μόνο η αρχή, οπότε δεν μπορώ να προβλέψω εάν αυτό θα αποδειχθεί ότι είναι πραγματικά αυτό το είδος της lingua franca. 131 00:08:39,490 --> 00:08:43,539 Επίσης, επειδή pathnames αρχείων και βιβλιοθηκών διαφέρουν 132 00:08:43,539 --> 00:08:46,210 μεταξύ αυτών των διαφορετικών λειτουργικών συστημάτων, 133 00:08:46,210 --> 00:08:50,250 ενδέχεται να μην είναι σε θέση να γράψει ένα σενάριο Bash σε ένα λειτουργικό σύστημα 134 00:08:50,250 --> 00:08:51,840 και στη συνέχεια να το εκτελέσετε σε ένα άλλο. 135 00:08:51,840 --> 00:08:54,440 Θα πρέπει να είναι σε θέση να κινούνται μεταξύ διαφορετικών Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Λειτουργικά συστήματα Mac OS, αλλά όχι αναγκαστικά σε Windows ή VMS. 137 00:08:59,020 --> 00:09:01,390 Ίσως χρειαστεί να αλλάξετε την περιγραφή του αρχείου διαδρομή, 138 00:09:01,390 --> 00:09:03,180 και μερικές βιβλιοθήκες μπορεί να είναι διαφορετικά, 139 00:09:03,180 --> 00:09:05,230 η οποία μπορεί να επηρεάσει τον τρόπο που κάποιοι εντολές δουλεύουν 140 00:09:05,230 --> 00:09:09,730 ή πώς να επεξεργάζονται τα επιχειρήματα και τα παρόμοια. 141 00:09:09,730 --> 00:09:19,230 Επιπλέον προς αυτό, ένα άλλο προσοχής εδώ είναι ότι δεν υπάρχει εγγύηση 142 00:09:19,230 --> 00:09:23,570 ότι όλα τα διαφορετικά κελύφη που έχω αναφέρει - κέλυφος Bourne, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-κελύφους, κέλυφος Korn, Bourne-again κέλυφος - θα είναι διαθέσιμα από οποιαδήποτε Unix 144 00:09:29,880 --> 00:09:33,750 ή Linux ή Mac OS υπολογιστή. 145 00:09:33,750 --> 00:09:35,620 Απλώς δεν θα μπορούσε να υπάρχει. 146 00:09:35,620 --> 00:09:38,300 Αυτός είναι ένας από τους προειδοποιεί εδώ. 147 00:09:38,300 --> 00:09:41,490 Είναι ένα ατυχές περιορισμό εδώ αφού θα θέλατε να λειτουργήσουν τα πράγματα παντού, 148 00:09:41,490 --> 00:09:44,380 αλλά, δυστυχώς, δεν μπορείτε να βασιστείτε σε αυτό. 149 00:09:44,380 --> 00:09:47,230 >> Εντάξει. Επόμενο εδώ. 150 00:09:50,280 --> 00:09:54,370 Ας υποθέσουμε ότι θέλετε να γράψετε ένα shell script, 151 00:09:54,370 --> 00:09:57,170 ένα πρόγραμμα που αποτελείται από εντολές του κελύφους. 152 00:09:57,170 --> 00:10:01,200 Μπορείτε να γράψετε τις εντολές σας, βάλτε τα σε ένα αρχείο, εκτελέστε το αρχείο. 153 00:10:01,200 --> 00:10:04,230 Τι γίνεται αν θέλετε να συμπεριλάβετε τα επιχειρήματα; 154 00:10:04,230 --> 00:10:09,650 Στην περίπτωση των εργασιών του κελύφους, τα επιχειρήματα που ονομάζονται παράμετροι ή παράμετροι θέσης 155 00:10:09,650 --> 00:10:15,940 και θα πρέπει να κληθεί από το σύμβολο του δολαρίου και ο αριθμός, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Έτσι, αν το σενάριο έχει αυτό το όνομα, το πρώτο επιχείρημά μου θα μπορούσε να είναι το επιχείρημα 1 157 00:10:27,000 --> 00:10:30,540 και το δεύτερο μου μπορεί να είναι το επιχείρημα 2, 158 00:10:30,540 --> 00:10:34,110 και μέσα στο σενάριό μου αν θέλω να αναφερθώ σε αυτά τα πράγματα - 159 00:10:34,110 --> 00:10:36,810 ας διαγράψει αυτό δεδομένου ότι δεν είμαι πραγματικά πρόκειται να τρέξει - 160 00:10:36,810 --> 00:10:42,160 μέσα στο σενάριό μου θα μπορούσα να έχω $ 1 για να αναφερθώ σε ΠΑΡΑΜ1, 161 00:10:42,160 --> 00:10:45,890 $ 2, το οποίο θα βγει με αυτόν τον τρόπο, arg2. 162 00:10:45,890 --> 00:10:50,080 Έτσι, αυτά τα σύμβολα είναι διαθέσιμα για να αναφερθώ στα επιχειρήματα, 163 00:10:50,080 --> 00:10:52,390 και εκείνες που ισχύουν για όλα τα κελύφη. 164 00:10:52,390 --> 00:10:56,520 Επιπλέον, υπάρχουν και άλλες χαρακτήρων. 165 00:10:56,520 --> 00:11:01,700 $ * Αναφέρεται σε ολόκληρη τη λίστα επιχείρημα, όλοι τους. 166 00:11:01,700 --> 00:11:05,390 $ # Αναφέρεται στον αριθμό των επιχειρημάτων. 167 00:11:05,390 --> 00:11:07,910 Και πάλι, αυτό ισχύει για όλα τα κελύφη. 168 00:11:07,910 --> 00:11:15,540 Τα εν λόγω σύμβολα, * και #, μπορούν να χρησιμοποιηθούν με αυτές τις σημασίες και σε άλλα μέρη, επίσης. 169 00:11:15,540 --> 00:11:17,940 Εμείς δεν θα πάρει σε αυτό. 170 00:11:17,940 --> 00:11:20,460 >> Shell γραμμή προσδιοριστικό. Τι είναι αυτό; 171 00:11:20,460 --> 00:11:27,760 Ας πούμε ότι έχετε γράψει ένα σενάριο και αυτό είναι για ένα συγκεκριμένο κέλυφος και θέλετε να το εκτελέσετε. 172 00:11:27,760 --> 00:11:33,500 Πώς ξέρεις τι πληρώνω το λειτουργικό σας σύστημα θα χρησιμοποιήσει για να τρέξει το script σας; 173 00:11:33,500 --> 00:11:37,230 Σε ένα σημείο θα μπορούσε να υποθέσει ότι θα το τρέξει στο κέλυφος Bourne 174 00:11:37,230 --> 00:11:39,440 αν δεν λένε το αντίθετο, 175 00:11:39,440 --> 00:11:41,730 αλλά οι άνθρωποι δεν έχουν τη συγγραφή σεναρίων στο κέλυφος Bourne τόσο πολύ πια 176 00:11:41,730 --> 00:11:43,750 και δεν μπορεί ακόμη και να βασίζονται σε αυτό πια. 177 00:11:43,750 --> 00:11:48,740 Έτσι, εδώ έχουμε μια γραμμή προσδιοριστικό κέλυφος εδώ. 178 00:11:48,740 --> 00:11:52,450 Αυτό καθορίζει Bash. 179 00:11:52,450 --> 00:11:56,750 Σημειώστε ότι θα καθορίσει τη διαδρομή, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Εάν ένας υπολογιστής έχει το κέλυφος Bash, αλλά όχι στον κατάλογο bin, / bin, αυτό δεν θα λειτουργήσει. 181 00:12:02,870 --> 00:12:06,870 Αυτό είναι ένα άλλο προκριματικό, μια άλλη προφύλαξη εδώ. 182 00:12:06,870 --> 00:12:09,500 Η δίεση είναι ο χαρακτήρας της γραμμής σχόλιο. 183 00:12:09,500 --> 00:12:12,300 Αυτό ισχύει για όλους τους φλοιούς. 184 00:12:12,300 --> 00:12:18,610 Η συγκεκριμένη περίπτωση εδώ, #! κατά την έναρξη του σεναρίου, είναι μια ειδική περίπτωση. 185 00:12:18,610 --> 00:12:23,410 Αυτό καθορίζει το κέλυφος μέσα στο οποίο εκτελείται το script. 186 00:12:23,410 --> 00:12:30,230 Όπως έλεγα, μπορεί να μην είναι το ίδιο μέρος / bin. 187 00:12:30,230 --> 00:12:34,880 Επιπλέον, υπάρχει ένα άλλο πράγμα εδώ. 188 00:12:34,880 --> 00:12:41,250 Εάν χρησιμοποιείτε μόνο το δίεση χωρίς θαυμαστικό και διαδρομή, 189 00:12:41,250 --> 00:12:44,640 ότι θα πρέπει να αναφέρουν ένα C-shell. 190 00:12:44,640 --> 00:12:48,300 Ωστόσο, δεν συνιστούμε να το κάνετε αυτό, επειδή δεν είμαι σε θέση να εγγυηθεί 191 00:12:48,300 --> 00:12:49,750 ότι θα λειτουργεί πάντα. 192 00:12:49,750 --> 00:12:52,220 Αν θέλετε ένα C-shell, θα ήταν καλύτερα να το πω έτσι. 193 00:12:52,220 --> 00:12:58,450 Στη συνέχεια, υπάρχει κάτι μάλλον σύγχυση εδώ. 194 00:12:58,450 --> 00:13:03,940 Εάν χρησιμοποιείτε μια γραμμή κέλυφος προσδιοριστικό, όπως / bin / bash 195 00:13:03,940 --> 00:13:07,070 και ότι το κέλυφος δεν είναι διαθέσιμα εκεί, 196 00:13:07,070 --> 00:13:10,680 δεν υπάρχει τέτοιο πράγμα όπως / bin / bash για το συγκεκριμένο υπολογιστή, 197 00:13:10,680 --> 00:13:14,330 είτε επειδή δεν έχει Bash ή επειδή είναι σε μια διαφορετική θέση, 198 00:13:14,330 --> 00:13:17,450 θα πάρετε ένα λάθος που σας ενημερώνει ότι το σενάριο τρέξατε δεν υπάρχει. 199 00:13:17,450 --> 00:13:21,510 Και φυσικά υπάρχει το script σας, έτσι ώστε το μήνυμα λάθους είναι συγκεχυμένη. 200 00:13:21,510 --> 00:13:24,810 Ο λόγος για τον οποίο το λειτουργικό σύστημα σας δίνει αυτό το σφάλμα 201 00:13:24,810 --> 00:13:28,370 ή, ακριβέστερα, ότι το διαδραστικό κέλυφος σας, στο οποίο εκτελείτε αυτό δίνει αυτό το σφάλμα, 202 00:13:28,370 --> 00:13:33,510 είναι ότι αναφέρει την εντολή που χρησιμοποιείται, το οποίο είναι το όνομα του σεναρίου. 203 00:13:33,510 --> 00:13:36,920 Αυτό εντολή που ονομάζεται αποτελεσματικά το κέλυφος από το όνομα του σεναρίου. 204 00:13:36,920 --> 00:13:39,330 Αυτό είναι όπου μπορείτε να πάρετε αυτό το μήνυμα λάθους σύγχυση. 205 00:13:39,330 --> 00:13:42,980 Ένας άλλος τρόπος να καλέσετε το shell script 206 00:13:42,980 --> 00:13:45,910 είναι καθορίζοντας το κέλυφος στη γραμμή εντολών, όπως εδώ. 207 00:13:45,910 --> 00:13:52,510 Αυτή είναι μια εντολή. Αυτό λέει τρέχει Bash και στη συνέχεια να εκτελέσετε το σενάριό μου σε Bash. 208 00:13:52,510 --> 00:13:55,680 Αυτό θα υπερισχύουν μια γραμμή προσδιοριστικό, 209 00:13:55,680 --> 00:14:02,090 και αυτό έχει το χαρακτηριστικό σας επιτρέπει να παρέχουν ποικίλες pathnames. 210 00:14:02,090 --> 00:14:04,840 Αν δώσω μια εντολή, το λειτουργικό σύστημα θα ψάξει για εκείνη την εντολή 211 00:14:04,840 --> 00:14:06,410 σε διάφορα μέρη. 212 00:14:06,410 --> 00:14:08,820 Αν είναι διαθέσιμη, θα πρέπει να το βρείτε. 213 00:14:08,820 --> 00:14:12,290 Ο υπολογιστής θα βρείτε Bash όπου αυτό είναι που βρίσκεται και να τρέξει, 214 00:14:12,290 --> 00:14:15,470 έτσι ώστε να μην χρειάζεται στη συνέχεια να ανησυχεί για το πού βρίσκει. 215 00:14:15,470 --> 00:14:17,360 Υπάρχουν ενδεχομένως άλλες ανησυχίες εδώ, 216 00:14:17,360 --> 00:14:20,830 σαν να υπάρχει κάτι περισσότερο από 1 έκδοση του Bash, η οποία είναι δυνατή, αν και απίθανο. 217 00:14:20,830 --> 00:14:23,540 Έτσι, αυτό είναι ένας άλλος τρόπος για να ασχοληθεί με αυτά τα πράγματα. 218 00:14:23,540 --> 00:14:30,480 Γραμμές προσδιοριστής μπορεί να καλέσει οποιοδήποτε κέλυφος. 219 00:14:30,480 --> 00:14:34,480 Μπορούν επίσης να λέμε τα πράγματα εκτός από κοχύλια. 220 00:14:34,480 --> 00:14:37,940 Παραδείγματα έχω εδώ οι sed, που είναι ο συντάκτης ρεύμα? 221 00:14:37,940 --> 00:14:39,900 awk, η οποία είναι μια γλώσσα επεξεργασίας μοτίβο? 222 00:14:39,900 --> 00:14:43,680 και perl, μια πολύ ανεπτυγμένη γλώσσα scripting. 223 00:14:43,680 --> 00:14:47,570 Αν βάλετε μια γραμμή προσδιοριστικό δείχνει ένα από αυτά τα προγράμματα, κατά την έναρξη, 224 00:14:47,570 --> 00:14:51,270 θα πάει κατευθείαν στο εν λόγω πρόγραμμα και όχι ξεκινώντας ένα κέλυφος. 225 00:14:51,270 --> 00:14:54,030 Τα προγράμματα αυτά έχουν τα όρια με τις ικανότητές τους. 226 00:14:54,030 --> 00:14:58,790 Perl είναι πολύ ικανή. Sed είναι ένας επεξεργαστής. Μπορεί να κάνει πράγματα πέρα ​​από την απλή επεξεργασία. 227 00:14:58,790 --> 00:15:03,300 Αλλά μπορεί να είναι δύσκολο να προγραμματίσετε αυτό. 228 00:15:03,300 --> 00:15:09,670 Επιπλέον, περνώντας τα επιχειρήματα και τα πράγματα με το σενάριο είναι είτε αδύνατη ή σύγχυση. 229 00:15:09,670 --> 00:15:15,030 Έτσι, σε αυτές τις περιπτώσεις, με awk ή sed, είναι, τουλάχιστον από την εμπειρία μου, 230 00:15:15,030 --> 00:15:18,910 προτιμότερο να γράψετε ένα shell script και κλήση awk ή sed από το σενάριο φλοιού 231 00:15:18,910 --> 00:15:24,660 όχι καλώντας awk ή sed ως το σενάριο μια προσδιοριστικό. 232 00:15:24,660 --> 00:15:26,980 Perl είναι μια άκρως διαφοροποιημένη γλώσσα, όπως είπα. 233 00:15:26,980 --> 00:15:30,050 Δεν μπορείτε να εκτελέσετε μια εντολή σε perl, 234 00:15:30,050 --> 00:15:32,660 πράγμα που σημαίνει ότι δεν μπορείτε να δοκιμάσετε τα μέρη των σεναρίων που είστε ανάπτυξη 235 00:15:32,660 --> 00:15:33,970 εκτελώντας τα διαδραστικά. 236 00:15:33,970 --> 00:15:36,160 Ωστόσο, αυτό είναι ένα εξαιρετικά ικανό γλώσσα 237 00:15:36,160 --> 00:15:40,960 και έχει εξελιχθεί σε ένα πολύ ευρέως χρησιμοποιούμενο εργαλείο. 238 00:15:40,960 --> 00:15:45,720 Αυτό είναι μόνο ένα μικρό κομμάτι από ένα παρενθετική παρατήρηση σχετικά με τις γραμμές προσδιοριστικό. 239 00:15:45,720 --> 00:15:50,610 >> Σε όλες ή τις περισσότερες μορφές του Linux - και πάλι, δεν μπορώ να είμαι σίγουρος ότι είναι όλα - 240 00:15:50,610 --> 00:15:57,900 και σε Mac OS, αν πληκτρολογήσετε csh έχετε tcsh, 241 00:15:57,900 --> 00:16:00,570 και αν πληκτρολογήσετε sh παίρνετε bash. 242 00:16:00,570 --> 00:16:05,020 Προσπαθούσαν εκεί για να σας δώσει τις πιο εξελιγμένες εκδόσεις από αυτά τα κελύφη, 243 00:16:05,020 --> 00:16:07,940 αλλά αυτό μπορεί να προκαλέσει σύγχυση. 244 00:16:07,940 --> 00:16:16,720 Αν γράψεις ένα σενάριο χρησιμοποιώντας tcsh ή χαρακτηριστικά του Bash, ζητώντας ταυτόχρονα csh ή sh 245 00:16:16,720 --> 00:16:22,230 και στη συνέχεια προσπαθήστε να το εκτελέσετε σε έναν υπολογιστή που δεν έχει tcsh ή Bash, 246 00:16:22,230 --> 00:16:25,050 μπορείτε να πάρετε κάποια λάθη, αν υπάρχουν εντολές εκεί 247 00:16:25,050 --> 00:16:27,970 οποίους οι εν λόγω κελύφη δεν αναγνωρίζουν. 248 00:16:27,970 --> 00:16:34,120 Επιπλέον, μπορεί να έχετε κληθεί το κέλυφος σας σε τοπικό υπολογιστή σας 249 00:16:34,120 --> 00:16:37,700 αποκαλώντας την ως sh ή csh και στη συνέχεια να πάρει τις πιο προηγμένες κοχύλια. 250 00:16:37,700 --> 00:16:41,440 Δεν μπορείτε να σκεφτείτε ακόμη και για το γεγονός ότι είστε χρησιμοποιώντας την πιο προηγμένη κέλυφος. 251 00:16:41,440 --> 00:16:45,670 Έτσι, αυτό είναι μια πιθανή παγίδα. 252 00:16:45,670 --> 00:16:50,290 Πώς κρίνεται ότι αν πληκτρολογήσετε sh έχετε Bash, 253 00:16:50,290 --> 00:16:55,580 αν πληκτρολογήσετε csh έχετε tsch; 254 00:16:55,580 --> 00:16:59,940 Υπάρχουν πράγματα σε αυτούς τους υπολογιστές που ονομάζονται σύνδεσμοι 255 00:16:59,940 --> 00:17:06,460 η οποία μπορεί να συνδεθεί με το αρχείο ονομάτων και αναφέρονται στο ίδιο πράγμα. 256 00:17:06,460 --> 00:17:12,180 Μπορεί να είναι είτε 2 ονόματα για το ίδιο αρχείο ή ένα αρχείο, σκοπός των οποίων είναι να αναφερθώ σε ένα άλλο αρχείο. 257 00:17:12,180 --> 00:17:17,550 Λέγονται σκληρά και συμβολικούς δεσμούς. Δεν θα υπεισέλθω σε αυτό πια σήμερα. 258 00:17:17,550 --> 00:17:21,619 Μπορεί επίσης να υπάρχουν ξεχωριστά αρχεία - 1 αρχείο sh, 1 αρχείο Bash - 259 00:17:21,619 --> 00:17:23,880 αλλά και οι δύο τρέχουν Bash. 260 00:17:23,880 --> 00:17:29,350 Στη συνέχεια, υπάρχει ένα άλλο προκριματικό εδώ. 261 00:17:29,350 --> 00:17:42,640 Αν είστε καλώντας ένα από αυτά τα κελύφη από ένα όνομα, 262 00:17:42,640 --> 00:17:46,640 ίσως νομίζετε ότι θα πάρετε την ίδια λειτουργικότητα με αποκαλώντας με άλλο όνομα. 263 00:17:46,640 --> 00:17:49,700 Λοιπόν, η πραγματικότητα δεν είναι απαραίτητα αλήθεια. 264 00:17:49,700 --> 00:17:55,020 Αυτές οι εντολές μπορούν να εξετάσουν το όνομα με το οποίο κλήθηκαν 265 00:17:55,020 --> 00:18:00,020 και μπορούν, με βάση αυτό το όνομα, συμπεριφέρονται διαφορετικά. 266 00:18:00,020 --> 00:18:02,740 Μπορεί να υπάρχουν ζητήματα που προσπαθεί να είναι σύμφωνες με ένα πρότυπο. 267 00:18:02,740 --> 00:18:06,060 Κάποιοι από εσάς μπορεί να έχετε ακούσει για το πρότυπο POSIX ή άλλο, 268 00:18:06,060 --> 00:18:08,730 ίσως και άλλα χαρακτηριστικά. 269 00:18:08,730 --> 00:18:14,520 Αυτό μπορεί να επιλεγεί μερικές φορές από τα επιχειρήματα της γραμμής εντολών 270 00:18:14,520 --> 00:18:17,310 ή με τον καθορισμό των μεταβλητών κελύφους. 271 00:18:17,310 --> 00:18:22,170 Κλήση ως sh ή το bash μπορεί πράγματι να οδηγήσει σε μια διαφορετική εκτέλεση 272 00:18:22,170 --> 00:18:25,300 ακόμα κι αν είναι το ίδιο αρχείο που είστε εκτέλεση. 273 00:18:25,300 --> 00:18:31,800 Ένα άλλο πράγμα που εξετάζει είναι ότι ακόμα και αν κάποιος άλλος υπολογιστής έχει tcsh ή Bash, 274 00:18:31,800 --> 00:18:35,310 αν δεν συνδέονται όπως είναι στον τοπικό υπολογιστή σας 275 00:18:35,310 --> 00:18:37,990 εάν έχετε έναν τοπικό υπολογιστή Linux ή Mac OS, 276 00:18:37,990 --> 00:18:45,630 τότε και πάλι θα πάρετε το κέλυφος που σας καλούν sh ή csh, όχι αυτός που ίσως προτιμάτε. 277 00:18:50,430 --> 00:19:01,130 Το τρέχον κέλυφος Bourne έχει βελτιώσεις μικρότερο από ό, τι εκείνες Bash 278 00:19:01,130 --> 00:19:06,100 αλλά το παρελθόν εκείνα της αρχικής κέλυφος Bourne. 279 00:19:06,100 --> 00:19:09,690 Ως αποτέλεσμα του ότι, ακόμη και η τρέχουσα κέλυφος Bourne, SH, 280 00:19:09,690 --> 00:19:14,560 ακόμα και όταν δεν υπάρχει Bash, μοιάζει με τη γλώσσα C πάνω από το C-shell κάνει. 281 00:19:14,560 --> 00:19:20,460 Αυτό δεν ήταν αλήθεια, όταν δημιουργήθηκε για πρώτη φορά το C-shell, αλλά έχει αναπτυχθεί με αυτόν τον τρόπο. 282 00:19:20,460 --> 00:19:26,560 Μπορείτε να παρατηρήσετε εδώ ότι όλα αυτά τα ονόματα κέλυφος, εκτός από το κέλυφος Bourne 283 00:19:26,560 --> 00:19:30,640 έχουν κάτι να αναφέρουν ποια κέλυφος είναι - csh, bash - 284 00:19:30,640 --> 00:19:32,550 αλλά το κέλυφος Bourne είναι μόνο sh. 285 00:19:32,550 --> 00:19:34,910 Γιατί; Αυτή ήταν η αρχική κέλυφος. 286 00:19:34,910 --> 00:19:37,770 Ήταν στο κέλυφος, τότε, όχι ένα κέλυφος, 287 00:19:37,770 --> 00:19:41,090 και δεδομένου ότι ήταν το κέλυφος, δεν υπήρχε λόγος να το διακρίνει από ένα άλλο κέλυφος. 288 00:19:41,090 --> 00:19:45,030 Έτσι, γι 'αυτό και έχει αυτό το όνομα και εξακολουθεί να το κάνει. 289 00:19:50,630 --> 00:19:58,990 >> Το κορυφή εδώ είναι μια γραμμή από μια βάση δεδομένων κωδικό πρόσβασης για ένα λογαριασμό που έχω εκεί 290 00:19:58,990 --> 00:20:01,680 σε έναν άλλο υπολογιστή. 291 00:20:01,680 --> 00:20:08,300 Πάω να προσπαθήσει να πάρει αυτό το όνομα, ώστε να μπορείτε να δείτε αυτό το μέρος, στο τέλος, το κέλυφος. 292 00:20:09,720 --> 00:20:15,450 Η βάση δεδομένων κωδικού πρόσβασης κατέχει τα χαρακτηριστικά σύνδεσης για όλους τους χρήστες. 293 00:20:15,450 --> 00:20:20,330 Στην αρχή είναι το όνομα χρήστη, το οποίο μπορείτε να δείτε τα τελευταία 2 γράμματα μου τώρα. 294 00:20:20,330 --> 00:20:23,970 Τα πεδία εδώ χωρίζονται με άνω και κάτω τελεία. 295 00:20:23,970 --> 00:20:28,210 Το τελευταίο πεδίο, όπως μπορείτε να δείτε, είναι bin / tcsh, το κέλυφος. 296 00:20:28,210 --> 00:20:30,230 Αυτό είναι το προσδιοριστικό κέλυφος. 297 00:20:30,230 --> 00:20:33,240 Υπάρχει κάτι ενδιαφέρον εδώ. 298 00:20:33,240 --> 00:20:36,950 Όταν Unix αναπτύχθηκε για πρώτη φορά, υπήρχε μόνο 1 κέλυφος, 299 00:20:36,950 --> 00:20:38,350 οπότε δεν υπήρχε άλλη επιλογή εκεί. 300 00:20:38,350 --> 00:20:45,570 Γιατί, λοιπόν, να επιτρέπουν ένα πεδίο στη βάση δεδομένων κωδικό πρόσβασης για να καθορίσετε ένα κέλυφος; 301 00:20:45,570 --> 00:20:47,920 Δεν ξέρω, αλλά είναι ευτυχές το γεγονός ότι το έκαναν. 302 00:20:47,920 --> 00:20:52,030 Είναι μάλλον δύσκολο να γίνουν αλλαγές στη μορφή της βάσης δεδομένων κωδικού πρόσβασης 303 00:20:52,030 --> 00:20:54,420 επειδή πολλά προγράμματα αφορούν τη μορφή του 304 00:20:54,420 --> 00:20:57,720 και θα πρέπει να ξαναγραφεί. 305 00:20:57,720 --> 00:21:04,130 Είναι μια ευτυχής ή τυχαία εξέλιξη που περιλαμβάνεται αυτό το πεδίο. 306 00:21:04,130 --> 00:21:12,780 Αυτό το είδος της γραμμής κωδικό πρόσβασης αρχείο χρησιμοποιείται σε όλους τους υπολογιστές Unix και Linux, καθόσον γνωρίζω. 307 00:21:12,780 --> 00:21:14,650 Το Mac έχει το δικό του σύστημα. 308 00:21:14,650 --> 00:21:17,810 Έχει πραγματικά ένα κωδικό πρόσβασης αρχείο με τις γραμμές σε αυτή τη μορφή, 309 00:21:17,810 --> 00:21:21,060 αλλά αυτό δεν είναι το σημείο όπου τα χαρακτηριστικά ορίζονται από το χρήστη. 310 00:21:21,060 --> 00:21:24,200 Μια άλλη παρενθετική παρατήρηση εκεί. 311 00:21:36,470 --> 00:21:46,020 >> Αν είστε καλώντας ένα κέλυφος, μπορείτε να καλέσετε ως υπο-κελύφους των υφιστάμενων κελυφών σας. 312 00:21:46,020 --> 00:21:50,480 Έτσι, αν πάω εδώ, ας απαλλαγούμε από αυτά τα πράγματα. 313 00:21:50,480 --> 00:21:53,350 Εδώ είμαι στο C-shell. 314 00:21:56,830 --> 00:22:01,200 Αυτό μεταβλητή, η οποία προσδιορίζει με ακρίβεια το κέλυφος μου, 315 00:22:01,200 --> 00:22:04,300 στην πραγματικότητα δεν είναι πάντα ένας αξιόπιστος τρόπος για να καθοριστεί τι πληρώνω τρέχετε, 316 00:22:04,300 --> 00:22:06,220 αλλά σε αυτή την περίπτωση είναι. 317 00:22:06,220 --> 00:22:08,040 Τι θα συμβεί αν απλά πληκτρολογήστε - 318 00:22:09,970 --> 00:22:12,470 Τώρα είμαι σε Bash. 319 00:22:12,470 --> 00:22:19,540 Μερικά πράγματα που πρόκειται να είναι το ίδιο. ls μου λέει τις εντολές μου. 320 00:22:19,540 --> 00:22:24,500 Αν κάνω μια αναστολή πίσω μου C-shell, ls, το ίδιο. Σωστά; 321 00:22:24,500 --> 00:22:28,890 fg, τα νέα στοιχεία, πίσω στο κέλυφος Bash μου. 322 00:22:28,890 --> 00:22:38,290 pwd, τρέχοντα κατάλογο, πίσω στο C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, διαφορετικό κατάλογο - στην πραγματικότητα δεν είναι ένα διαφορετικό κατάλογο σε αυτή την περίπτωση. 324 00:22:43,180 --> 00:22:45,110 Είναι το ίδιο κατάλογο. 325 00:22:45,110 --> 00:22:50,000 Ας πούμε ότι θέλετε να καλέσετε μια εντολή εδώ: όπου ls. 326 00:22:50,000 --> 00:22:52,140 Τι σημαίνει ότι κάνει; 327 00:22:52,140 --> 00:22:53,670 Μου λέει πού εντολή οι ls, 328 00:22:53,670 --> 00:22:56,670 αυτό που μου δίνει μια λίστα καταλόγου, βρίσκεται στην ls. 329 00:22:56,670 --> 00:23:01,460 Ας πάμε πίσω στο κέλυφος Bash. Ας προσπαθήσουμε το ίδιο πράγμα. 330 00:23:01,460 --> 00:23:05,830 Χμμ, ενδιαφέρον υπάρχει, όπου: η εντολή δεν βρέθηκε. 331 00:23:05,830 --> 00:23:07,400 Γιατί συμβαίνει αυτό; 332 00:23:07,400 --> 00:23:11,570 Η εντολή όπου είναι χτισμένο μέσα στο C-shell. 333 00:23:11,570 --> 00:23:15,630 Αυτό δεν είναι μια εντολή που πρέπει να διαβάζονται στη μνήμη από κάπου αλλού και να εκτελεστεί. 334 00:23:15,630 --> 00:23:20,310 Το C-shell τρέχει μεταφέροντας την εκτέλεση στο πλαίσιο του δικού της κώδικα 335 00:23:20,310 --> 00:23:22,790 και δεν είναι στο κέλυφος Bash. 336 00:23:22,790 --> 00:23:25,710 Έτσι Bash, που δεν έχουν τέτοιο ενσωματωμένη εντολή, αναζητά αυτό, δεν το βρείτε, 337 00:23:25,710 --> 00:23:27,720 και παίρνουμε ένα σφάλμα. 338 00:23:27,720 --> 00:23:32,290 Έτσι, εκεί έχουμε ένα κέλυφος Bash εκτελείται σε ένα C-shell, και καλούμε ότι μια υπο-shell. 339 00:23:32,290 --> 00:23:38,480 Και ακριβώς σε περίπτωση που είστε περίεργοι, φλοιού Bash έχει το δικό του τρόπο για τον εντοπισμό εντολές. 340 00:23:38,480 --> 00:23:42,590 διαγραμμισμένο αναφέρεται στο γεγονός ότι μπορεί να εκτελεστεί ταχύτερα, 341 00:23:42,590 --> 00:23:44,960 που βρέθηκαν πιο γρήγορα. 342 00:23:44,960 --> 00:23:48,610 Αυτό είναι μία από τις βελτιώσεις χτισμένο σε ορισμένα από αυτά τα κελύφη. 343 00:23:50,220 --> 00:23:54,200 >> Κελύφη Bourne τύπου προτιμούνται για τον προγραμματισμό. 344 00:23:54,200 --> 00:23:57,300 Έχουν δομές ελέγχου όπως οι βρόχοι, υπό όρους δηλώσεις, 345 00:23:57,300 --> 00:24:00,240 το είδος των εντολών που μπορείτε να χρησιμοποιήσετε σε γλώσσες προγραμματισμού όπως η C 346 00:24:00,240 --> 00:24:04,190 ή ανεξάρτητα από τη γλώσσα. Ίσως είστε προγραμματισμό σε Java ή οτιδήποτε άλλο. 347 00:24:04,190 --> 00:24:06,460 Κελύφη έχουν γιαυτά. 348 00:24:06,460 --> 00:24:11,790 Τα κελύφη Bourne τύπου, ιδιαίτερα Bash, έχουν περισσότερες 349 00:24:11,790 --> 00:24:15,730 και έχουν σχεδιαστεί με μεγαλύτερη ευελιξία. 350 00:24:15,730 --> 00:24:20,700 Το φλοιού Bash έχει συστοιχίες. Η αρχική Bourne shell δεν το κάνει. 351 00:24:20,700 --> 00:24:26,130 Έτσι ώστε να μπορεί να είναι σημαντικά πλεονεκτική για τον προγραμματισμό. 352 00:24:26,130 --> 00:24:29,810 Το C-shell κάνει πραγματικά έχουν συστοιχίες, αλλά δεν έχει πολλά από αυτά τα άλλα χαρακτηριστικά. 353 00:24:29,810 --> 00:24:33,450 Τα κελύφη Bourne τύπου θα εκτελέσει γρηγορότερα 354 00:24:33,450 --> 00:24:36,520 εάν δεν έχουν τα χαρακτηριστικά που προορίζονται για διαδραστική χρήση. 355 00:24:36,520 --> 00:24:39,340 Θα φορτώσει τα πράγματα κάτω για ένα σκοπό? Αυτό τους φορτώνει τα κάτω για άλλο σκοπό. 356 00:24:39,340 --> 00:24:41,520 Υπάρχει ότι το εμπόριο-off εκεί. 357 00:24:41,520 --> 00:24:44,510 Αυτά τα χαρακτηριστικά τα οποία προορίζονται για τη διαδραστική χρήση 358 00:24:44,510 --> 00:24:46,920 πραγματικά είναι λίγο ή καθόλου χρήση για scripting. 359 00:24:46,920 --> 00:24:52,160 Είναι δυνατόν να χρησιμοποιήσετε ένα διαδραστικό υπο-shell ακριβώς όπως αυτή που ξεκίνησε εκεί 360 00:24:52,160 --> 00:24:57,780 να δοκιμάσουν τις εντολές που σκοπεύετε να χρησιμοποιήσετε σε ένα σενάριο. 361 00:24:57,780 --> 00:25:01,180 Αυτό είναι ό, τι δεν μπορείτε να κάνετε με perl. Μπορείτε να το κάνετε με τα κελύφη. 362 00:25:01,180 --> 00:25:04,850 Ακόμα και οι δομές, όπως για βρόχους και ούτω καθεξής μπορούν να τρέξετε με αλληλεπίδραση. 363 00:25:04,850 --> 00:25:07,000 Είναι μερικές φορές χρήσιμο να λειτουργεί αλληλεπιδραστικά, 364 00:25:07,000 --> 00:25:10,180 αλλά πιο πιθανό εσείς τους χρησιμοποιούν για να αναπτύξουν μια δέσμη ενεργειών. 365 00:25:15,690 --> 00:25:17,400 >> Ψευδώνυμα. 366 00:25:17,400 --> 00:25:21,630 Αυτό πρόκειται να είναι περίπου το C-shell. 367 00:25:23,270 --> 00:25:27,570 Ιστορία μηχανισμό όπου μπορείτε να πάρετε πίσω σε προηγούμενες εντολές 368 00:25:27,570 --> 00:25:30,340 ή μέρη αυτών που έχετε ήδη τρέξει. 369 00:25:30,340 --> 00:25:33,680 Και πάλι, για το C-shell, το κέλυφος Bourne και το κέλυφος Korn έχουν αυτά τα πράγματα, 370 00:25:33,680 --> 00:25:35,620 αλλά εγώ δεν πρόκειται να μπει σε αυτά. 371 00:25:35,620 --> 00:25:40,340 Έτσι, εδώ είναι μερικά χρήσιμα ψευδώνυμα που έχω. 372 00:25:43,100 --> 00:25:44,880 Αντί να πληκτρολογήσετε ls - είναι μια κοινή εντολή - 373 00:25:44,880 --> 00:25:47,620 απλά πληκτρολογήστε l και να σώσει τον εαυτό σας 1 χαρακτήρα. 374 00:25:47,620 --> 00:25:50,600 ls με διάφορες επιλογές, όλοι όσοι εργασία. 375 00:25:50,600 --> 00:25:54,460 Σημειώστε ότι οι ορισμοί αυτοί έχουν εισαγωγικά γύρω τους. 376 00:25:54,460 --> 00:25:57,520 Σε αυτές τις περιπτώσεις, τα εισαγωγικά δεν είναι απαραίτητες. 377 00:25:57,520 --> 00:26:00,100 Αν μπορεί να προσδιορίσει τις ψευδώνυμα χωρίς τα εισαγωγικά, θα εξακολουθούν να εργάζονται. 378 00:26:00,100 --> 00:26:02,910 Συνιστώνται. 379 00:26:02,910 --> 00:26:04,900 Υπάρχουν περιπτώσεις κατά τις οποίες δεν μπορείτε να χρησιμοποιήσετε το απόσπασμα 380 00:26:04,900 --> 00:26:08,050 επειδή θέλετε να συμβεί κάτι που θα αποτρέψει το απόσπασμα. 381 00:26:08,050 --> 00:26:11,210 Μερικές φορές μπορείτε να παραθέσω μέρος του ορισμού, αλλά όχι όλα. 382 00:26:11,210 --> 00:26:17,010 Είναι επίσης γενικά συνιστάται η χρήση μονά εισαγωγικά αντί για διπλά εισαγωγικά. 383 00:26:17,010 --> 00:26:19,750 Διπλά εισαγωγικά έχουν επιπτώσεις στις ορισμούς μεταβλητών, 384 00:26:19,750 --> 00:26:22,950 ιδιαίτερα προκαλώντας τους να αξιολογηθούν παρά τη διακοπή της. 385 00:26:22,950 --> 00:26:25,910 Γιατί να θέλουμε να σταματήσουμε την αξιολόγηση; 386 00:26:25,910 --> 00:26:28,710 Και πώς εισαγωγικά το κάνει αυτό για εμάς; 387 00:26:28,710 --> 00:26:32,600 >> Εδώ είναι μια εντολή που μπορείτε να βρείτε ενδιαφέροντα. 388 00:26:32,600 --> 00:26:35,470 «Ls g *» 389 00:26:35,470 --> 00:26:37,640 g *, όπως ίσως γνωρίζετε, είναι μια έκφραση μπαλαντέρ 390 00:26:37,640 --> 00:26:40,290 για όλα τα ονόματα που αρχίζουν με g. 391 00:26:40,290 --> 00:26:46,410 Αν απλά γράψετε σε μια εντολή ls g *, θα πάρετε μια λίστα με όλα αυτά τα ονόματα σε τρέχοντα κατάλογο μου. 392 00:26:46,410 --> 00:26:50,870 Αν μπορώ να προσδιορίσω ότι ψευδώνυμο όπως είναι εδώ με τα εισαγωγικά, 393 00:26:50,870 --> 00:26:56,990 θα τρέξει την εντολή αυτή στο τρέχοντα κατάλογο σας, όπου είστε το τρέξιμο. 394 00:26:56,990 --> 00:27:01,250 Αλλά αν τρέχετε τον ορισμό ψευδώνυμο χωρίς τα εισαγωγικά, 395 00:27:01,250 --> 00:27:09,620 θα αξιολογήσει την μπαλαντέρ g * όταν τρέχει αυτό τον ορισμό της εντολής. 396 00:27:09,620 --> 00:27:14,400 Έτσι, ο ορισμός του ψευδώνυμο θα ls ακολουθείται από την λίστα των αρχείων στον κατάλογο 397 00:27:14,400 --> 00:27:16,310 στην οποία η εντολή alias εκτελείται, 398 00:27:16,310 --> 00:27:19,180 ανεξάρτητα από το πού σκοπεύετε πραγματικά να εκτελέσετε την εντολή. 399 00:27:19,180 --> 00:27:26,360 Αυτό δεν είναι πολύ χρήση, και τα μονά εισαγωγικά εμποδίζουν την αξιολόγηση του αστερίσκου. 400 00:27:26,360 --> 00:27:30,780 Έτσι, μπορείτε απλά να πάρετε τον ορισμό ον ls g *. 401 00:27:30,780 --> 00:27:35,510 Στη συνέχεια, όταν εκτελείτε το ψευδώνυμο, lgs, τότε βάζει ότι έξω. 402 00:27:35,510 --> 00:27:40,490 Τώρα δεν υπάρχουν εισαγωγικά, και θα αξιολογήσει τον αστερίσκο όταν εκτελείτε την εντολή alias. 403 00:27:40,490 --> 00:27:43,900 Έτσι, αυτό είναι ένα πράγμα. 404 00:27:43,900 --> 00:27:46,590 Διπλά εισαγωγικά θα έχει τα ίδια αποτελέσματα και εδώ, 405 00:27:46,590 --> 00:27:50,580 αλλά υπάρχουν και άλλες περιπτώσεις στις οποίες διπλά εισαγωγικά δεν θα μπορούσε να λειτουργήσει τόσο καλά. 406 00:27:50,580 --> 00:27:52,450 >> Εδώ είναι ένα άλλο. 407 00:27:52,450 --> 00:27:54,270 Ίσως γνωρίζετε την εντολή grep. 408 00:27:54,270 --> 00:28:02,110 Η εντολή grep μπορεί να χρησιμοποιηθεί για να ανιχνεύσει ένα αρχείο για τις γραμμές που έχουν ορισμένες χορδές. 409 00:28:02,110 --> 00:28:10,350 Οπότε ας πάμε εδώ και θα βγείτε από το κέλυφος Bourne μου. 410 00:28:23,570 --> 00:28:25,450 Εντάξει. Εδώ είναι ένα αρχείο. 411 00:28:25,450 --> 00:28:31,490 Ας πούμε ότι είναι grep χορδές abc. Εκεί είναι. 412 00:28:31,490 --> 00:28:37,930 Αν το κάνω grep zddd, παίρνω τίποτα. Εντάξει. 413 00:28:37,930 --> 00:28:40,960 Γι 'αυτό βρίσκει ένα string, αναφέρει? Δεν βρίσκει, δεν το αναφέρετε. 414 00:28:40,960 --> 00:28:44,930 Εξάγει κάθε γραμμή που έχει αυτή η συμβολοσειρά σε αυτό. 415 00:28:44,930 --> 00:28:49,080 Υπάρχουν όλα τα είδη των επιλογών εδώ που μπορείτε να βρείτε στην τεκμηρίωση. 416 00:28:49,080 --> 00:28:52,160 Εδώ είναι ένας τρόπος για να το κάνει. 417 00:28:52,160 --> 00:29:03,290 Τι γίνεται με αυτό το ένα, το ψευδώνυμο grabc «grep abc»; 418 00:29:03,290 --> 00:29:09,000 Αυτό πρόκειται να περιλαμβάνει 1 επιχείρημα, όταν το ψευδώνυμο ορίζεται. 419 00:29:09,000 --> 00:29:26,300 Έτσι, αν το κάνω αυτό εδώ, τώρα αν κάνω grabc, 420 00:29:26,300 --> 00:29:30,620 τώρα το ψευδώνυμο περιλαμβάνει περισσότερα από την απλή εντολή. Έχει, επίσης, το επιχείρημα. 421 00:29:30,620 --> 00:29:32,190 Μέχρι στιγμής, αυτό λειτουργεί. 422 00:29:32,190 --> 00:29:38,590 Έχω μια άλλη εντολή εδώ, αυτή τη φορά, έτσι ώστε αυτές είναι διαφορετικές χορδές εκεί 423 00:29:38,590 --> 00:29:46,790 και δείχνουν ότι αυτό δεν βρείτε τίποτα εκεί, δεδομένου ότι δεν ταιριάζει. 424 00:29:46,790 --> 00:29:56,180 >> Τι γίνεται αν θέλω να συμπεριλάβουν στον ορισμό ψευδώνυμο το αρχείο που Πάω να αναζητήσετε 425 00:29:56,180 --> 00:30:02,970 και θέλω να δώσω ως επιχείρημα για την ψευδώνυμο το string που ψάχνω; 426 00:30:02,970 --> 00:30:08,040 Μπορεί να θέλω να πω abc ως επιχείρημα για το ψευδώνυμο μου, 427 00:30:08,040 --> 00:30:10,870 αλλά το ψευδώνυμο ήδη καθορίσει το αρχείο. 428 00:30:10,870 --> 00:30:15,710 Και αυτό είναι όπου η έκφραση αυτή μπαίνει 429 00:30:20,430 --> 00:30:25,270 Προσέξτε εδώ ότι έχουμε grep ακριβώς όπως πριν. 430 00:30:25,270 --> 00:30:28,130 Έχουμε το αρχείο εδώ, χορδές. 431 00:30:28,130 --> 00:30:35,610 \! ^, Το είδος της μια περίεργη έκφραση, υποθέτω, αν δεν το έχετε δει αυτό πριν. 432 00:30:35,610 --> 00:30:39,920 Θαυμαστικό είναι μέρος του μηχανισμού της ιστορίας C-shell. 433 00:30:39,920 --> 00:30:45,220 Μπορεί να ανακαλέσετε προηγούμενες εντολές, μπορούν να θυμηθούν τα επιχειρήματα για τις εντολές αυτές και ούτω καθεξής. 434 00:30:46,760 --> 00:31:01,570 Ο μηχανισμός ιστορία χρησιμοποιείται ως μέρος του aliasing. 435 00:31:01,570 --> 00:31:07,390 Εάν καθορίσετε μια γραμμή μετά το θαυμαστικό, θα αναφερθώ σε αυτή τη γραμμή στη λίστα ιστορικού, 436 00:31:07,390 --> 00:31:11,910 το οποίο δεν θα πρέπει να πάρει τώρα σε δεδομένου ότι είναι ένα εντελώς άλλο θέμα. 437 00:31:11,910 --> 00:31:16,280 Είναι δυνατόν να προσδιορίζει τμήμα μιας γραμμής. 438 00:31:16,280 --> 00:31:22,950 Έτσι! 3:02 θα είναι το δεύτερο επιχείρημα του αριθμού εντολών 3. 439 00:31:22,950 --> 00:31:30,430 Το καρέ εδώ σε αυτή την έκφραση ξεχωρίζει για το πρώτο επιχείρημα. 440 00:31:30,430 --> 00:31:34,410 Αν δεν δώσετε μια ένδειξη της οποίας εντολή είστε αναφέρεστε, 441 00:31:34,410 --> 00:31:37,300 αναφέρεται στην αμέσως προηγούμενη εντολή, 442 00:31:37,300 --> 00:31:41,990 και το καρέ είναι ένα σύμβολο για το πρώτο επιχείρημα. 443 00:31:41,990 --> 00:31:46,820 Επειδή είναι το καρέ και όχι τον αριθμό, δεν χρειάζεται να χρησιμοποιήσετε το παχύ έντερο, 444 00:31:46,820 --> 00:31:52,660 έτσι! ^ σημαίνει το πρώτο επιχείρημα της προηγούμενης εντολής. 445 00:31:52,660 --> 00:31:55,020 Λίγο μπερδεμένα εδώ. 446 00:31:55,020 --> 00:31:58,450 Σε αυτή την περίπτωση, όταν χρησιμοποιείτε αυτό ως ορισμός ψευδωνύμου, 447 00:31:58,450 --> 00:32:04,650 η αναφορά της ιστορίας παραπέμπει στις εντολές στις οποίες χρησιμοποιείται το ψευδώνυμο. 448 00:32:04,650 --> 00:32:08,470 Έτσι, αυτό θα επιστρέψει 1 διοίκησης, ως επιχείρηση της ιστορίας, 449 00:32:08,470 --> 00:32:11,810 αλλά ως μια λειτουργία ψευδώνυμο αναφέρεται στην εντολή στην οποία θα πρέπει να πληκτρολογήσετε, 450 00:32:11,810 --> 00:32:14,780 λένε, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Έχουμε τα εισαγωγικά εδώ σε αυτό. Ποια είναι η κάθετος για; 452 00:32:20,240 --> 00:32:30,810 Σε αυτή την περίπτωση, όπως και αλλού, εμείς δεν θέλουμε να εκτελέσουμε τον μηχανισμό ιστορία 453 00:32:30,810 --> 00:32:33,680 ενώ προσδιόρισε το ψευδώνυμο. 454 00:32:33,680 --> 00:32:37,900 Αν δεν είχαμε την ανάστροφη κάθετο εκεί, το κέλυφος θα τραβήξει το πρώτο όρισμα 455 00:32:37,900 --> 00:32:41,870 της εντολής δικαίωμα πριν έτρεξε αυτή την εντολή ψευδώνυμο, το οποίο δεν θέλουμε. 456 00:32:41,870 --> 00:32:47,520 Θέλουμε αυτό που θα κατασκευαστούν στο στην εντολή alias να καλέσετε σε ένα επιχείρημα αργότερα. 457 00:32:47,520 --> 00:32:53,550 Απλά εισαγωγικά δεν ξεφεύγουν ένα θαυμαστικό, η αναφορά της ιστορίας. 458 00:32:53,550 --> 00:32:57,450 Ίσως γνωρίζετε η διαφυγή έκφραση σημαίνει να αλλάζει το νόημα της κάτι. 459 00:32:57,450 --> 00:33:00,260 Στην περίπτωση αυτή, αυτό σημαίνει να σταματήσει κάτι από το να έχουν ιδιαίτερη σημασία. 460 00:33:00,260 --> 00:33:03,030 Ιδιαίτερη σημασία θαυμαστικό είναι ιστορία. 461 00:33:03,030 --> 00:33:05,790 Αποδράστε και δεν έχουν αυτό το νόημα. 462 00:33:05,790 --> 00:33:08,080 Αποσπάσματα δεν το κάνουμε αυτό? Backslash κάνει. 463 00:33:08,080 --> 00:33:11,900 Έτσι, είμαστε στην πραγματικότητα, χρησιμοποιώντας 2 επίπεδα διαφυγή εδώ. 464 00:33:23,500 --> 00:33:29,620 Πάω να προχωρήσουμε αυτή την εντολή στο άλλο παράθυρο χωρίς να πληκτρολογήσετε το 465 00:33:29,620 --> 00:33:35,210 με τη χρήση αυτών των λειτουργιών επεξεργασίας, το οποίο μπορείτε να βρείτε χρήσιμες. 466 00:33:40,620 --> 00:33:42,460 Κάτι άλλο εδώ θα σας δείξω. 467 00:33:42,460 --> 00:33:46,730 Αν απλά πληκτρολογήστε το ψευδώνυμο χωρίς επιχειρήματα, σας λέει όλα τα επιχειρήματά σας. 468 00:33:46,730 --> 00:33:48,640 Αυτό είναι ένα μάτσο ψευδώνυμα είχα ήδη εδώ 469 00:33:48,640 --> 00:33:53,400 εκτός από αυτά που έχω χρησιμοποιήσει εδώ σήμερα. 470 00:33:53,400 --> 00:34:00,220 Αλλά αν απλά πληκτρολογήστε το όνομα ενός ψευδωνύμου, μου λέει τι σημαίνει. 471 00:34:00,220 --> 00:34:03,390 Σημειώστε ότι οι τιμές έχουν φύγει και η αντίστροφη κάθετος φύγει. 472 00:34:03,390 --> 00:34:08,620 Αυτή η σειρά εδώ είναι το αποτέλεσμα της εν λόγω ορισμός ψευδωνύμου, 473 00:34:08,620 --> 00:34:12,199 και τώρα έχει μόνο! ^ σε αυτό. 474 00:34:12,199 --> 00:34:19,150 Αυτό πρόκειται να δούμε στις χορδές αρχείο για τίποτα. 475 00:34:19,150 --> 00:34:34,900 Έτσι, αν κάνω grstrings_file χορδές, δεν είχα δώσει τα πάντα για να αναζητήσουν εκεί, 476 00:34:34,900 --> 00:34:37,429 αλλά αυτό που ψάχνει σε χορδές. 477 00:34:37,429 --> 00:34:42,330 Δεν μπόρεσε να βρει τους χορδές λέξη χορδές αρχείο, αλλά δεν βρίσκουν abc. 478 00:34:42,330 --> 00:34:46,770 Και δεν βρίσκουν. 479 00:34:46,770 --> 00:34:52,330 Έτσι, εδώ δίνουμε ένα επιχείρημα που χτυπά στον ορισμό του ψευδωνύμου, 480 00:34:52,330 --> 00:34:55,530 που εισάγεται σε αυτό. 481 00:34:55,530 --> 00:34:58,540 Είναι το μέρος όπου η έκφραση αυτή προέρχεται. 482 00:34:58,540 --> 00:35:00,240 Μπορείτε να χρησιμοποιήσετε περισσότερα από 1. 483 00:35:00,240 --> 00:35:03,170 Το καρέ είναι ένα σύμβολο για το πρώτο επιχείρημα. 484 00:35:03,170 --> 00:35:07,510 Εάν θέλετε να χρησιμοποιήσετε ένα δεύτερο επιχείρημα, τότε θα πω: 2. 485 00:35:07,510 --> 00:35:11,250 Δεν υπάρχει ειδικό σύμβολο για το δεύτερο επιχείρημα. 486 00:35:11,250 --> 00:35:14,790 Και επειδή είστε χρησιμοποιώντας ένα αριθμό, θα πρέπει να χρησιμοποιήσετε το παχύ έντερο. 487 00:35:14,790 --> 00:35:17,220 Υπάρχει, ωστόσο, μια άλλη επιλογή εδώ. 488 00:35:17,220 --> 00:35:21,220 Το σύμβολο του δολαρίου ξεχωρίζει για το τελευταίο επιχείρημα. 489 00:35:21,220 --> 00:35:23,320 Και επειδή αυτό είναι ένα σύμβολο, μπορείτε να παραλείψετε το παχύ έντερο. 490 00:35:23,320 --> 00:35:25,870 Γι 'αυτό θα ήταν το τελευταίο επιχείρημα της λίστας. 491 00:35:25,870 --> 00:35:27,900 Και υπάρχει, επίσης, ότι το ένα. 492 00:35:27,900 --> 00:35:31,380 Asterisk σημαίνει ότι όλοι, έτσι αυτό είναι ο πλήρης κατάλογος των argument της, 493 00:35:31,380 --> 00:35:35,150 και πάλι, μπορείτε να παραλείψετε το παχέος εντέρου, επειδή δεν είναι ένας αριθμός. 494 00:35:36,970 --> 00:35:39,950 Ελπίζω να είστε όλοι παρατηρώντας όλα αυτά. 495 00:35:39,950 --> 00:35:54,100 >> Ο μηχανισμός ιστορία μπορεί να πάει πίσω σε προηγούμενες γραμμές στη λίστα του ιστορικού. 496 00:35:54,100 --> 00:36:01,370 Θα μπορούσατε να το κάνετε αυτό σε έναν ορισμό ψευδώνυμο. 497 00:36:01,370 --> 00:36:02,950 Δεν έχω δει ποτέ γίνει αυτό. 498 00:36:02,950 --> 00:36:05,840 Θα έχει ως αποτέλεσμα το τράβηγμα έξω προηγούμενες εντολές από τη λίστα ιστορικού 499 00:36:05,840 --> 00:36:08,130 όταν εκτελείτε το ψευδώνυμο, το οποίο θα μπορούσε να είναι διαφορετικές εντολές 500 00:36:08,130 --> 00:36:11,240 ανάλογα με το πότε και πού θα το εκτελέσει. 501 00:36:11,240 --> 00:36:14,020 Θεωρητικά μπορεί να θέλετε να τραβήξετε μια τέτοια αναφορά 502 00:36:14,020 --> 00:36:15,900 Απλά για να ξέρετε τι μια προηγούμενη εντολή ήταν. 503 00:36:15,900 --> 00:36:17,280 Δεν έχω δει ποτέ αυτό να συμβεί. 504 00:36:17,280 --> 00:36:19,970 Υποθέτω ότι κάποιος μπορεί να θέλει, αλλά αυτό είναι πολύ απίθανο. 505 00:36:19,970 --> 00:36:26,480 Υπάρχει ένα άλλο πράγμα εδώ. 506 00:36:26,480 --> 00:36:33,060 Αν χρησιμοποιήσετε αυτή την αναφορά ιστορικού τύπου, 507 00:36:33,060 --> 00:36:38,190 τότε μόνο τα επιχειρήματα στα οποία υπάρχει ένα τέτοιο αναφοράς που χρησιμοποιείται. 508 00:36:38,190 --> 00:36:42,180 Εάν έχετε έναν ορισμό ψευδώνυμο που δεν χρησιμοποιεί μια αναφορά ιστορικού τύπου, 509 00:36:42,180 --> 00:36:44,060 αν γίνει μόνο η αρχή της εντολής 510 00:36:44,060 --> 00:36:46,520 και έχετε περαιτέρω επιχειρήματα, τότε οτιδήποτε και αν πληκτρολογήσετε μετά ότι 511 00:36:46,520 --> 00:36:48,450 θα προστεθεί στην εντολή. 512 00:36:48,450 --> 00:36:52,040 Στην περίπτωση αυτή, το παράδειγμα που μόλις έδωσε εκεί, χρησιμοποιήσαμε το πρώτο επιχείρημα? 513 00:36:52,040 --> 00:36:54,610 εμείς δεν χρησιμοποίησε κανένα από τους άλλους. 514 00:36:54,610 --> 00:36:57,960 Εάν άλλα επιχειρήματα είχαν δοθεί στη γραμμή εντολών, δεν θα πρέπει να χρησιμοποιείται. 515 00:36:57,960 --> 00:37:04,630 Έτσι, αν χρησιμοποιείτε την αναφορά ιστορία σε όλα, τότε θα πρέπει να χρησιμοποιήσετε για να πάρετε κανένα επιχείρημα. 516 00:37:04,630 --> 00:37:11,310 >> Υπάρχει ένα άλλο πράγμα εδώ θέλω απλώς να αναφέρω, εν μέρει μέσα σε παρένθεση, 517 00:37:11,310 --> 00:37:15,250 δηλαδή ότι αυτός ο μηχανισμός ιστορία με το θαυμαστικό 518 00:37:15,250 --> 00:37:18,010 πηγαίνει πίσω στο αρχικό C-shell. 519 00:37:18,010 --> 00:37:27,060 Το tcsh εισήγαγε λειτουργίες ιστορία 520 00:37:27,060 --> 00:37:30,910 που χρησιμοποιούν τα είδη των εντολών και έγχορδα από τους εκδότες, 521 00:37:30,910 --> 00:37:33,650 είτε Emacs ή vi. 522 00:37:33,650 --> 00:37:36,430 Η προσωπική μου γνώμη είναι Emacs είναι πολύ ευκολότερο να χρησιμοποιήσει για το σκοπό αυτό 523 00:37:36,430 --> 00:37:39,390 ακόμα κι αν vi χρησιμοποιήσετε για την τακτική επεξεργασία σας. 524 00:37:39,390 --> 00:37:43,900 Υπάρχουν διάφορες Emacs εντολές που έχουν προσαρμοστεί τώρα για την ιστορία. 525 00:37:43,900 --> 00:37:46,410 Έλεγχος P παίρνει την προηγούμενη γραμμή στη λίστα ιστορικού. 526 00:37:46,410 --> 00:37:48,840 Ένας άλλος έλεγχος P θα σας πάρει το ένα πριν από αυτό. 527 00:37:48,840 --> 00:37:50,540 Το επάνω βέλος κάνει το ίδιο πράγμα. 528 00:37:50,540 --> 00:37:54,190 Έλεγχος N παίρνει την επόμενη εντολή αν έχετε ήδη μεταβεί πίσω κάποιους τρόπους. 529 00:37:54,190 --> 00:37:55,880 Κάτω βέλος κάνει αυτό πάρα πολύ. 530 00:37:55,880 --> 00:38:00,480 Μπορείτε να μετακινήσετε τα αριστερά προς τα δεξιά με τα βελάκια και διάφορα άλλα πράγματα. 531 00:38:00,480 --> 00:38:02,390 Αυτό μπορεί να κάνει χρήση του μηχανισμού ιστορίας 532 00:38:02,390 --> 00:38:05,070 πολύ πιο εύκολο από ό, τι χρησιμοποιώντας τη σύνταξη θαυμαστικό, 533 00:38:05,070 --> 00:38:07,930 αλλά δεν θέλετε να χρησιμοποιήσετε ότι σε μια ορισμός ψευδωνύμου. 534 00:38:17,780 --> 00:38:20,020 Θα πάμε πάνω από ότι κάποια άλλη φορά. 535 00:38:24,300 --> 00:38:25,810 >> Μεταβλητές. 536 00:38:26,880 --> 00:38:29,510 Ξέρετε τι είναι οι μεταβλητές στις γλώσσες προγραμματισμού. 537 00:38:29,510 --> 00:38:31,680 Τα κελύφη τους έχουν επίσης. 538 00:38:31,680 --> 00:38:37,350 Το C-shell χρησιμοποιεί την εντολή που να εκχωρήσει μεταβλητές, 539 00:38:37,350 --> 00:38:41,360 έτσι, ώστε να θέτει τη μεταβλητή α με την αξία του β - 540 00:38:41,360 --> 00:38:46,390 όπως είπα, ένα άχρηστο ορισμό, αλλά μια εικόνα για το πώς αυτό χρησιμοποιείται. 541 00:38:48,790 --> 00:38:52,410 Η εντολή set θα δημιουργήσει μια μεταβλητή, αν δεν υπάρχει ήδη. 542 00:38:55,270 --> 00:39:02,490 Οι παράμετροι θέσης για τα προγράμματα κελύφους μπορούν να θεωρηθούν μεταβλητές, 543 00:39:02,490 --> 00:39:10,750 αλλά η χρήση τους και οι κανόνες τους είναι κάπως διαφορετική. 544 00:39:10,750 --> 00:39:14,320 Δεν μπορείτε να ορίσετε μια τιμή σε $ 1, κατά τη διάρκεια ενός σεναρίου. 545 00:39:14,320 --> 00:39:18,340 Θα πρέπει να ορίσετε μια νέα μεταβλητή για το σκοπό αυτό, εάν κάποιοι από εσάς ήθελαν να. 546 00:39:23,000 --> 00:39:28,470 Πληκτρολογήστε που χωρίς επιχειρήματα και μπορείτε να πάρετε μια λίστα με όλες τις τρέχουσες καθορισμένες μεταβλητές. 547 00:39:28,470 --> 00:39:34,220 Και ας πάμε πάνω στο άλλο κέλυφος μου εδώ και να δούμε τι έχουμε, αν το κάνουμε αυτό. 548 00:39:34,220 --> 00:39:37,110 Αρκετά μακρύ κατάλογο εκεί, σωστά; 549 00:39:37,110 --> 00:39:40,990 Μετακινηθείτε προς τα πάνω λίγο. Κοιτάξτε όλα αυτά. 550 00:39:40,990 --> 00:39:44,330 Μερικά από αυτά τα πράγματα ορίζονται αυτόματα από το κέλυφος. 551 00:39:44,330 --> 00:39:49,320 Το κέλυφος δημιουργεί τη μεταβλητή και του δίνει μια τιμή. 552 00:39:49,320 --> 00:39:52,730 Μερικά από αυτά ορίζονται από το κέλυφος, αλλά στη συνέχεια επαναπροσδιοριστεί από τον χρήστη 553 00:39:52,730 --> 00:39:54,820 σύμφωνα με τις προτιμήσεις του. 554 00:39:54,820 --> 00:39:59,110 Και ορισμένα από αυτά έχουν δημιουργηθεί από το χρήστη ανάλογα με το τι κάνει εκείνη την ημέρα. 555 00:39:59,110 --> 00:40:01,880 Αυτό είναι ακριβώς που χωρίς επιχειρήματα. 556 00:40:06,920 --> 00:40:10,050 Υπάρχει ένα περίεργο χαρακτηριστικό εδώ από αυτό το πράγμα. 557 00:40:10,050 --> 00:40:17,980 Πρέπει να υπάρχουν είτε δεν υπάρχουν κενά μεταξύ των ίσον και το όνομα της μεταβλητής 558 00:40:17,980 --> 00:40:23,700 και η αξία ή χώρους και στις δύο πλευρές του το σύμβολο του ίσον, 559 00:40:23,700 --> 00:40:28,940 όπως σε αυτό το ένα. 560 00:40:35,620 --> 00:40:41,340 Αυτό δεν θα λειτουργήσει, και αυτό είναι πραγματικά μια έγκυρη εντολή 561 00:40:41,340 --> 00:40:43,390 αλλά δεν θα κάνει ό, τι σκοπεύετε. 562 00:40:43,390 --> 00:40:50,070 Η εντολή αυτή θα λειτουργήσει, γιατί αν απλά λένε που και ένα όνομα μεταβλητής 563 00:40:50,070 --> 00:40:54,890 με κανένα ίσον ή να ορίσετε και ένα όνομα μεταβλητής με ένα ίσον και δεν έχει αξία, 564 00:40:54,890 --> 00:40:57,770 θα θέσει τη μεταβλητή με μηδενική αξία. 565 00:40:57,770 --> 00:41:00,120 Έτσι ορίσετε ένα = είναι μια έγκυρη εντολή. 566 00:41:00,120 --> 00:41:04,370 Η εντολή set να ορίσετε περισσότερα από 1 μεταβλητή για την ίδια γραμμή. 567 00:41:04,370 --> 00:41:11,240 Έτσι, αυτή η εντολή εδώ έχει ως αποτέλεσμα τον καθορισμό τόσο α και β σε null τιμές. 568 00:41:11,240 --> 00:41:13,470 Μάλλον δεν είναι ό, τι θέλετε. 569 00:41:13,470 --> 00:41:17,940 Αυτός εδώ, που αναφέρθηκε προηγουμένως, θα οδηγήσει σε ένα σφάλμα 570 00:41:17,940 --> 00:41:21,270 επειδή = b δεν είναι μια έγκυρη έκφραση. 571 00:41:21,270 --> 00:41:23,680 Το όνομα μιας μεταβλητής δεν μπορεί να αρχίσει με την ένδειξη ίσων. 572 00:41:26,760 --> 00:41:29,080 Και υπάρχουν αυτά τα πράγματα περαιτέρω εδώ. 573 00:41:29,080 --> 00:41:36,820 Τα ερωτηματικά χρησιμοποιήθηκαν για την επιλογή επιχειρήματα από τις γραμμές της ιστορίας, 574 00:41:36,820 --> 00:41:41,210 και μπορούν να χρησιμοποιηθούν - και δεν είχα πάει στο παρελθόν - να τροποποιήσει αυτά τα πράγματα. 575 00:41:41,210 --> 00:41:44,480 Μπορούν επίσης να χρησιμοποιηθούν για να τροποποιήσουν τις μεταβλητές κελύφους. 576 00:41:44,480 --> 00:41:49,050 Αυτός εδώ, το $ a, έχει μια αξία. 577 00:41:49,050 --> 00:41:55,040 : R θα απογειωθεί παράταση. 578 00:41:55,040 --> 00:41:57,200 Η παράταση δεν θα είναι τίποτα μετά από μια τελεία, 579 00:41:57,200 --> 00:41:59,200 μια τελεία και οτιδήποτε μετά από αυτήν, στο τέλος ενός αρχείου, 580 00:41:59,200 --> 00:42:03,230 μόνο στο τέλος της λίστας μετά την τελευταία κάθετο. 581 00:42:03,230 --> 00:42:05,480 Έτσι έχω εδώ. 582 00:42:05,480 --> 00:42:10,730 α είναι ότι. Θα πέσει το. O. 583 00:42:10,730 --> 00:42:16,510 Εάν δεν υπάρχει παράταση, μόνο τα ονόματα διαδρομών μετά την τελευταία κάθετο, δεν θα έχει κανένα αποτέλεσμα. 584 00:42:16,510 --> 00:42:27,480 a: h, ότι η μεταβλητή έκφραση, θα απογειωθεί το τελευταίο στοιχείο της λίστας καταλόγου, 585 00:42:27,480 --> 00:42:29,660 πάλι, μόνο μετά την τελευταία κάθετο. 586 00:42:29,660 --> 00:42:33,160 Έτσι, / a / b / c γίνεται / a / b, 587 00:42:33,160 --> 00:42:38,870 αλλά αυτό έχει αλλάξει, επειδή το στοιχείο μετά τον κατάλογο είναι null. 588 00:42:38,870 --> 00:42:43,070 Εδώ υπάρχει κάτι το οποίο επίσης θέλω να τονίσω. 589 00:42:43,070 --> 00:42:46,770 Οι προσδιορισμοί αυτοί δεν ψάχνουν για την ύπαρξη αυτών των αρχείων. 590 00:42:46,770 --> 00:42:48,910 Θα εξετάσουμε μόνο για έγχορδα. 591 00:42:48,910 --> 00:42:54,520 Τα προϊόντα αυτά προορίζονται να χειραγωγήσουν τα ονόματα αρχείων, ονόματα καταλόγων, 592 00:42:54,520 --> 00:42:57,520 αλλά μπορεί να χρησιμοποιηθεί σε οποιαδήποτε σειρά, ακόμη και αν δεν είναι ένα όνομα αρχείου. 593 00:42:57,520 --> 00:42:58,920 Και δεν φαίνονται για την ύπαρξη, 594 00:42:58,920 --> 00:43:03,550 οπότε αν δεν υπάρχει τέτοιο αρχείο, / a / b / c, αυτό θα συνεχίσει να λειτουργεί. 595 00:43:03,550 --> 00:43:06,930 Είτε πρόκειται για οποιαδήποτε χρήση είναι ένα άλλο ζήτημα, αλλά θα συνεχίσει να λειτουργεί. 596 00:43:06,930 --> 00:43:12,850 Οι μεταβλητές είναι διαφορετικές στα κελύφη Bourne. Θα φτάσουμε σε αυτό αργότερα. 597 00:43:12,850 --> 00:43:18,240 Σύμβολο του δολαρίου μπορεί να δραπετεύσει ακριβώς όπως το θαυμαστικό και τον αστερίσκο. 598 00:43:18,240 --> 00:43:21,760 Σύμβολο του δολαρίου μπορεί να δραπετεύσει με μια ανάστροφη κάθετο ή τα μονά εισαγωγικά. 599 00:43:21,760 --> 00:43:24,790 Διπλά εισαγωγικά έχουν την περίεργη επίδραση σε όλους τους φλοιούς 600 00:43:24,790 --> 00:43:28,690 αναγκάζοντας την αξιολόγηση του δολαρίου υπογράψει μεταβλητή έκφραση. 601 00:43:28,690 --> 00:43:31,960 Έτσι, αν είναι να διαφύγει ένας τρόπος, τα διπλά εισαγωγικά μπορεί να έχει ως αποτέλεσμα 602 00:43:31,960 --> 00:43:34,380 προκαλώντας της να αξιολογούνται έτσι κι αλλιώς. 603 00:43:34,380 --> 00:43:37,090 Αυτή είναι μια μικρή σύγχυση. 604 00:43:37,090 --> 00:43:43,740 Εάν υπάρχουν πολλαπλά επίπεδα της απόδρασης, όπως μονά εισαγωγικά μέσα σε διπλά εισαγωγικά 605 00:43:43,740 --> 00:43:46,770 ή διπλά εισαγωγικά μέσα σε μονά εισαγωγικά, θα πρέπει να δοκιμάσετε για να δούμε τι θα συμβεί 606 00:43:46,770 --> 00:43:49,520 σε μια μεταβλητή, αν είστε με τη χρήση ενός. 607 00:43:49,520 --> 00:43:53,410 Αυτές οι 2 περιπτώσεις - διπλό μέσα ενιαία, ενιαίο εσωτερικό του διπλού - 608 00:43:53,410 --> 00:43:55,980 δεν είναι απαραίτητο να σας δώσει το ίδιο αποτέλεσμα. 609 00:44:02,520 --> 00:44:05,600 Οι μεταβλητές περιβάλλοντος, δεσμεύεται μεταβλητές C-shell. 610 00:44:05,600 --> 00:44:08,340 Μεταβλητές περιβάλλοντος είναι επίσης μεταβλητές στην C-κέλυφος, 611 00:44:08,340 --> 00:44:11,250 και είναι επίσης μεταβλητές σε άλλα κελύφη πάρα πολύ. 612 00:44:11,250 --> 00:44:15,230 Στην C-κέλυφος, που είναι ξεχωριστές δέσμες. 613 00:44:15,230 --> 00:44:18,130 Τα πράγματα που έλεγα πριν είναι σχετικά με τις μεταβλητές κελύφους. 614 00:44:18,130 --> 00:44:21,300 Οι μεταβλητές περιβάλλοντος είναι ένα ξεχωριστό σύνολο μεταβλητών 615 00:44:21,300 --> 00:44:28,650 με την εξαίρεση των αρκετών μεταβλητών που καλούμε δεσμευμένο μεταβλητές, 616 00:44:28,650 --> 00:44:30,640 που είναι πολύ σημαντικό και θα φτάσουμε σε αυτά αργότερα. 617 00:44:30,640 --> 00:44:34,950 Οι μεταβλητές περιβάλλοντος περάσει αυτόματα στην 618 00:44:34,950 --> 00:44:41,800 με κοχύλια ή τις εντολές που εκτελούνται από το κέλυφος σας. 619 00:44:41,800 --> 00:44:46,220 Τα άλλα πράγματα που δεν είναι. Οι μεταβλητές κελύφους, τα ψευδώνυμα δεν είναι. Οι μεταβλητές περιβάλλοντος είναι. 620 00:44:46,220 --> 00:44:48,630 Γι 'αυτό καλούμε τους μεταβλητές περιβάλλοντος, 621 00:44:48,630 --> 00:44:55,030 η ιδέα είναι ότι το περιβάλλον εκτείνεται πέρα ​​από απλά τρέχον κέλυφος σας. 622 00:44:55,030 --> 00:45:00,510 Μπορούν να χρησιμοποιηθούν για να καθορίσουν τα πράγματα για τις εντολές. 623 00:45:00,510 --> 00:45:05,470 Εδώ είναι ένα παράδειγμα. PRINTER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Και οι δύο από αυτές τις μεταβλητές μπορεί να καθορίσει έναν εκτυπωτή που μια εντολή θα χρησιμοποιήσετε για να εκτυπώσετε τα πράγματα. 625 00:45:12,270 --> 00:45:16,500 Εάν έχετε πολλούς εκτυπωτές γύρω, ίσως να θέλετε να βάλετε αυτό που σας αρέσει. 626 00:45:16,500 --> 00:45:21,320 Ο λόγος που έχουμε 2 μεταβλητές είναι ότι διαφορετικά σύνολα εντολών γράφτηκαν 627 00:45:21,320 --> 00:45:23,870 χρήση αυτών των διαφορετικών μεταβλητών. 628 00:45:23,870 --> 00:45:25,910 Μπορείτε να τους δώσει διαφορετικές τιμές. 629 00:45:25,910 --> 00:45:28,860 Το πιο πιθανό είναι ότι θα τους δώσει και τα δύο την ίδια αξία. 630 00:45:28,860 --> 00:45:35,840 Αυτά τα πράγματα λειτουργούν, διότι οι εντολές που κάνουν την εκτύπωση 631 00:45:35,840 --> 00:45:40,740 είχαν προγραμματιστεί να εξετάσει τις τιμές αυτών των μεταβλητών. 632 00:45:42,200 --> 00:45:46,150 Εάν ένα πρόγραμμα δεν γράφτηκαν με αυτόν τον τρόπο, αν γράφτηκαν για να κάνουν κάτι άλλο, 633 00:45:46,150 --> 00:45:48,280 η μεταβλητή θα ήταν άνευ σημασίας. 634 00:45:48,280 --> 00:45:52,530 Έτσι, το λειτουργικό σύστημα δεν ψάχνει για αυτές τις μεταβλητές 635 00:45:52,530 --> 00:45:55,210 κάθε φορά που σας παραπέμψει σε έναν εκτυπωτή. 636 00:45:55,210 --> 00:45:59,090 Μια εντολή που κάνει την εκτύπωση ψάχνει για αυτές τις μεταβλητές, εάν είναι προγραμματισμένο με αυτόν τον τρόπο. 637 00:46:11,030 --> 00:46:15,240 Αυτές οι μεταβλητές ορίζονται συχνά με τα αρχεία ρύθμισης 638 00:46:15,240 --> 00:46:19,440 αλλά όχι απαραίτητα. 639 00:46:19,440 --> 00:46:21,050 Μπορείτε να ορίσετε την γραμμή εντολών. 640 00:46:21,050 --> 00:46:24,090 Μπορούν να οριστούν σε μια εντολή. 641 00:46:24,090 --> 00:46:28,740 Μια εντολή που τρέχει κάτι θα μπορούσε να έχει τη δική της επιλογή των μεταβλητών - 642 00:46:28,740 --> 00:46:32,390 μεταβλητές που είναι μοναδικά για ένα συγκεκριμένο πακέτο λογισμικού, για παράδειγμα. 643 00:46:32,390 --> 00:46:36,740 Θα πρέπει να ορίζεται όταν εκτελείτε αυτό το πακέτο. 644 00:46:39,690 --> 00:46:42,680 Πώς αυτές οι μεταβλητές που περνάνε σε μια υπο-shell; 645 00:46:42,680 --> 00:46:48,210 Όταν μια υπο-shell είναι γραμμένο, δεν γράφουν στην εν λόγω περιοχή. 646 00:46:48,210 --> 00:46:53,260 Η περιοχή της υπο-κέλυφος που είναι αφιερωμένο στις μεταβλητές περιβάλλοντος 647 00:46:53,260 --> 00:46:56,450 Δεν είναι γραμμένο από τον υπο-shell? είναι γραμμένο από την αντιγραφή. 648 00:46:56,450 --> 00:47:00,530 Όταν εκτελείτε μια συνηθισμένη εντολή, όπως οι εντολές για να εκτυπώσετε ή οτιδήποτε άλλο, 649 00:47:00,530 --> 00:47:03,840 θα ξεκινήσει με τη δημιουργία ενός νέου κελύφους. 650 00:47:03,840 --> 00:47:06,190 Το κέλυφος δημιουργεί ένα κέλυφος και στη συνέχεια αντικαθιστά μέρος του 651 00:47:06,190 --> 00:47:08,800 με την εντολή που τρέχετε, η οποία είναι μια μικρή σύγχυση, 652 00:47:08,800 --> 00:47:10,740 αλλά αυτό είναι το πώς αυτές οι εντολές παίρνουν τις μεταβλητές περιβάλλοντος 653 00:47:10,740 --> 00:47:14,890 ότι στη συνέχεια αναφέρονται σε αργότερα. 654 00:47:21,920 --> 00:47:28,010 Η εντολή εδώ για τον ορισμό της μεταβλητής setenv. 655 00:47:28,010 --> 00:47:36,470 Αυτό είναι το πώς μπορείτε να ορίσετε. Είναι 3 στοιχεία: setenv, μεταβλητή, αξία. 656 00:47:36,470 --> 00:47:44,710 Αν απλά δεν setenv χωρίς επιχειρήματα, τι θα πάρετε; 657 00:47:47,220 --> 00:47:48,810 Ένας κατάλογος όλων αυτών των μεταβλητών. 658 00:47:48,810 --> 00:47:53,190 Και πάλι, αυτό είναι ένα ωραίο μακρύ κατάλογο και σε αυτή την περίπτωση, όπως και στις άλλες, 659 00:47:53,190 --> 00:47:57,320 αυτές οι μεταβλητές καθορίζονται σε μεγάλο βαθμό από τη λειτουργία της σύνδεσής μου από το ίδιο το κέλυφος 660 00:47:57,320 --> 00:47:59,740 και όχι από οτιδήποτε έκανα. 661 00:47:59,740 --> 00:48:03,580 Υπάρχει μια άλλη εντολή εδώ, printenv. 662 00:48:07,520 --> 00:48:10,340 Αυτό εκτυπώνει επίσης το περιβάλλον. 663 00:48:10,340 --> 00:48:15,240 Παρατηρήστε αυτό το τελευταίο πράγμα εδώ, EDITOR = vi. 664 00:48:15,240 --> 00:48:21,120 Αυτό λέει ότι αν είμαι με τη χρήση κάτι που απαιτεί ένα πρόγραμμα επεξεργασίας 665 00:48:21,120 --> 00:48:25,530 και δεν καθορίσετε ένα πρόγραμμα επεξεργασίας και μου δίνει την επιλογή, μπορεί να μου δώσει vi. 666 00:48:25,530 --> 00:48:37,280 Τι θα συμβεί αν κάνω printenv ΕΠΙΜΕΛΕΙΑ; Μου λέει τι είναι. 667 00:48:37,280 --> 00:48:41,340 Ακριβώς πριν από αυτό, υπήρχε μια μεταβλητή, ΛΙΓΟΤΕΡΟ. 668 00:48:41,340 --> 00:48:46,040 Αυτές είναι οι επιλογές προεπιλογές σας όταν τρέχω το λιγότερο εντολή, 669 00:48:46,040 --> 00:48:49,360 η οποία εμφανίζει τα αρχεία. 670 00:48:49,360 --> 00:48:55,910 Έτσι, αν το κάνω αυτό, printenv μπορεί να πάρει 1 ή 0 επιχείρημα επιχειρήματα, 671 00:48:55,910 --> 00:48:58,070 όχι περισσότερο από 1. 672 00:49:01,800 --> 00:49:05,690 Υπάρχουν και άλλες εντολές, επίσης, αλλά εμείς δεν πρόκειται να μπει σε όλα αυτά τα σήμερα. 673 00:49:05,690 --> 00:49:11,010 Θυμηθείτε ότι οι τροποποιητές για τις μεταβλητές κελύφους, όπως: h, 674 00:49:11,010 --> 00:49:14,350 το οποίο θα μειωθεί το τελευταίο στοιχείο της διαδρομή, 675 00:49:14,350 --> 00:49:17,950 ή: r, το οποίο θα μειωθεί παράταση. 676 00:49:17,950 --> 00:49:23,110 Όσοι τώρα ισχύουν για τις μεταβλητές περιβάλλοντος πάρα πολύ. Δεν χρησιμοποιείται για να. 677 00:49:23,110 --> 00:49:24,960 Χρησιμοποιείται για να είναι ότι δεν θα μπορούσε να τροποποιηθεί. Τώρα μπορεί να είναι. 678 00:49:24,960 --> 00:49:29,190 Είναι μία από τις προόδους με τις εξελίξεις των κελυφών όλα αυτά τα χρόνια. 679 00:49:29,190 --> 00:49:35,620 Έλεγα ότι τα κελύφη ως μέρος των περιβαλλόντων 680 00:49:35,620 --> 00:49:43,040 και οι μεταβλητές κελύφους στο C-shell είναι, με ορισμένες εξαιρέσεις, διαφορετικές ομάδες. 681 00:49:43,040 --> 00:49:46,790 Μπορείτε να δημιουργήσετε μια μεταβλητή περιβάλλοντος και μια μεταβλητή του κελύφους με το ίδιο όνομα. 682 00:49:46,790 --> 00:49:49,220 Θα είναι διαφορετικές μεταβλητές? Μπορούν να έχουν διαφορετικές τιμές. 683 00:49:49,220 --> 00:49:53,090 Η αλλαγή της τιμής του ενός δεν θα αλλάξει την αξία του άλλου. 684 00:49:53,090 --> 00:49:58,070 Αυτές οι μεταβλητές αξιολογήθηκαν όλα με το σύμβολο του δολαρίου - $ a, $ οτιδήποτε. 685 00:49:58,070 --> 00:50:02,340 Έτσι τι εάν έχετε αυτό; Ξέρετε ποια θα πάρει; 686 00:50:02,340 --> 00:50:04,520 Στις δοκιμές μου, πήρα τη μεταβλητή του κελύφους, 687 00:50:04,520 --> 00:50:07,240 αλλά αυτό δεν έχει αποδειχθεί και δεν μπορείτε να βασιστείτε σε αυτό. 688 00:50:07,240 --> 00:50:10,270 Έτσι, σας ζητώ, είναι η δημιουργία κέλυφος και μεταβλητές περιβάλλοντος 689 00:50:10,270 --> 00:50:13,490 με τα ίδια ονόματα είναι μια καλή ιδέα; Όχι Εντάξει. 690 00:50:13,490 --> 00:50:17,460 Ποιες είναι αυτές οι σημαντικές εξαιρέσεις στις οποίες οι μεταβλητές για το περιβάλλον και το κέλυφος 691 00:50:17,460 --> 00:50:19,860 συνδέονται μεταξύ τους; 692 00:50:19,860 --> 00:50:27,470 Υπάρχουν αυτά τα 4. 693 00:50:32,030 --> 00:50:35,510 Κεφαλαίο γράμμα TERM μεταβλητής περιβάλλοντος, 694 00:50:35,510 --> 00:50:41,540 κέλυφος μεταβλητής διάρκειας με μικρά γράμματα, το είδος της εξομοίωσης τερματικού. 695 00:50:41,540 --> 00:50:47,430 Είμαι ακριβώς πρόκειται να πάει πέρα ​​από εδώ και θα πάω να κάνω echo, μια χρήσιμη εντολή εδώ, 696 00:50:47,430 --> 00:50:52,560 $ $ TERM όρο. Και εκεί. 697 00:50:52,560 --> 00:51:00,570 xterm είναι ένας τύπος τερματικού για τα παράθυρα που εμφανίζονται στο System x παράθυρο. 698 00:51:00,570 --> 00:51:04,330 xterm-χρώμα είναι μια παραλλαγή που που επιτρέπει διαφορετικά χρώματα. 699 00:51:04,330 --> 00:51:06,580 Γιατί ορίζουμε αυτά; Τι είναι αυτό καλό για? 700 00:51:06,580 --> 00:51:09,740 Οι εντολές που αναδιατάξετε την οθόνη, όπως το επεξεργαστή 701 00:51:09,740 --> 00:51:13,680 στείλετε συγκεκριμένες αλληλουχίες, που ονομάζονται ακολουθίες διαφυγής, 702 00:51:13,680 --> 00:51:18,160 σε ένα τερματικό ή ένα παράθυρο για να αναδιατάξετε και ούτω καθεξής. 703 00:51:18,160 --> 00:51:20,990 Αυτές οι αλληλουχίες είναι διαφορετικές για διάφορους τύπους τερματικών. 704 00:51:20,990 --> 00:51:23,100 Αυτό το ποια να χρησιμοποιήσει λέει. 705 00:51:23,100 --> 00:51:25,900 Μερικές φορές υπάρχουν ζητήματα εκεί. 706 00:51:25,900 --> 00:51:28,600 Μπορεί να θέλετε να το αλλάξουμε αυτό. 707 00:51:28,600 --> 00:51:30,780 Αν τα πράγματα δεν λειτουργούν, μερικές φορές ο τύπος τερματικού έχει οριστεί λάθος, 708 00:51:30,780 --> 00:51:36,440 ενδέχεται να μπορείτε να το διορθώσετε με τον επαναπροσδιορισμό του όρου μεταβλητή. 709 00:51:36,440 --> 00:51:43,420 Σε αυτές τις περιπτώσεις, η αλλαγή μία μεταβλητή, η μεταβλητή περιβάλλοντος ή την μεταβλητή κελύφους, 710 00:51:43,420 --> 00:51:45,970 πρέπει να αλλάξει το άλλο. 711 00:51:45,970 --> 00:51:50,970 Έχω ανακαλύψει μέσα από την εμπειρία ότι η αλλαγή TERM με κεφαλαία γράμματα 712 00:51:50,970 --> 00:51:54,060 δεν αλλάζει πάντα κέλυφος μεταβλητής διάρκειας με μικρά γράμματα. 713 00:51:54,060 --> 00:51:55,550 Αυτό είναι ένα bug. 714 00:51:55,550 --> 00:51:59,400 Δεν ξέρω αν αυτό είναι πάντα αλήθεια. Τις περισσότερες φορές δεν είναι αλήθεια, αλλά μπορεί να είναι. 715 00:51:59,400 --> 00:52:02,490 Έτσι, αν κάνετε μια αλλαγή, απλά ελέγξτε ότι έξω. 716 00:52:02,490 --> 00:52:05,830 Δεν είναι συχνά ότι θα πρέπει να αλλάξετε αυτήν την τιμή, αλλά κάποια στιγμή που κάνετε. 717 00:52:05,830 --> 00:52:08,260 Μεταβλητή περιβάλλοντος ΧΡΗΣΤΗ. 718 00:52:08,260 --> 00:52:12,070 Και πάλι, μεταβλητή περιβάλλοντος με κεφαλαία γράμματα, πληρώνω μεταβλητή με μικρά γράμματα. 719 00:52:12,070 --> 00:52:13,710 Αυτό είναι το όνομα χρήστη σας. 720 00:52:13,710 --> 00:52:16,730 Είναι μόνο σε πολύ εξαιρετικές περιπτώσεις 721 00:52:16,730 --> 00:52:18,420 ότι θα θέλατε να το αλλάξουμε αυτό. 722 00:52:18,420 --> 00:52:22,350 Αν το όνομα χρήστη σας είναι κάποιος άλλος, μπορεί να ρίξει όλα τα είδη των πραγμάτων μακριά. 723 00:52:22,350 --> 00:52:26,040 Home κατάλογο, τον κατάλογο home του χρήστη. 724 00:52:26,040 --> 00:52:28,060 Και πάλι, δεν θα θέλατε να το αλλάξουμε αυτό. 725 00:52:28,060 --> 00:52:32,260 Ανακοίνωση σε όλες αυτές τις περιπτώσεις και αυτό που είμαστε για να καλύψει τη μεταβλητή διαδρομή, 726 00:52:32,260 --> 00:52:37,070 μεταβλητή περιβάλλοντος είναι με κεφαλαία γράμματα και η δεσμευμένη μεταβλητή κελύφους είναι με μικρά γράμματα. 727 00:52:37,070 --> 00:52:39,240 Εάν αλλάξετε ένα, θα πρέπει να αλλάξετε το άλλο. 728 00:52:39,240 --> 00:52:45,960 Αυτό το είδος των δεσμευτικών δεν μπορεί να αποδειχθεί, όπως δεν μπορεί να δεσμεύσει 2 μεταβλητές, 729 00:52:45,960 --> 00:52:50,570 εκτός από αυτά 4, και η σύνδεση σε αυτές τις μεταβλητές δεν μπορεί να αναιρεθεί, 730 00:52:50,570 --> 00:52:52,090 δεν μπορείτε να τους χωρίσει. 731 00:52:52,090 --> 00:52:55,820 Έτσι είναι αυτά τα 4 ζεύγη μεταβλητών δεσμεύεται. 732 00:52:55,820 --> 00:52:59,020 Τα πάντα θα είναι. Κανένας άλλοι θα είναι. 733 00:52:59,020 --> 00:53:05,720 Επιπλέον, θα ήταν δυνατόν να δημιουργηθούν οι μεταβλητές με τα ίδια ονόματα 734 00:53:05,720 --> 00:53:07,780 των απέναντι τύπων. 735 00:53:07,780 --> 00:53:11,600 Θα μπορούσατε να κάνετε ένα κέλυφος μεταβλητής διάρκειας με μικρά γράμματα 736 00:53:11,600 --> 00:53:14,990 ή μια μεταβλητή περιβάλλοντος TERM με κεφαλαία γράμματα. 737 00:53:14,990 --> 00:53:19,040 Οι μεταβλητές αυτές θα είναι ανεξάρτητες από αυτά τα ζεύγη μεταβλητών 738 00:53:19,040 --> 00:53:20,780 και θα είναι ανεξάρτητες μεταξύ τους. 739 00:53:20,780 --> 00:53:23,780 Δεν μπορώ να φανταστώ γιατί θα το κάνουμε αυτό αν δεν θέλετε να μπερδεύουν τους ανθρώπους. 740 00:53:24,600 --> 00:53:29,730 Αυτός εδώ, μεταβλητή πορεία, αυτό είναι ένα πραγματικά σημαντικό. 741 00:53:29,730 --> 00:53:35,550 Ένα άλλο πράγμα εδώ είναι ότι μπορεί να υπάρχουν περιπτώσεις 742 00:53:35,550 --> 00:53:40,430 των μεταβλητών που έχει αντιστοιχιστεί με παρόμοιες ονομασίες που δεν συνδέονται μεταξύ τους. 743 00:53:40,430 --> 00:53:45,000 Μπορεί να υπάρχουν μεταβλητές, SHELL και το κέλυφος, με κεφαλαία και μικρά γράμματα. 744 00:53:45,000 --> 00:53:48,300 Με βάση αυτό το όνομα, δεν ξέρω αν αυτό είναι μία μεταβλητή κέλυφος 745 00:53:48,300 --> 00:53:51,580 ή μεταβλητή περιβάλλοντος, και από όπου και αν δεν είναι συνδεδεμένα μεταξύ τους. 746 00:53:51,580 --> 00:53:55,300 Έτσι, αυτό το είδος του ζεύγη ονόματα δεν συνεπάγεται δεσμεύεται μεταβλητές. 747 00:53:55,300 --> 00:53:58,830 Η μεταβλητή μονοπατιού, το οποίο έδειχνε πριν, 748 00:53:58,830 --> 00:54:01,880 είναι ένας κατάλογος των pathnames στην οποία το κέλυφος αναζητά εντολές. 749 00:54:01,880 --> 00:54:12,320 Ας πάρει πάνω σε αυτό το παράθυρο εδώ και εμείς θα κάνουμε echo $ PATH, με κεφαλαία γράμματα - 750 00:54:12,320 --> 00:54:20,230 μεταβλητή περιβάλλοντος - echo $ path, μικρά γράμματα - κέλυφος μεταβλητή. 751 00:54:20,230 --> 00:54:24,980 Παρατηρήστε ότι η λίστα των καταλόγων είναι η ίδια. Αυτά δεσμεύονται. 752 00:54:24,980 --> 00:54:26,590 Αλλάξτε το ένα, μπορείτε να αλλάξετε το άλλο. 753 00:54:26,590 --> 00:54:32,970 Στη μεταβλητή περιβάλλοντος τα στοιχεία διαχωρίζονται με άνω και κάτω τελεία. Παρατηρήστε ότι. 754 00:54:32,970 --> 00:54:35,130 Οι μεταβλητές κελύφους χωρισμένα με κενά. 755 00:54:35,130 --> 00:54:38,760 Αυτή η μεταβλητή περιβάλλοντος είναι μια χορδή. 756 00:54:38,760 --> 00:54:41,480 Η μεταβλητή κέλυφος είναι ένας πίνακας. 757 00:54:41,480 --> 00:54:43,490 The Bourne shell δεν έχουν συστοιχίες. 758 00:54:43,490 --> 00:54:46,600 Bash κάνει, αλλά αυτό είναι ήδη ένα σταθερό μέρος του κελύφους. 759 00:54:46,600 --> 00:54:48,660 Αυτό είναι ένα μόνο χορδή και όχι μία συστοιχία. 760 00:54:48,660 --> 00:54:50,420 Το C-shell είχε πάντα συστοιχίες. 761 00:54:50,420 --> 00:54:52,630 Οι πίνακες είναι πολύ πιο εύκολο να εργαστεί με. 762 00:54:52,630 --> 00:54:54,400 Μπορείτε να ανατρέξετε σε τμήματά του. 763 00:54:54,400 --> 00:55:02,350 Έτσι echo $ path [1], και παίρνω / usr / bin, το πρώτο στοιχείο. 764 00:55:02,350 --> 00:55:09,950 Και πάλι, να θυμάστε σύμβολο του δολαρίου σημαίνει το τελευταίο στοιχείο της λίστας ιστορικού. 765 00:55:09,950 --> 00:55:16,850 Τι συμβαίνει εκεί; Προσπάθησε να βρει το σύμβολο του δολαρίου ως σύμβολο μεταβλητής. 766 00:55:16,850 --> 00:55:20,850 Μου ξεφύγει. Ωχ. Δεν θα πάρετε ούτε αυτό. 767 00:55:20,850 --> 00:55:23,690 Μερικά από αυτά τα πράγματα δεν λειτουργούν τόσο καλά. 768 00:55:23,690 --> 00:55:28,140 Ίσως θα αφήσει μόνο ότι έξω. 769 00:55:28,140 --> 00:55:36,980 Asterisk αναφέρεται στο όλο θέμα, αλλά αυτό είναι τι θα πάρετε αν δεν καθορίσετε ένα στοιχείο. 770 00:55:36,980 --> 00:55:46,170 Ένας άλλος τρόπος ότι οι μεταβλητές συστοιχία μπορεί να αλλοιωθεί, 771 00:55:46,170 --> 00:55:49,500 αριθμό στοιχείων εκεί, 7 στοιχεία. 772 00:55:49,500 --> 00:55:53,410 Εδώ βάζουμε τη δίεση πριν το όνομα της μεταβλητής. 773 00:55:53,410 --> 00:55:58,280 Εδώ είναι ένα άλλο. Βάλτε υπάρχει ένα ερωτηματικό. 774 00:55:58,280 --> 00:56:03,170 Αυτό είναι μια λογική τιμή. Αυτό δείχνει ότι υπάρχει η μεταβλητή. 775 00:56:03,170 --> 00:56:05,160 Είναι ένας άλλος τρόπος εργασίας με τις μεταβλητές. 776 00:56:05,160 --> 00:56:06,660 Αυτό, παρεμπιπτόντως, δεν πρέπει να είναι μια μεταβλητή πίνακα. 777 00:56:06,660 --> 00:56:08,210 Αυτό θα μπορούσε να είναι οποιαδήποτε μεταβλητή. 778 00:56:08,210 --> 00:56:11,840 Και αν το κάνω, δεν υπάρχει τέτοια μεταβλητή και να πάρω ένα 0. 779 00:56:11,840 --> 00:56:14,990 Ένα άλλο μικρό πράγμα εκεί περίπου μεταβλητή αξιολογήσεων. 780 00:56:23,670 --> 00:56:32,950 Επιστροφή στην αυτή εδώ, αν για κάποιο λόγο θέλετε να εργαστείτε με αυτό 781 00:56:32,950 --> 00:56:37,990 αντί να εργάζονται με τη σειρά, η μεταβλητή του κελύφους, 782 00:56:37,990 --> 00:56:41,470 υπάρχουν εντολές που μπορεί να διαχωρίσει αυτά τα πράγματα που βασίζονται στο κόλον. 783 00:56:41,470 --> 00:56:44,080 Στην πραγματικότητα, αν θέλει κάποιος να κάνει αυτό με την φλοιού Bash, ενδεχομένως, 784 00:56:44,080 --> 00:56:47,110 κάποιου είδους σενάριο, που θα είναι κατά πάσα πιθανότητα το πώς θα το κάνουμε. 785 00:56:47,110 --> 00:56:50,350 Αλλά στο C-shell είναι πολύ πιο εύκολο να χρησιμοποιήσετε τον πίνακα. 786 00:56:50,350 --> 00:56:58,250 Στο Bourne shell, οι μεταβλητές ανατίθενται από μια μοναδική έκφραση όπως αυτή, 787 00:56:58,250 --> 00:57:01,760 όπως τον τρόπο που θα μπορούσε να εκχωρήσετε μια μεταβλητή σε μια γλώσσα προγραμματισμού, 788 00:57:01,760 --> 00:57:05,110 και εδώ θα πρέπει να υπάρχουν κενά. 789 00:57:05,110 --> 00:57:09,110 Είναι απαραίτητο να είναι μόλις 1 χορδών. 790 00:57:09,110 --> 00:57:14,980 Στα κελύφη Bourne τύπου, όλες οι μεταβλητές είναι μεταβλητές κελύφους. 791 00:57:14,980 --> 00:57:19,250 Οι μεταβλητές περιβάλλοντος είναι ένα υποσύνολο των μεταβλητών κελύφους. 792 00:57:19,250 --> 00:57:24,060 Διακρίνονται από τα μη-μεταβλητές περιβάλλοντος με την εξαγωγή. 793 00:57:24,060 --> 00:57:28,860 Η εντολή για να το κάνει αυτό είναι η εξαγωγή, όπως είναι οι εξαγωγικές ΕΚΤΥΠΩΤΗ. 794 00:57:28,860 --> 00:57:34,930 Αν ήταν να ορίσει μια τέτοια μεταβλητή, 795 00:57:34,930 --> 00:57:38,480 αν θέλαμε μια εντολή εκτύπωσης για να το βρείτε, θα πρέπει να είναι μια μεταβλητή περιβάλλοντος, 796 00:57:38,480 --> 00:57:40,730 και αυτό είναι το πώς μπορούμε να μπορεί κανείς να κάνει. 797 00:57:40,730 --> 00:57:42,090 Εδώ υπάρχει κάτι το είδος της σύγχυσης. 798 00:57:42,090 --> 00:57:50,430 Αυτή η έκφραση, την εξαγωγή προς το περιβάλλον, προέρχεται από αυτό το Bourne έννοια του κελύφους, 799 00:57:50,430 --> 00:57:54,520 και ακόμη ότι η έκφραση αυτή χρησιμοποιείται στις περιγραφές του C-κέλυφος, 800 00:57:54,520 --> 00:57:57,920 όπου δεν υπάρχει τέτοια εντολή ως εξαγωγή. 801 00:57:57,920 --> 00:58:06,200 Αν πω εξαγωγή από την ίδια, μπορείτε να πάρετε μια λίστα των εξαγόμενων - 802 00:58:06,200 --> 00:58:10,620 Έτσι, αν εγώ απλά εξάγουν εδώ, δεν υπάρχει τέτοιο πράγμα. 803 00:58:13,620 --> 00:58:15,200 Εντάξει, εκεί πάμε. 804 00:58:15,200 --> 00:58:17,010 Αυτά τα πράγματα, από τον τρόπο, που επίσης ορίζεται από το κέλυφος. 805 00:58:17,010 --> 00:58:19,400 Εγώ δεν καθορίζουν κάποιο από αυτά από τον εαυτό μου. 806 00:58:19,400 --> 00:58:23,550 Το κέλυφος έχει όλα τα είδη των πραγμάτων από μόνη της. 807 00:58:23,550 --> 00:58:26,650 Θα πρέπει να κάνουμε τα πράγματα αυτόματα. 808 00:58:30,240 --> 00:58:36,880 Στο Bash ή κέλυφος Korn, μπορείτε να εκτελέσετε μια εντολή όπως αυτή, 809 00:58:36,880 --> 00:58:42,000 το οποίο, αφενός, θα δώσει μια μεταβλητή μια τιμή και να εξάγει σε 1 εντολή. 810 00:58:42,000 --> 00:58:46,150 Στο κέλυφος Bourne πρέπει να είναι χωριστές εντολές όπως για εξαγωγές, μια. 811 00:58:46,150 --> 00:58:48,410 Εδώ είναι μια άλλη πτυχή που είναι συγκεχυμένη. 812 00:58:48,410 --> 00:58:52,220 Η εντολή set στο C-shell ορίζει μεταβλητές 813 00:58:52,220 --> 00:58:55,550 και χωρίς επιχειρήματα σας λέει ποιες είναι οι αξίες των μεταβλητών. 814 00:58:55,550 --> 00:59:01,140 Στο Bash shell, η εντολή set χωρίς επιχειρήματα κάνει το ίδιο πράγμα, 815 00:59:01,140 --> 00:59:03,580 αλλά με επιχειρήματα που κάνει κάτι εντελώς διαφορετικό. 816 00:59:03,580 --> 00:59:06,200 Αυτά λοιπόν είναι τα διάφορα επιχειρήματα εδώ. 817 00:59:06,200 --> 00:59:10,460 Μερικοί από αυτούς είναι οι μεταβλητές περιβάλλοντος, ορισμένες από αυτές είναι μεταβλητές κελύφους. 818 00:59:10,460 --> 00:59:13,200 Όλοι τους είναι μεταβλητές κελύφους πραγματικά. Μερικοί από αυτούς είναι οι μεταβλητές περιβάλλοντος. 819 00:59:15,690 --> 00:59:23,920 Η εντολή set με επιχειρήματα μπορούν να χρησιμοποιηθούν για τη λειτουργία 820 00:59:23,920 --> 00:59:28,220 σχετικά με τις παραμέτρους θέσης σε ένα σενάριο, 821 00:59:28,220 --> 00:59:33,910 η οποία είναι ένας τρόπος για να πάρει όλα με τη μία. 822 00:59:33,910 --> 00:59:36,150 Δεν μπορεί πραγματικά να μπω σε αυτό σήμερα. 823 00:59:36,150 --> 00:59:39,580 Μπορεί επίσης να χρησιμοποιηθεί για να αλλάξει η συμπεριφορά κελύφους. 824 00:59:39,580 --> 00:59:46,700 Ιδιαίτερα στο Bash υπάρχουν μεταβλητές που θα καθορίσει το πώς συμπεριφέρεται το κέλυφος. 825 00:59:46,700 --> 00:59:51,310 Τότε, επίσης, μόνο αυτό μια εντολή που μπορείτε να δείτε, αυτή η εντολή. 826 00:59:51,310 --> 00:59:59,050 Στοιχειοθεσία ακολουθείται από μεταβλητές και τύπους μεταβλητών χρησιμοποιείται στα Korn και Bash κελύφη. 827 00:59:59,050 --> 01:00:04,970 Δεν είναι υποχρεωτικό, αλλά μπορεί να χρησιμοποιηθεί για να περιορίσει τις τιμές των μεταβλητών, 828 01:00:04,970 --> 01:00:08,400 το οποίο μπορεί να είναι χρήσιμο για την πρόληψη των σφαλμάτων, και είναι αρκετά κοινό. 829 01:00:08,400 --> 01:00:11,640 Έτσι, είμαι απλώς να σημειωθεί ότι σε περίπτωση που το δείτε κάπου. 830 01:00:17,290 --> 01:00:19,160 Η εντολή πού. 831 01:00:19,160 --> 01:00:22,490 Θυμηθείτε ανέφερα προηγουμένως η οποία εντολή στο C-shell, 832 01:00:22,490 --> 01:00:28,750 το οποίο μπορεί να σας πει τη θέση του διαδρομή εντολών. 833 01:00:28,750 --> 01:00:32,580 Εδώ είναι η αντικατάσταση εντολών. 834 01:00:32,580 --> 01:00:41,900 Θα πρέπει να βρείτε στο πληκτρολόγιό σας κάπου ένας χαρακτήρας που μοιάζει με αυτό. 835 01:00:41,900 --> 01:00:44,910 Η θέση στο πληκτρολόγιο πρόκειται να διαφέρουν. 836 01:00:44,910 --> 01:00:47,050 Έχουμε αυτό που ονομάζεται backquote. Είναι περίπου το μέγεθος του ένα απόσπασμα. 837 01:00:47,050 --> 01:00:48,720 Πηγαίνει από πάνω αριστερά προς τα κάτω δεξιά. 838 01:00:48,720 --> 01:00:52,690 Εδώ σε Mac πληκτρολόγιο μου είναι στην επάνω αριστερή γωνία. 839 01:00:52,690 --> 01:00:58,150 Ότι ο χαρακτήρας μπορεί να χρησιμοποιηθεί για να εκτελέσει μια εντολή εντός μίας εντολής. 840 01:00:58,150 --> 01:01:03,400 Εάν έχετε μια έκφραση μέσα ανάποδα μονά εισαγωγικά, 841 01:01:03,400 --> 01:01:07,080 ότι η έκφραση είναι μια εντολή, είναι να τρέξει. 842 01:01:07,080 --> 01:01:09,010 Η έξοδος της εντολής 843 01:01:09,010 --> 01:01:11,980 Στη συνέχεια, υποκατεστημένο για το σύνολο έκφραση backquote 844 01:01:11,980 --> 01:01:16,110 μέσα σε ένα μεγαλύτερο εντολή η οποία στη συνέχεια τρέχει με την εν λόγω έξοδο 845 01:01:16,110 --> 01:01:22,010 ως μέρος της συμβολοσειράς του επιχειρήματα και ούτω καθεξής. 846 01:01:22,010 --> 01:01:28,640 Εδώ είναι μια εντολή που χρησιμοποιεί αυτό. 847 01:01:28,640 --> 01:01:32,340 Ας γίνει επίδειξη της λειτουργίας εδώ. 848 01:01:44,980 --> 01:01:49,090 Ας πάμε εδώ, να λάβει τα ανάποδα μονά εισαγωγικά. 849 01:01:49,090 --> 01:01:54,410 Έλεγχος Α με παίρνει στην αρχή της γραμμής, με τη σύνταξη επεξεργασίας Emacs. 850 01:01:54,410 --> 01:02:00,380 Μέχρι στιγμής, η pathnames είναι ό, τι όταν κάνει, 851 01:02:00,380 --> 01:02:05,040 αλλά όταν το κάνω σαν αυτό, τότε συνδέεται στον εν λόγω κατάλογο των pathnames 852 01:02:05,040 --> 01:02:08,750 στη θέση του όλη αυτή την έκφραση backquote και τρέχει ls-l σε αυτά. 853 01:02:08,750 --> 01:02:11,120 Kind of βολικό, ε; 854 01:02:11,120 --> 01:02:14,860 Έτσι, αυτό είναι ένα ωραίο πράγμα. Αυτό είναι το πώς λειτουργούν ανάποδα μονά εισαγωγικά. 855 01:02:14,860 --> 01:02:17,560 Τώρα ας πάμε κάτω λίγο περισσότερο. 856 01:02:17,560 --> 01:02:22,050 Αυτά είναι τα ψευδώνυμα. Χρησιμοποιώ πραγματικά αυτά. 857 01:02:22,050 --> 01:02:26,410 Θα προσπαθήσετε να πάρετε αυτό με 1 λειτουργία επεξεργασίας. 858 01:02:34,900 --> 01:02:36,900 Εντάξει. 859 01:02:36,900 --> 01:02:39,630 Τώρα, ας δούμε πώς οι ορισμοί αυτοί βγήκαν. 860 01:02:39,630 --> 01:02:44,930 ψευδώνυμο LWH μου λέει πώς έχει οριστεί. 861 01:02:44,930 --> 01:02:51,210 Παρατηρήστε ότι είναι μόνο αυτό, αλλά τα εξωτερικά εισαγωγικά έχουν απογειωθεί 862 01:02:51,210 --> 01:02:53,750 και το θαυμαστικό απογειωθεί. 863 01:02:53,750 --> 01:02:58,940 ! *, Πλήρη κατάλογο όλων των επιχειρημάτων. 864 01:02:58,940 --> 01:03:03,580 Σε μια ορισμός ψευδωνύμου θα εφαρμόσει πίσω στο σημείο όπου μπορώ να χρησιμοποιήσω αυτό. 865 01:03:03,580 --> 01:03:10,620 LWH ksh bash. Εντάξει. 866 01:03:10,620 --> 01:03:13,960 Δείτε πώς λειτουργεί; Μου εξοικονομεί κάποια πληκτρολόγηση. 867 01:03:13,960 --> 01:03:16,440 Ας πάμε μέχρι λίγο μόνο να αναφέρω κάτι άλλο εδώ. 868 01:03:19,150 --> 01:03:23,120 Προσέξτε εδώ αυτά τα διαφορετικά κελύφη. Θα έπρεπε να είχα αναφερθεί πριν από αυτό. 869 01:03:23,120 --> 01:03:36,060 Το csh έχει 2 εδώ και το ίδιο κάνει και / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Θα μπορούσε να δημιουργήσει με άλλα μέσα ότι αυτά είναι στην πραγματικότητα το ίδιο αρχείο. 871 01:03:39,870 --> 01:03:43,150 Θυμηθείτε έλεγα αν πληκτρολογήσετε sh παίρνετε bash. 872 01:03:43,150 --> 01:03:47,390 Πληκτρολογήστε αυτό και μπορείτε να πάρετε αυτό. 873 01:03:47,390 --> 01:03:51,730 Αλλά εκείνοι που δεν συνδέονται. Όσοι έχουν μονά εκεί. 874 01:03:51,730 --> 01:03:54,910 Και αυτό δεν είναι το είδος των αρχείων που μπορεί να καλέσει ένα άλλο. 875 01:03:54,910 --> 01:03:59,460 Έτσι, αυτά είναι ξεχωριστά αρχεία? Αυτοί C-shell είναι το ίδιο το αρχείο. 876 01:03:59,460 --> 01:04:03,640 Εδώ κάτω, το άλλο εδώ, αυτό το ψευδώνυμο, 877 01:04:03,640 --> 01:04:09,090 Σημειώστε ότι τρέχει αυτήν την εντολή, το αρχείο. 878 01:04:09,090 --> 01:04:13,810 Αυτό ψευδώνυμο τρέχει αυτό. Αρχείο που λέει ο τύπος του αρχείου. 879 01:04:13,810 --> 01:04:20,330 Έτσι ΙΜΕ bash ksh. Εντάξει. 880 01:04:20,330 --> 01:04:23,230 Αυτή είναι η έξοδος της εντολής του αρχείου. 881 01:04:23,230 --> 01:04:24,630 Δεν ξέρω αν γνωρίζετε τι σημαίνει αυτό εδώ, 882 01:04:24,630 --> 01:04:26,750 Mach-O καθολική δυαδική με 2 αρχιτεκτονικές. 883 01:04:26,750 --> 01:04:30,470 Υπάρχουν 2 πιθανές μορφές επεξεργαστή Mac, 884 01:04:30,470 --> 01:04:34,780 και κάποια προγράμματα που γράφτηκαν για να είναι σε θέση να τρέξει με δύο, 885 01:04:34,780 --> 01:04:37,950 και η εντολή file μπορεί να καθορίσει ότι, έτσι ώστε να είναι ό, τι σημαίνει αυτό. 886 01:04:37,950 --> 01:04:40,660 Και τα δύο από αυτά τα αρχεία έχουν γραφτεί με αυτόν τον τρόπο. 887 01:04:40,660 --> 01:04:43,760 Έτσι βλέπουμε πώς λειτουργεί το ψευδώνυμο, θα δούμε πώς λειτουργεί ο backquote, 888 01:04:43,760 --> 01:04:48,640 βλέπουμε πώς λειτουργεί η πραγματική ls ή ένα αρχείο. 889 01:04:52,050 --> 01:04:57,000 Αυτό δεν θα μπορούσε να λειτουργήσει. Δοκιμάστε "όπου όπου" και "LWH όπου". Εντάξει, ας το δοκιμάσουμε. 890 01:04:57,000 --> 01:05:01,040 όπου όπου. 891 01:05:01,040 --> 01:05:03,500 όπου είναι ένα κέλυφος ενσωματωμένο. 892 01:05:03,500 --> 01:05:06,970 Θυμηθείτε νωρίτερα δείξαμε ότι το Bash δεν έχουν πού. 893 01:05:06,970 --> 01:05:10,080 Εάν πληκτρολογήσετε όπου στο κέλυφος Bash, μπορείτε να πάρετε ένα μήνυμα σφάλματος. 894 01:05:10,080 --> 01:05:12,540 Είναι απλά μέρος του κελύφους αντί να είναι μια ξεχωριστή εντολή. 895 01:05:12,540 --> 01:05:20,000 Τι θα συμβεί αν τύπου LWH ψάχνετε για το πού; Δείτε τι συμβαίνει εκεί. 896 01:05:20,000 --> 01:05:22,850 Έτρεξε όπου όπου, πήρε αυτήν την έξοδο, και στη συνέχεια προσπάθησε να τρέξει ls 897 01:05:22,850 --> 01:05:25,600 ως l για το πού είναι ένα κέλυφος built-in. 898 01:05:25,600 --> 01:05:28,790 όπου υπάρχει, αλλά δεν υπάρχουν οι υπόλοιπες. 899 01:05:28,790 --> 01:05:32,090 Κανένα από αυτά δεν υπάρχουν, στην πραγματικότητα. 900 01:05:32,090 --> 01:05:35,560 Έτσι, αυτό δεν λειτουργεί πάντα, και αυτό καταδεικνύει επίσης πως κάποια πράγματα 901 01:05:35,560 --> 01:05:39,580 δεν κάνουν αρκετά, τι μπορεί να έχετε σκεφτεί. 902 01:05:40,930 --> 01:05:43,010 Ας κατέβουμε λίγο περισσότερο εδώ. 903 01:05:44,890 --> 01:05:54,760 Αυτό εδώ είναι το Bash. Αυτό είναι, επίσης, η υποκατάσταση εντολή όπως η backquote. 904 01:05:54,760 --> 01:06:05,280 Αλλά σε αντίθεση με backquote, χρησιμοποιεί αυτή την μεταβλητή στυλ. 905 01:06:05,280 --> 01:06:09,860 Υπάρχουν μια σειρά από εκφράσεις που αρχίζουν με το σύμβολο του δολαρίου, 906 01:06:09,860 --> 01:06:16,070 και ενώ αυτές δεν είναι μεταβλητές, που δανείστηκαν τη χρήση του το σύμβολο του δολαρίου 907 01:06:16,070 --> 01:06:19,570 να υποδείξει μια έκφραση κάποιου είδους. 908 01:06:19,570 --> 01:06:23,550 Που μπορεί να περιβάλλεται από παρενθέσεις ή αγκύλες ή διπλά παρενθέσεις, 909 01:06:23,550 --> 01:06:26,320 η οποία έχει διαφορετικό σκοπό. 910 01:06:26,320 --> 01:06:29,500 Ενιαία παρενθέσεις εδώ είναι μια αντικατάσταση εντολών όπως ακριβώς τα ανάποδα μονά εισαγωγικά. 911 01:06:29,500 --> 01:06:32,720 Διπλό παρενθέσεις είναι στην πραγματικότητα μια αριθμητική πράξη. 912 01:06:32,720 --> 01:06:35,380 Υπάρχουν και άλλες συντάξεις, άλλες εργασίες. 913 01:06:35,380 --> 01:06:41,520 Backquote σύνταξη είναι διαθέσιμο σε Bash. 914 01:06:41,520 --> 01:06:46,780 Ωστόσο, αυτό είναι προτιμότερο. Είναι πολύ πιο εύκολο να διαβάσει και να επιτρέπει φωλιάσματος. 915 01:06:46,780 --> 01:06:51,300 Μπορείτε να έχετε μέσα στο $ (εντολή) μια άλλη εντολή, 916 01:06:51,300 --> 01:06:54,590 κάτι σαν - 917 01:07:14,560 --> 01:07:18,210 Θα πάρετε μια λίστα εκεί. 918 01:07:18,210 --> 01:07:21,670 Αυτό θα μπορούσε να λειτουργήσει αν είχα την backquote επίσης. 919 01:07:32,050 --> 01:07:38,470 Τι γίνεται αν θέλω να κάνω κάτι σαν - 920 01:08:03,390 --> 01:08:06,430 Πιθανώς δεν θα χρησιμοποιούσε αυτή την εντολή, 921 01:08:06,430 --> 01:08:14,160 αλλά αυτή η εσωτερική αντικατάσταση εντολών απηχεί τα ονόματα όλων των αρχείων που αρχίζουν με ένα, 922 01:08:14,160 --> 01:08:18,229 τότε αυτό εκτελεί ls-l σε αυτά τα αρχεία, 923 01:08:18,229 --> 01:08:20,500 και τότε αυτό απηχεί ακριβώς την έξοδο. 924 01:08:21,729 --> 01:08:24,479 Πιθανώς δεν θα το κάνουμε αυτό? Θα κάνετε μόνο την ηχώ ή ls, 925 01:08:24,479 --> 01:08:29,450 αλλά αυτό δείχνει πώς λειτουργεί το φώλιασμα των εντολών. 926 01:08:29,450 --> 01:08:34,380 Έτσι ακριβώς ένα άλλο χαρακτηριστικό εδώ. 927 01:08:34,380 --> 01:08:37,450  Το ανέφερα νωρίτερα, ότι όταν έχεις όπου στο C-shell, 928 01:08:37,450 --> 01:08:42,770 πληκτρολογήστε τα έργα στα κελύφη Bourne τύπου για τον εντοπισμό εντολές. 929 01:08:48,939 --> 01:08:52,270 Built-in εντολές, ακριβώς αυτό που λέει εκεί. 930 01:08:52,270 --> 01:08:54,640 Οι εντολές είναι μέρος του κελύφους, όπως το πού. 931 01:08:54,640 --> 01:08:59,880 Όταν ο φλοιός εκτελεί μια εντολή όπως ls, να εντοπίζει μέσα από τη διαδρομή, 932 01:08:59,880 --> 01:09:03,029 βρίσκει σε κάποιο φάκελο κάπου, 933 01:09:03,029 --> 01:09:05,800 αναφέρει ότι στη μνήμη, δημιουργεί ένα νέο κέλυφος, 934 01:09:05,800 --> 01:09:08,960 διαβάζει την εντολή ls ή οτιδήποτε άλλο μέσα στο κέλυφος 935 01:09:08,960 --> 01:09:11,450 όπου οι μεταβλητές περιβάλλοντος βρίσκονται ήδη, 936 01:09:11,450 --> 01:09:14,000 και στη συνέχεια μεταφέρει την εκτέλεση σε αυτό. 937 01:09:14,000 --> 01:09:18,319 Ενσωματωμένη εντολή, ο κώδικας για την εντολή είναι μέσα στο περίβλημα, 938 01:09:18,319 --> 01:09:21,460 έτσι ώστε το κέλυφος μόλις αρχίζει την εκτέλεση μέρους του τον δικό του κώδικα. 939 01:09:21,460 --> 01:09:24,569 όπου είναι μια τέτοια εντολή. Παίρνει πραγματικά γρήγορα. 940 01:09:24,569 --> 01:09:28,380 Δεν χρειάζεται να διαβάσει τίποτα στη μνήμη? Είναι ήδη στη μνήμη. 941 01:09:28,380 --> 01:09:32,460 Built-in εντολές υπερισχύουν πάντοτε εντολές με το ίδιο όνομα. 942 01:09:32,460 --> 01:09:36,050 Οι εντολές που βρίσκονται σε καταλόγους στη διαδρομή μπορεί να έχουν το ίδιο όνομα, 943 01:09:36,050 --> 01:09:39,090 εντολές σε διαφορετικούς καταλόγους, αρχεία σε διαφορετικούς καταλόγους. 944 01:09:39,090 --> 01:09:41,740 Το ένα που εμφανίζεται νωρίτερα στη διαδρομή είναι αυτό που θα πάρετε. 945 01:09:41,740 --> 01:09:43,770 Εάν υπάρχει μια ενσωματωμένη εντολή, μπορείτε να το έχετε πάντα. 946 01:09:43,770 --> 01:09:47,890 Δεν υπάρχει κανένας τρόπος για να δώσει μια χαμηλότερη προτεραιότητα από μια εντολή στο δρόμο. 947 01:09:47,890 --> 01:09:54,140 Αν θέλετε να πάρετε εκείνη την εντολή διαδρομής, μπορείτε να πληκτρολογήσετε την πλήρη διαδρομή. 948 01:09:54,140 --> 01:09:55,850 Αν υπήρχε μια εντολή, όπου στη διαδρομή κάπου, 949 01:09:55,850 --> 01:09:58,440 μπορείτε να πληκτρολογήσετε / bin /, όπου και θα το πάρει. 950 01:09:58,440 --> 01:10:01,800 Εάν δεν θέλετε να πληκτρολογήσετε ολόκληρη τη διαδρομή, μπορείτε να ορίσετε ένα ψευδώνυμο. 951 01:10:01,800 --> 01:10:06,310 Στην πραγματικότητα, αν σας έδωσε το ψευδώνυμο το ίδιο όνομα με την ενσωματωμένη εντολή, θα μπορούσε να λειτουργήσει 952 01:10:06,310 --> 01:10:08,790 επειδή ο ορισμός ψευδωνύμου αξιολογείται 953 01:10:08,790 --> 01:10:13,220 πριν από το κέλυφος καθορίζει ότι είναι μια ενσωματωμένη εντολή που πρέπει να εκτελεστεί. 954 01:10:18,810 --> 01:10:23,440 Στη συνέχεια, αυτό γίνεται λίγο πιο περίπλοκη με κάποιες εντολές εδώ. 955 01:10:23,440 --> 01:10:29,880 Η περίπτωση κάποιες εντολές είναι πραγματικά ενσωματωμένες εντολές και στη διαδρομή. 956 01:10:29,880 --> 01:10:34,140 Ένας από αυτούς είναι η ηχώ, η εντολή που μόλις χρησιμοποιηθεί πριν από λίγο σε αυτά τα παραδείγματα. 957 01:10:34,140 --> 01:10:37,410 Echo είναι μια εντολή στη διαδρομή και είναι σε κάθε κέλυφος. 958 01:10:37,410 --> 01:10:40,580 Δεν είναι απαραίτητα όλα συμπεριφέρονται με τον ίδιο τρόπο. 959 01:10:40,580 --> 01:10:42,970 Ήταν αρχικά μία εντολή μόνο στη διαδρομή. 960 01:10:42,970 --> 01:10:45,280 Χτίστηκε στα κελύφη αργότερα. 961 01:10:45,280 --> 01:10:48,080 Επειδή υπάρχουν επιλογές που εξαρτώνται από το περιβάλλον 962 01:10:48,080 --> 01:10:52,970 και οι επιλογές της γραμμής εντολών, οι ενσωματωμένες εντολές 963 01:10:52,970 --> 01:10:57,030 γράφτηκαν για να λειτουργήσει το ίδιο με την εντολή που είχε στη διαδρομή, 964 01:10:57,030 --> 01:10:59,670 Είναι απίθανο ότι θα έχουν γραφτεί με αυτόν τον τρόπο 965 01:10:59,670 --> 01:11:01,720 αν η εντολή δεν είχε ήδη γραφτεί για τη διαδρομή. 966 01:11:01,720 --> 01:11:06,180 Έτσι, αυτό έχει παρενέργειες. Η ιστορία του έχει αποτελέσματα εδώ. 967 01:11:06,180 --> 01:11:08,380 Υπάρχουν επιλογές εκεί. 968 01:11:14,280 --> 01:11:23,060 Υπάρχει επίσης μια επιλογή που ορίζεται από μια μεταβλητή στο tcsh ονομάζεται echo_style. 969 01:11:23,060 --> 01:11:27,700 Αυτή είναι μία από τις μεταβλητές που μπορεί να αλλάξει τον τρόπο που θυμίζουν έργα. 970 01:11:27,700 --> 01:11:30,910 Υπάρχουν και άλλες περιπτώσεις στις οποίες μπορείτε να ορίσετε μια μεταβλητή 971 01:11:30,910 --> 01:11:36,290 που αλλάζει τον τρόπο με τον οποίο η λειτουργία του κελύφους, συμπεριλαμβανομένου ενός ενσωματωμένη εντολή, λειτουργεί. 972 01:11:36,290 --> 01:11:38,130 Δεν θα επηρεάσει τίποτα άλλο 973 01:11:38,130 --> 01:11:40,640 δεδομένου ότι άλλες εντολές δεν έχουν πρόσβαση στις μεταβλητές του κελύφους, 974 01:11:40,640 --> 01:11:42,090 μόνο οι μεταβλητές περιβάλλοντος. 975 01:11:42,090 --> 01:11:45,360 Όμως, οι δραστηριότητες του κελύφους μπορεί να διαβάσει τις μεταβλητές κελύφους. 976 01:11:45,360 --> 01:11:50,710 Αυτό δεν θα λειτουργήσει για το csh. Αυτό είναι μόνο το tcsh. Αυτό είναι ένα από τα αξεσουάρ. 977 01:11:58,540 --> 01:12:04,620 Parsing έχει ακολουθίες όταν αξιολογεί μεταχαρακτήρων, 978 01:12:04,620 --> 01:12:08,140 όταν αξιολογεί τις μεταβλητές, τα ψευδώνυμα, οι αναφορές της ιστορίας. 979 01:12:08,140 --> 01:12:11,830 Υπάρχει μια συγκεκριμένη αλληλουχία για αυτά τα πράγματα. 980 01:12:11,830 --> 01:12:13,730 Αν το κάνει τα πράγματα σε μια συγκεκριμένη αλληλουχία 981 01:12:13,730 --> 01:12:16,080 και παίρνει σε κάτι που είναι μια έκφραση ενός είδους 982 01:12:16,080 --> 01:12:20,650 η οποία έχει ήδη αξιολογηθεί, δεν θα το αξιολογήσει ξανά. 983 01:12:20,650 --> 01:12:24,520 Αν παίρνει, τότε θα περάσει ακριβώς στις χαρακτήρων. 984 01:12:24,520 --> 01:12:29,920 Έτσι, όταν από την αξιολόγηση ορισμένων εκφράσεων όπως αντικατάσταση εντολών 985 01:12:29,920 --> 01:12:36,850 ή μεταβλητό, ή ό, τι οδηγεί σε μια έκφραση 986 01:12:36,850 --> 01:12:39,240 το οποίο θα θέλατε να αξιολογηθούν, 987 01:12:39,240 --> 01:12:42,510 ότι θα λειτουργήσει μόνο εάν η εν λόγω αξιολόγηση πραγματοποιείται αργότερα στη σειρά. 988 01:12:42,510 --> 01:12:45,010 Ελπίζω ότι είμαι σαφής εκεί. 989 01:12:45,010 --> 01:12:50,460 Αυτό ακολουθία ανάλυσης, μια επιχείρηση στο C-shell, 990 01:12:50,460 --> 01:12:56,490 δεν είναι το ίδιο για ενσωματωμένες εντολές, όπως είναι για μη ενσωματωμένες εντολές. 991 01:12:56,490 --> 01:12:58,890 Δεν είμαι σίγουρος για το Bash εκεί. 992 01:12:58,890 --> 01:13:02,450 Για παράδειγμα, εάν μια μεταβλητή κελύφους παρήγαγε μια αναφορά ιστορία, 993 01:13:02,450 --> 01:13:04,230 μάλλον δεν θα πάει πίσω στην ιστορία. 994 01:13:04,230 --> 01:13:06,010 Θα πάρει μόνο το θαυμαστικό. 995 01:13:06,010 --> 01:13:08,840 Στην πραγματικότητα, μπορούμε να προσπαθήσουμε ακριβώς αυτό έξω τώρα. 996 01:13:09,720 --> 01:13:18,240 ορίσετε ένα = και εμείς θα πρέπει να το βάλουμε εκεί. 997 01:13:30,690 --> 01:13:34,580 Περίμενε. Λυπάμαι. Το έκανα αυτό στο Bash. Ήθελα να το κάνω εδώ. 998 01:13:53,470 --> 01:13:56,080 Βλέπε, γι 'αυτό δεν αξιολογούν ότι η αναφορά της ιστορίας 999 01:13:56,080 --> 01:14:00,520 επειδή ήταν ήδη πέρα ​​από το σημείο της αξιολόγησης εκφράσεων ιστορίας 1000 01:14:00,520 --> 01:14:02,720 όταν αξιολόγησε την μεταβλητή. 1001 01:14:02,720 --> 01:14:05,550 Έτσι ώστε να είναι 1 αποτέλεσμα της ανάλυσης. 1002 01:14:05,550 --> 01:14:08,760 Και πάλι, ενσωματωμένες εντολές δεν γίνονται με τον ίδιο τρόπο. 1003 01:14:08,760 --> 01:14:11,230 Εντάξει. Ας πάμε στο επόμενο εδώ. 1004 01:14:11,230 --> 01:14:16,060 Αυτό προορίζεται να είναι 1 γραμμή, αλλά αυτό είναι που καθιστά ευκολότερο να διαβάσει. 1005 01:14:19,130 --> 01:14:21,530 Τι σημαίνει ότι κάνει; 1006 01:14:21,530 --> 01:14:28,640 Ίσως να θυμάστε ότι μπορούμε να αξιολογήσουμε αστερίσκους ως μπαλαντέρ αρχείου, 1007 01:14:28,640 --> 01:14:33,890 και υπάρχουν και άλλα μπαλαντέρ όνομα αρχείου, όπως το ερωτηματικό και εκφράσεων. 1008 01:14:33,890 --> 01:14:39,000 Αυτό το είδος της αξιολόγησης ονομάζεται globbing. 1009 01:14:39,000 --> 01:14:46,290 που noglob στην αρχή αυτής της εντολής λέει να μην το κάνουμε αυτό. 1010 01:14:46,290 --> 01:14:53,370 απενεργοποίηση noglob λέει να πάει πίσω για να το κάνουμε αυτό. 1011 01:14:53,370 --> 01:14:56,440 Σημειώστε ότι η σειρά glob δεν θα έχει αυτό το αποτέλεσμα. 1012 01:14:56,440 --> 01:15:00,800 Σε απλή γλώσσα, που glob ή παροπλισμός noglob φαίνεται να είναι ισοδύναμες, 1013 01:15:00,800 --> 01:15:03,290 αλλά εδώ δεν είναι. Είναι απενεργοποίηση noglob. 1014 01:15:05,120 --> 01:15:07,910 Τώρα Tset. TSET στάθηκε για τερματικό σύνολο. 1015 01:15:07,910 --> 01:15:11,840 Δεν χρησιμοποιείται, που συχνά τώρα, αλλά πριν έγινε διαθέσιμα συστήματα windowing 1016 01:15:11,840 --> 01:15:15,760 και είχατε ένα μόνο τερματικό, ίσως χρειαστεί να προσδιορίσετε τον τύπο. 1017 01:15:15,760 --> 01:15:18,700 Και αν κάτι ερχόταν πάνω από Ethernet ή από το δίκτυο, 1018 01:15:18,700 --> 01:15:21,120 ίσως να θέλετε να πω ότι είναι μια vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 είναι ένα είδος προτύπου στον κλάδο τερματικό. Προέρχεται από το τερματικό αποσ. 1020 01:15:26,630 --> 01:15:35,270 Αν απλά κάνετε dialup - παρατηρήσετε ότι; Αυτό πάει πίσω ένα τρόπους, ε; 1021 01:15:35,270 --> 01:15:39,520 Έτσι, αν εμείς απλά Tset εδώ, 1022 01:15:39,520 --> 01:15:45,250 αν κάνω ακριβώς TSET, είναι η επαναφορά τερματικό μου, αλλά δεν είδα τίποτα. 1023 01:15:45,250 --> 01:15:47,340 Αυτό δεν αλλάζει τίποτα. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Εντάξει. 1026 01:15:51,480 --> 01:15:53,350 setenv TERM xterm-χρώμα. 1027 01:15:53,350 --> 01:15:57,080 Γνωρίζουμε ήδη ότι ο όρος αυτός ορίζεται με αυτόν τον τρόπο, έτσι ώστε δεν άλλαξε. 1028 01:15:57,080 --> 01:15:58,860 Αυτός είναι ο τρόπος με τον οποίο θα θέλατε να το κάνουμε. 1029 01:15:58,860 --> 01:16:07,080 Να σημειωθεί όμως ότι η εντολή αυτή, TSET-s, μόνο έξοδος αυτές τις εντολές. Δεν τους τρέξει. 1030 01:16:07,080 --> 01:16:09,770 Δεν εκτελέσετε αυτές τις εντολές? Είναι η εξαγωγή τους. 1031 01:16:09,770 --> 01:16:13,650 Έτσι, αυτό έχει ως στόχο να παράγει τις εντολές που θα τρέξει στη συνέχεια. 1032 01:16:13,650 --> 01:16:16,360 Θυμάστε την εντολή σε αυτό το αρχείο μόλις έδειξα είχατε ένα Q σε αυτό. 1033 01:16:16,360 --> 01:16:18,910 Οπότε ας το κάνουμε αυτό. 1034 01:16:18,910 --> 01:16:23,750 Η Q καταστέλλει κάποιο αποτέλεσμα, αλλά αυτό δεν έχει σημασία εδώ, όπως μπορείτε να δείτε. 1035 01:16:23,750 --> 01:16:27,980 Απλά κάνω αυτό για να σας δείξω ότι δεν είχε καμία σημασία. 1036 01:16:27,980 --> 01:16:31,870 Αυτό είναι σε σύνταξη backquote. 1037 01:16:31,870 --> 01:16:35,340 Σημειώστε το backquote εδώ, backquote εδώ. 1038 01:16:35,340 --> 01:16:37,680 Είμαι παραλείποντας αυτά τα πράγματα εδώ. 1039 01:16:37,680 --> 01:16:39,570 Πρόκειται για τις περιπτώσεις της λέει τι να κάνει 1040 01:16:39,570 --> 01:16:42,050 στην περίπτωση των συγκεκριμένων τύπων τερματικών - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, το δίκτυο, dialup, τι έχετε. 1042 01:16:45,400 --> 01:16:48,050 Δεν έχει σημασία εδώ επειδή δεν είμαστε πραγματικά κάνει οποιαδήποτε από αυτά τα πράγματα. 1043 01:16:48,050 --> 01:16:49,720 Είμαι απλά απεικονίζει την εντολή. 1044 01:16:49,720 --> 01:16:55,170 Αν το κάνω αυτό με την backquote, τι είμαι πρόκειται να πάρει; 1045 01:16:55,170 --> 01:17:00,210 Επίσης, παρατηρούμε εδώ ότι αυτό περιλαμβάνεται το σύνολο noglob και την απενεργοποίηση noglob, 1046 01:17:00,210 --> 01:17:02,630 έτσι ώστε αυτές έχουν πλέον απολυμένους στον ορισμό. 1047 01:17:02,630 --> 01:17:05,380 Αυτό δεν ήταν πάντα αλήθεια, αλλά τώρα είναι που περιλαμβάνονται σε αυτήν την εντολή. 1048 01:17:05,380 --> 01:17:08,890 Αλλά ας δούμε τι θα συμβεί αν το κάνω αυτό 1049 01:17:08,890 --> 01:17:12,570 και να πάει στην αρχή της γραμμής ελέγχου με Α και το κάνω αυτό. 1050 01:17:14,380 --> 01:17:18,040 Εντάξει, ορίστε: Η εντολή δεν βρέθηκε. Αυτό είναι το είδος περίεργο, έτσι δεν είναι; 1051 01:17:18,040 --> 01:17:20,570 σύνολο είναι ένα πολύ γνωστό εντολή. Είναι μέρος του κελύφους. 1052 01:17:20,570 --> 01:17:24,040 που: εντολή δεν βρέθηκε; Γιατί συμβαίνει αυτό; 1053 01:17:24,040 --> 01:17:26,790 Χμμ. Λοιπόν, ας το σκεφτούμε αυτό. 1054 01:17:26,790 --> 01:17:31,100 Είναι εκτελεί μια αντικατάσταση εντολών backquote, 1055 01:17:31,100 --> 01:17:37,430 και ότι συμβαίνει σε ένα ορισμένο μέρος της αλληλουχίας του parsing την εντολή. 1056 01:17:37,430 --> 01:17:40,360 το σύνολο είναι μια ενσωματωμένη εντολή. 1057 01:17:40,360 --> 01:17:43,900 Έτσι, από τη στιγμή που κάνει την εν λόγω αντικατάσταση εντολών, 1058 01:17:43,900 --> 01:17:48,280 είναι ήδη πάρει πέρα ​​από το σημείο εντοπισμού ενσωματωμένες εντολές. 1059 01:17:48,280 --> 01:17:51,900 Έτσι αντιμετωπίζει οριστεί σαν να ήταν μια εντολή στη διαδρομή. 1060 01:17:51,900 --> 01:17:55,440 Περιττό να πω, δεν το βρείτε και μπορείτε να πάρετε ένα σφάλμα. 1061 01:17:55,440 --> 01:17:59,300 Καλά. Υπάρχει ένα παράδειγμα της ακολουθίας ανάλυσης. 1062 01:17:59,300 --> 01:18:01,460 Και τι κάνουμε γι 'αυτό; 1063 01:18:01,460 --> 01:18:04,800 Παρατηρήστε αυτήν την πολύ ενδιαφέρουσα εντολή εδώ, eval. 1064 01:18:04,800 --> 01:18:06,530 Αναρωτιέμαι τι κάνει αυτό. 1065 01:18:06,530 --> 01:18:08,760 Αν κοιτάξετε στο εγχειρίδιο - και ας το κάνουμε αυτό 1066 01:18:08,760 --> 01:18:12,000 για να δείξει πώς σύγχυση είναι αυτές εγχειρίδια - 1067 01:18:12,000 --> 01:18:19,400 άνθρωπος tcsh, σύγχυση εγχειρίδιο, βρίσκοντας τα πράγματα εδώ δεν είναι εύκολο ούτε. 1068 01:18:19,400 --> 01:18:31,850 Εδώ πάμε, eval arg, ώστε να έχουμε 1 ή περισσότερα επιχειρήματα 1069 01:18:31,850 --> 01:18:34,090 και υπάρχει μια λίστα με τα πράγματα εκεί. 1070 01:18:34,090 --> 01:18:37,730 Αντιμετωπίζει τα επιχειρήματα ως εισροές στο κέλυφος 1071 01:18:37,730 --> 01:18:43,600 και εκτελεί τις εντολές που προκύπτουν στα πλαίσια της τρέχουσας κελύφους. 1072 01:18:43,600 --> 01:18:46,900 Αυτό χρησιμοποιείται συνήθως για να εκτελέσει τις εντολές που δημιουργούνται ως αποτέλεσμα της εντολής 1073 01:18:46,900 --> 01:18:51,310 ή αντικατάσταση μεταβλητών, επειδή parsing συμβαίνει πριν από αυτές τις αντικαταστάσεις. 1074 01:18:51,310 --> 01:18:52,580 Πολύ καλό. 1075 01:18:52,580 --> 01:18:54,740 Και εδώ θα αναφερθώ καν στην εντολή TSET για τη χρήση του δείγματος 1076 01:18:54,740 --> 01:18:57,700 όπως αυτή που σας έδειξα. 1077 01:18:57,700 --> 01:19:00,440 Τώρα πρέπει να πάρω το πίσω παράθυρο σε ένα χρήσιμο χώρο. 1078 01:19:03,150 --> 01:19:07,800 Ας πάρει εδώ και θα δούμε ότι η eval χρησιμοποιείται ακριβώς πριν από αυτό. 1079 01:19:07,800 --> 01:19:14,010 Ας δούμε λοιπόν τι θα συμβεί αν βάλουμε - εδώ ανεβαίνουμε με τα βέλη σε αυτή την εντολή 1080 01:19:14,010 --> 01:19:20,940 και Ελέγχου Α στην αρχή, eval. 1081 01:19:20,940 --> 01:19:22,850 Εντάξει, έτσι λειτουργεί. 1082 01:19:22,850 --> 01:19:26,440 Όταν κάνετε eval, παίρνει ό, τι έρχεται μετά από αυτό και το καθιστά μια εντολή. 1083 01:19:26,440 --> 01:19:29,460 Αυτό σας δίνει τη δυνατότητα να αναλύσει ουσιαστικά δύο φορές. 1084 01:19:29,460 --> 01:19:33,710 Το τμήμα εδώ εκτελεί αυτήν την εντολή μέσα από τα ανάποδα μονά εισαγωγικά, 1085 01:19:33,710 --> 01:19:36,210 παίρνει την έξοδο. 1086 01:19:36,210 --> 01:19:42,850 Έξοδος υποτίθεται ότι πρέπει να λειτουργούν ως τις εντολές αυτές εδώ, όπως αυτές 1087 01:19:42,850 --> 01:19:45,890 σε αυτό και αυτό. 1088 01:19:45,890 --> 01:19:50,100 Έτσι, αυτές οι εντολές είναι τώρα εδώ σε αυτήν την ακολουθία, 1089 01:19:50,100 --> 01:19:58,950 αλλά αυτά είναι ενσωματωμένες εντολές και δεν μπορεί να τα πάρει αμέσως. 1090 01:19:58,950 --> 01:20:06,440 Οπότε πάμε να eval, eval παίρνει ότι μέχρι, ξεκινά το όλο θέμα και πάλι, και λειτουργεί. 1091 01:20:06,440 --> 01:20:18,460 Ένα παράδειγμα τόσο της backquoting, eval, parsing, τις συνέπειες της ανάλυσης, 1092 01:20:18,460 --> 01:20:21,910 και μια εντολή που είναι πιθανώς πολύ μικρή χρησιμότητα για να σας σήμερα. 1093 01:20:21,910 --> 01:20:25,540 Εντάξει. Εντάξει, umask. 1094 01:20:25,540 --> 01:20:32,160 Ας δούμε αυτήν την εντολή εδώ, umask 022. Αναρωτιέμαι τι κάνει αυτό. 1095 01:20:32,160 --> 01:20:38,420 Ας απλά πληκτρολογήστε umask με τίποτα μετά από αυτό. 22. Εντάξει. 1096 01:20:38,420 --> 01:20:44,350 022 και να το κάνουμε ξανά. 1097 01:20:44,350 --> 01:20:48,580 Όπως θα έχετε καταλάβει, umask χωρίς επιχειρήματα σας λέει την τρέχουσα μάσκα? 1098 01:20:48,580 --> 01:20:51,760 umask με επιχειρήματα κάνει αυτό, αλλά αυτό ήταν το ένα είχα ήδη. 1099 01:20:51,760 --> 01:20:53,800 Τι σημαίνει 022 σημαίνει; 1100 01:21:01,650 --> 01:21:07,080 Αυτοί εδώ οι προστασίες για ένα αρχείο. 1101 01:21:07,080 --> 01:21:11,440 Θα καθορίσει ποιος επιτρέπεται να διαβάσει ή να γράψει ή να εκτελέσει το αρχείο. 1102 01:21:11,440 --> 01:21:16,560 Οι προστασίες που ονομάζεται επίσης δικαιώματα. 1103 01:21:16,560 --> 01:21:21,390 Το r σημαίνει ανάγνωση, το w για write, 1104 01:21:21,390 --> 01:21:25,500 και το Χ, το οποίο δεν είναι παρούσα εκεί, στέκεται για να εκτελέσει. 1105 01:21:25,500 --> 01:21:27,260 Υπάρχουν 3 κατηγορίες εκεί. 1106 01:21:27,260 --> 01:21:33,540 Τα τελευταία 3 στοιχεία είναι στην κατηγορία των χρηστών. Αυτοί ισχύουν για μένα, το χρήστη. 1107 01:21:33,540 --> 01:21:36,870 Αυτά τα 3 εδώ ισχύουν για την ομάδα. 1108 01:21:36,870 --> 01:21:41,590 Το αρχείο ανήκει στην ομάδα 1, ο χρήστης μπορεί να ανήκει σε πολλές ομάδες, 1109 01:21:41,590 --> 01:21:47,150 αλλά αν ο χρήστης βρίσκεται μέσα στην ομάδα στην οποία ανήκει αυτό το αρχείο, 1110 01:21:47,150 --> 01:21:51,090 τότε οι προστασίες θα ισχύουν για αυτόν, αν αυτός δεν είναι ο χρήστης. 1111 01:21:51,090 --> 01:21:54,230 Και αυτό είναι όλοι οι άλλοι. 1112 01:21:55,540 --> 01:21:57,690 Οι κατηγορίες αυτές είναι αμοιβαία αποκλειόμενες. 1113 01:21:57,690 --> 01:21:59,750 Οι προστασίες των χρηστών εφαρμόζονται με τον ίδιο, 1114 01:21:59,750 --> 01:22:03,780 η προστασία της ομάδας ισχύουν για τα μέλη της ομάδας, εκτός από το χρήστη, 1115 01:22:03,780 --> 01:22:08,110 και οι άλλες προστασίες ισχύουν μόνο για τους ανθρώπους, εκτός από το χρήστη και τα μέλη της ομάδας. 1116 01:22:08,110 --> 01:22:12,320 Εάν υπάρχει μια r ή aw ή x, αυτό σημαίνει ότι έχει χορηγηθεί προστασία. 1117 01:22:12,320 --> 01:22:13,950 Αν υπάρχει ένα ενωτικό, αυτό σημαίνει ότι δεν είναι. 1118 01:22:13,950 --> 01:22:16,690 Στην πραγματικότητα υπάρχουν άλλα πράγματα που μπορούν να τεθούν εδώ, εκτός από αυτά, 1119 01:22:16,690 --> 01:22:18,350 το οποίο δεν θα μπει τώρα. 1120 01:22:18,350 --> 01:22:24,450 Το umask ορίζει μια προεπιλογή για τα αρχεία που έχετε δημιουργήσει. 1121 01:22:24,450 --> 01:22:28,580 Και σαν μάσκα, ουσιαστικά λέει τα κομμάτια που δεν ορίσετε. 1122 01:22:28,580 --> 01:22:30,450 Πώς έχει γίνει αυτό bits; 1123 01:22:30,450 --> 01:22:33,240 Αν νομίζετε ότι από κάθε ένα από αυτά ως οκταδικό αριθμό, 1124 01:22:33,240 --> 01:22:42,120 αυτό είναι το 1s bit, αυτό είναι το 2s, αυτή είναι η 4s. 1125 01:22:42,120 --> 01:22:45,840 Έτσι, από 0 έως 7 1126 01:22:45,840 --> 01:22:51,770 Θα περιγράψει τι συνδυασμός του r, w, καθώς και το x έχετε για αυτά τα 3 1127 01:22:51,770 --> 01:22:53,710 και, στη συνέχεια, ένας παρόμοιος αριθμός για αυτές και στη συνέχεια για αυτές. 1128 01:22:53,710 --> 01:23:12,030 Έτσι 022 σημαίνει 0 για άλλες 2 για την ομάδα, 2 για το χρήστη. 1129 01:23:12,030 --> 01:23:15,870 Αλλά αυτό είναι μια μάσκα. Η μάσκα είναι ό, τι δεν έχετε. 1130 01:23:19,380 --> 01:23:20,610 Λυπάμαι. Σας έδωσα μόνο τα πράγματα με λάθος σειρά. 1131 01:23:20,610 --> 01:23:25,620 Είναι η πρώτη 3. Αυτά τα 3 είναι ο χρήστης, αυτά τα 3 είναι η ομάδα, αυτά τα 3 είναι το άλλο. 1132 01:23:25,620 --> 01:23:27,970 Συγνώμη που έδωσε αυτά με λάθος σειρά. 1133 01:23:27,970 --> 01:23:31,910 Η 0, η οποία είναι η πρώτη από αυτές, δεν εμφανίζει την τιμή, 1134 01:23:31,910 --> 01:23:35,430 αλλά αν ένας αριθμός δεν είναι εκεί, είναι ένα 0. 1135 01:23:35,430 --> 01:23:38,370 Αυτό σημαίνει ότι όλα τα 3 από αυτά θα πρέπει να επιτρέπονται. 1136 01:23:38,370 --> 01:23:41,550 Παρατηρήστε ότι στη συγκεκριμένη ένα από τα x δεν επιτρέπεται. 1137 01:23:41,550 --> 01:23:44,090 Ο λόγος είναι ότι το κέλυφος είναι ικανό προσδιορισμού 1138 01:23:44,090 --> 01:23:46,260 αν ένα αρχείο θα πρέπει να εκτελεστεί ή όχι. 1139 01:23:46,260 --> 01:23:49,800 Δεδομένου ότι αυτό δεν είναι ένα εκτελέσιμο αρχείο, δεν έθεσε το x. 1140 01:23:49,800 --> 01:23:54,000 Τα 2 μέσα που γράφουν την άδεια, τη δεύτερη κατηγορία εδώ, 1141 01:23:54,000 --> 01:23:56,500 το ένα στη μέση, απορρίπτεται. 1142 01:23:56,500 --> 01:23:58,500 Έτσι και πάλι, αυτά είναι τα πράγματα που αρνήθηκε. 1143 01:23:58,500 --> 01:24:02,080 Λοιπόν, χ επιτρέπεται αλλά δεν είναι εδώ επειδή δεν είναι εκτελέσιμο 1144 01:24:02,080 --> 01:24:04,260 και ομοίως για τους άλλους. 1145 01:24:04,260 --> 01:24:08,880 Έτσι, αυτό είναι μια κοινή umask. 1146 01:24:08,880 --> 01:24:14,630 Ένα άλλο κοινό ένα είναι 700 - δώστε στον εαυτό σας τα πάντα και κανένας άλλος τίποτα. 1147 01:24:14,630 --> 01:24:17,040 Και υπάρχουν και άλλες δυνατότητες. 1148 01:24:21,340 --> 01:24:27,110 Θα επιστρέψω σε αυτό. Χρησιμοποιώντας την ιστορία που μπορώ να ψάξει πίσω γι 'αυτό, LWH εκεί. 1149 01:24:27,110 --> 01:24:30,210 Εντάξει. Έτσι, εδώ, αυτά είναι τα κοχύλια. 1150 01:24:30,210 --> 01:24:36,020 Bash, ο ιδιοκτήτης, ο οποίος είναι ο λογαριασμός του συστήματος, μπορεί να κάνει τα πάντα. 1151 01:24:36,020 --> 01:24:41,210 Ομάδα και όλοι οι υπόλοιποι μπορούν να διαβάζουν ή να εκτελέσει, αλλά δεν γράφουν. 1152 01:24:41,210 --> 01:24:44,570 Αυτός δεν επιτρέπουν καν ο ιδιοκτήτης να γράψει σε αυτό. 1153 01:24:44,570 --> 01:24:46,460 Εάν ο ιδιοκτήτης ήθελε να γράψει σε αυτό το λογαριασμό συστήματος, 1154 01:24:46,460 --> 01:24:48,020 θα πρέπει να αλλάξετε την προστασία από την πρώτη. 1155 01:24:48,020 --> 01:24:53,940 Αλλά και πάλι, το umask ορίζει την προεπιλεγμένη συγκαλύπτοντας αυτή, 1156 01:24:53,940 --> 01:24:57,160 αναφέροντας τα κομμάτια που δεν θα πρέπει να οριστεί. 1157 01:24:57,160 --> 01:25:04,380 Αυτό είναι συνήθως σε ένα από τα αρχεία αρχικοποίησης σας, το οποίο είναι το. Cshrc για την C-κελύφους 1158 01:25:04,380 --> 01:25:07,500 ή το. προφίλ για τα κελύφη Bourne τύπου. 1159 01:25:07,500 --> 01:25:12,520 Μπορεί να είναι αλλού επίσης αν υπάρχουν άλλα αρχεία αρχικοποίησης στο σύστημα. 1160 01:25:12,520 --> 01:25:14,610 Τέλος πάντων, αυτό είναι umask. 1161 01:25:14,610 --> 01:25:18,180 Υπάρχει κάτι το είδος περίεργο εδώ, 1162 01:25:18,180 --> 01:25:22,800 και ότι είναι, γιατί είναι μια ενιαία διοίκηση υπάρχει γι 'αυτό; 1163 01:25:22,800 --> 01:25:28,690 Αν έγραφα αυτό, θα ήθελα να μια μεταβλητή, umask = κάποια αξία το κάνει. 1164 01:25:28,690 --> 01:25:31,100 Γιατί υπάρχει μια ολόκληρη εντολή μόνο για το σκοπό αυτό; 1165 01:25:31,100 --> 01:25:34,560 Ο λόγος είναι αυτό πηγαίνει ακριβώς πίσω στις ρίζες του Unix. 1166 01:25:34,560 --> 01:25:41,050 Το Unix ήταν μόνο μερικά προγραμματισμό των έργων στα Bell Labs στις αρχές του 1970. 1167 01:25:41,050 --> 01:25:42,610 Οι άνθρωποι απλά πήρε μαζί με το πρόγραμμα. 1168 01:25:42,610 --> 01:25:45,290 Ποτέ δεν προορίζεται να γίνει ένα παγκόσμιο λειτουργικό σύστημα. 1169 01:25:45,290 --> 01:25:47,250 Διαφορετικοί άνθρωποι έγραψαν διάφορα μέρη χωρίς να σκεφτεί πολύ 1170 01:25:47,250 --> 01:25:49,790 για το πώς επρόκειτο να χρησιμοποιηθεί - και όχι αποσπασματικά. 1171 01:25:49,790 --> 01:25:53,290 Και ήρθε μαζί σαν αυτό, και είναι ακόμα, όπως ότι σε ορισμένα σημεία. 1172 01:25:53,290 --> 01:25:57,930 Έτσι ώστε να αντανακλά την ιστορία, και εξακολουθούν να υπάρχουν αυτές οι ασυνέπειες και περίεργα στοιχεία της. 1173 01:25:57,930 --> 01:26:00,750 Εντάξει. Επόμενο εδώ. 1174 01:26:08,170 --> 01:26:11,000 Όπως έγραψα νωρίτερα, το C-shell δεν είναι πραγματικά χρησιμοποιείται πολύ για τον προγραμματισμό, 1175 01:26:11,000 --> 01:26:12,420 αν και μπορεί να είναι. 1176 01:26:12,420 --> 01:26:15,080 Εκτελεί πιο αργά, και πάλι το trade-off μεταξύ αλληλεπιδραστική χρήση, 1177 01:26:15,080 --> 01:26:17,820 το οποίο έχει περισσότερη επεξεργασία από την ταχύτητα που εμπλέκονται, 1178 01:26:17,820 --> 01:26:20,710 το οποίο μπορεί να κάνει και χωρίς την επεξεργασία. 1179 01:26:20,710 --> 01:26:28,320 Τα επιπλέον χαρακτηριστικά που προστέθηκαν στο κέλυφος Bourne από τους Korn και τους Bourne-again κοχύλια 1180 01:26:28,320 --> 01:26:32,120 δεν φαίνεται να επιβραδύνει τους, και δεν ξέρω γιατί συμβαίνει αυτό. 1181 01:26:32,120 --> 01:26:36,310 Θα μπορούσε απλώς να είναι καλύτερο προγραμματισμό, αλλά δεν είμαι σε θέση να γνωρίζω. 1182 01:26:36,310 --> 01:26:40,420 Επιταχύνει εδώ στην πραγματικότητα δεν είναι μια τέτοια μεγάλη υπόθεση, αν και αναφέρεται. 1183 01:26:40,420 --> 01:26:43,690 Ο λόγος είναι ότι τα shell scripts πραγματικά να πάρει αρκετά γρήγορα. 1184 01:26:43,690 --> 01:26:46,450 Εάν υπάρχει πολλή εντολές όπως σε ένα πρόγραμμα υπολογιστικών, 1185 01:26:46,450 --> 01:26:49,110 τότε μάλλον δεν θα το κάνει σε ένα σενάριο φλοιού. 1186 01:26:49,110 --> 01:26:51,450 Οι εργασίες που υπάρχουν είναι αρκετά απλή και άμεση. 1187 01:26:51,450 --> 01:26:53,960 Οι αυτοί που έχω βιώσει που είναι πάρα πολύ αργά 1188 01:26:53,960 --> 01:26:57,110 περιλαμβάνει επαναλαμβανόμενες εφαρμογές της αργής εντολές. 1189 01:26:57,110 --> 01:27:00,480 Νωρίτερα ανέφερα την συντάκτης ροής sed. Η εντολή αυτή είναι αργή. 1190 01:27:00,480 --> 01:27:03,760 Αν εκτελέσετε sed πολλές φορές, θα πάρετε μια αργή σενάριο, αλλά δεν είναι το κέλυφος που είναι αργή. 1191 01:27:03,760 --> 01:27:07,920 Τρέχει στο κέλυφος Bourne δεν θα είναι πολύ πιο γρήγορα από ό, τι τρέχει στο C-shell, 1192 01:27:07,920 --> 01:27:10,070 αν και υπάρχει ίσως κάποια πλεονεκτήματα εκεί. 1193 01:27:10,070 --> 01:27:12,760 Οι πρόσθετες δυνατότητες προγραμματισμού, από την άλλη πλευρά, 1194 01:27:12,760 --> 01:27:17,920 είναι σημαντικοί λόγοι για τους οποίους θα πρέπει να χρησιμοποιήσετε τα κελύφη Bourne τύπου. 1195 01:27:17,920 --> 01:27:21,390 C-shell έχει περίεργα χαρακτηριστικά σε αυτό - 1196 01:27:21,390 --> 01:27:25,250 το γεγονός ότι δεν ξέρετε αν μια μεταβλητή είναι μια μεταβλητή του κελύφους ή μεταβλητή περιβάλλοντος. 1197 01:27:25,250 --> 01:27:27,440 Μπορεί να είναι πολύ συγκεχυμένη. 1198 01:27:27,440 --> 01:27:32,170 Δεν είναι τόσο εύκολο να γράψει 1199 01:27:32,170 --> 01:27:35,930 μόνο με βάση την εμπειρία σας από τον προγραμματισμό σε άλλες γλώσσες. 1200 01:27:35,930 --> 01:27:41,350 Νομίζω ότι μπορείτε να βρείτε τα κελύφη Bourne τύπου πιο συνεπής με την εμπειρία σας. 1201 01:27:43,730 --> 01:27:49,270 Κάποια scripts, όμως, μπορεί να είναι χιλιάδες γραμμές σε μήκος. 1202 01:27:49,270 --> 01:27:52,450 Εκείνοι που έχω δει είναι που χρησιμοποιούνται για την επισκευή των λειτουργικών συστημάτων. 1203 01:27:52,450 --> 01:27:55,450 Αυτοί μπορεί να εκτελέσει πολύ αργά, αλλά δεν μπορείτε να εκτελέσετε αυτές τις πολύ συχνά. 1204 01:27:55,450 --> 01:27:57,180 Είναι μόνο όταν κάνεις διορθώσεις, 1205 01:27:57,180 --> 01:27:59,450 και αυτό είναι μόνο ο διαχειριστής του συστήματος που κάνει αυτά τα πράγματα, 1206 01:27:59,450 --> 01:28:01,840 έτσι δεν είναι πραγματικά πολύ από ένα θέμα. 1207 01:28:01,840 --> 01:28:06,980 Εκείνοι που είναι εκατοντάδες γραμμές καιρό στην πραγματικότητα εκτελούν αρκετά γρήγορα. 1208 01:28:06,980 --> 01:28:10,540 Παραπέμπουν σε αυτό εδώ, ποιες είναι αυτές οι βελτιώσεις; 1209 01:28:10,540 --> 01:28:13,170 Έχω ήδη αναφέρει μερικά από αυτά - πίνακες, υπολογισμοί, 1210 01:28:13,170 --> 01:28:20,540 τα $ () έκφρασης για τους υπολογισμούς του φλοιού Bash, 1211 01:28:20,540 --> 01:28:23,050 το άλλο είδος της αντικατάστασης εντολών. 1212 01:28:23,050 --> 01:28:25,360 Υπάρχουν διάφορα είδη των εντολών δοκιμών 1213 01:28:25,360 --> 01:28:29,350 με την οποία μπορείτε να κάνετε εξαρτάται από δοκιμές σχετικά με την ύπαρξη ενός αρχείου ή άλλα πράγματα. 1214 01:28:29,350 --> 01:28:34,790 Διαρκούν εδώ, αυτή η εντολή εδώ. 1215 01:28:34,790 --> 01:28:38,480 Τι κάνει αυτό το κάνει, και γιατί κάποιος θα το χρησιμοποιήσει; 1216 01:28:51,170 --> 01:28:52,990 printenv variablename. 1217 01:28:52,990 --> 01:28:56,130 Ξέρουμε τι printenv κάνει. Μας αφηγείται την τιμή μιας μεταβλητής. 1218 01:28:56,130 --> 01:29:00,850 Και printenv variablename δεν θα μας πει πάρα πολύ γιατί δεν υπάρχει τέτοια μεταβλητή. 1219 01:29:03,550 --> 01:29:05,120 Λευκά. 1220 01:29:05,120 --> 01:29:08,440 Αλλά ας το δώσει κάτι ουσιαστικό. 1221 01:29:13,420 --> 01:29:16,800 Αυτό δεν είναι ούτε εκεί. Εντάξει. Υποθέτω, ότι δεν ορίζεται αυτό. 1222 01:29:16,800 --> 01:29:18,020 Ας ελέγξει το περιβάλλον μου. 1223 01:29:18,020 --> 01:29:20,900 Αυτό είναι μια άλλη εντολή με την οποία μπορείτε να επιθεωρήσει το περιβάλλον σας. 1224 01:29:20,900 --> 01:29:24,470 Υπάρχει παλιό καλό EDITOR, που είδαμε πριν. 1225 01:29:42,360 --> 01:29:44,120 Τι σημαίνει ότι κάνει; 1226 01:29:44,120 --> 01:29:48,050 Εδώ έχουμε μια έκφραση backquote. 1227 01:29:48,050 --> 01:29:50,370 Θυμηθείτε ότι αυτό είναι το C-shell. 1228 01:29:50,370 --> 01:29:54,850 Έτσι printenv ΕΠΙΜΕΛΕΙΑ θα μας δώσει μια τιμή EDITOR. Είναι vi. 1229 01:29:54,850 --> 01:29:59,790 Και τότε θα ορίσετε αυτήν την τιμή σε μεταβλητή α, την εντολή set. 1230 01:29:59,790 --> 01:30:02,860 Έτσι τώρα, αν κάνω echo $ a, παίρνω vi. 1231 01:30:02,860 --> 01:30:05,850 Αυτό δεν φαίνεται τρομερά χρήσιμο. 1232 01:30:05,850 --> 01:30:08,080 Ωστόσο, δεν έχουν πραγματικά έναν σκοπό. 1233 01:30:08,080 --> 01:30:12,260 Επειδή δεν γνωρίζουμε αν η μεταβλητή είναι μια μεταβλητή του κελύφους ή μεταβλητή περιβάλλοντος 1234 01:30:12,260 --> 01:30:16,280 με χρήση της σύνταξης αξιολόγησης σύμβολο του δολαρίου, μπορούμε να χρησιμοποιήσουμε printenv 1235 01:30:16,280 --> 01:30:19,460 για να βεβαιωθείτε ότι είναι μια μεταβλητή περιβάλλοντος. 1236 01:30:19,460 --> 01:30:22,550 Έτσι αν υπήρχε μια μεταβλητή κέλυφος editor, αυτό δεν θα το πάρει. 1237 01:30:22,550 --> 01:30:25,640 Αυτό λειτουργεί μόνο με τη μεταβλητή περιβάλλοντος. 1238 01:30:25,640 --> 01:30:28,370 Αν υπήρχε μια μεταβλητή του κελύφους και θα ήθελα την αξία του, 1239 01:30:28,370 --> 01:30:29,980 Θα πρέπει να βρούμε κάποιο άλλο τρόπο για να το κάνει. 1240 01:30:29,980 --> 01:30:33,530 Ένας τρόπος για να γίνει αυτό θα ήταν κάνοντας σετ και σωληνώσεις. 1241 01:30:33,530 --> 01:30:36,130 Αυτό είναι ένα από τα μεταχαρακτήρων, ειδικούς χαρακτήρες. 1242 01:30:36,130 --> 01:30:38,370 Στέλνει την έξοδο του συνόλου σε κάτι άλλο. 1243 01:30:38,370 --> 01:30:40,650 Ας δούμε τι μπορούμε να βρούμε εκεί. 1244 01:30:40,650 --> 01:30:49,340 Τίποτα. Εντάξει. Ας δούμε τι υπάρχει εκεί όλοι μαζί. 1245 01:30:49,340 --> 01:30:53,580 Ήταν echo_style, το ένα που ανέφερα πριν. Εντάξει, ας το κάνουμε αυτό. 1246 01:31:02,460 --> 01:31:06,230 Θυμηθείτε ανέφερα και πριν, echo_style 1247 01:31:06,230 --> 01:31:08,410 καθορίζει τον τρόπο η εντολή echo θα εκτελεστεί. 1248 01:31:08,410 --> 01:31:10,940 bsd σημαίνει Berkeley Πρότυπης Κατανομής. 1249 01:31:10,940 --> 01:31:13,200 Αυτή είναι η Berkeley Unix από τη δεκαετία του 1970. 1250 01:31:13,200 --> 01:31:16,630 Αυτός είναι ένας από τους τρόπους που αντηχούν μπορεί να τρέξει. 1251 01:31:16,630 --> 01:31:22,310 Ρύθμιση echo_style σε αυτή την τιμή στο TC-κέλυφος θα οδηγήσει την echo να συμπεριφέρεται με αυτόν τον τρόπο. 1252 01:31:22,310 --> 01:31:27,670 Έτσι που το κάνει αυτό, αλλά που παίρνει μόνο μεταβλητές κελύφους. 1253 01:31:27,670 --> 01:31:35,430 Δεν θα βρει Editor, το οποίο δεν είναι μια μεταβλητή κελύφους. 1254 01:31:36,870 --> 01:31:38,050 Τίποτα. 1255 01:31:38,050 --> 01:31:39,660 Έτσι, αυτό είναι ένας τρόπος να τα διακρίνει. 1256 01:31:39,660 --> 01:31:42,000 Αλλά το γεγονός ότι θα πρέπει να περάσει από κάποια παράξενη εντολή όπως αυτή 1257 01:31:42,000 --> 01:31:45,500 να γίνει διάκριση μεταξύ των μεταβλητών του κελύφους ή μεταβλητές περιβάλλοντος 1258 01:31:45,500 --> 01:31:49,970 δείχνει το είδος της πρακτικό χαρακτήρα του C-shell για ορισμένους σκοπούς. 1259 01:31:52,290 --> 01:31:57,960 Και τώρα, το τελευταίο και ίσως λιγότερο, αυτό είναι οι σελίδες man. 1260 01:31:57,960 --> 01:32:03,190 Όσοι από που ίσως γνωρίζετε, ο άνθρωπος είναι η σύντομη εντολή για χειροκίνητη. 1261 01:32:03,190 --> 01:32:08,610 Οι σελίδες man για τα κελύφη είναι δύσκολο να διαβαστούν. Είναι πολύ καιρό. 1262 01:32:08,610 --> 01:32:14,060 Είναι οργανωμένη με τρόπο που μπορεί να είναι δύσκολο να βρείτε αυτό που ψάχνετε. 1263 01:32:14,060 --> 01:32:15,980 Έτσι, αν ψάχνετε για κάτι με ένα σκοπό, 1264 01:32:15,980 --> 01:32:20,050 ίσως δεν ξέρω αν ο σκοπός είναι μια μεταβλητή του κελύφους ή κάτι άλλο, 1265 01:32:20,050 --> 01:32:21,630 έτσι μπορεί να μην ξέρετε πού να κοιτάξετε για αυτό. 1266 01:32:21,630 --> 01:32:25,030 Μπορείτε να ψάξετε για διάφορα χορδές, αλλά οι χορδές επαναλαμβάνονται συχνά. 1267 01:32:25,030 --> 01:32:27,640 Έτσι, είναι γενικά δύσκολο να διαβαστεί. 1268 01:32:27,640 --> 01:32:33,810 Εμείς απλά κοίταξε τη σελίδα man TC-shell λίγο πριν να βρείτε την εντολή eval. 1269 01:32:33,810 --> 01:32:36,610 Κάποια πράγματα πάνε πιο γρήγορα. 1270 01:32:36,610 --> 01:32:38,860 Μία προσέγγιση είναι να ψάξει για ένα string. 1271 01:32:38,860 --> 01:32:40,360 Μπορείτε να χρησιμοποιήσετε τη συσκευή τηλεειδοποίησης. 1272 01:32:40,360 --> 01:32:49,080 Pager έχει την κάθετο για να ψάξουν για μια εντολή ή ένα string μέσα σε μια λειτουργία pager. 1273 01:32:49,080 --> 01:32:52,830 Ο άνθρωπος από προεπιλογή θα χρησιμοποιήσει συσκευές τηλεειδοποίησης, είτε είναι περισσότερο ή λιγότερο. 1274 01:32:52,830 --> 01:32:56,560 Δεν ξέρω αν είστε εξοικειωμένοι με αυτά, αλλά αυτά μπορεί να δείξει τα αρχεία κομμάτι από το κομμάτι. 1275 01:32:56,560 --> 01:33:00,550 Έχω χρησιμοποιήσει λιγότερο να εμφανίσετε αυτά τα συγκεκριμένα αρχεία που έχουμε εδώ. 1276 01:33:00,550 --> 01:33:03,300 Μπορείτε να ψάξετε εκεί μέσα. 1277 01:33:03,300 --> 01:33:04,880 Μπορείτε να δοκιμάστε να χρησιμοποιήσετε διαφορετικές χορδές αναζήτησης. 1278 01:33:04,880 --> 01:33:08,420 Επίσης man σελίδες σε διαφορετικά λειτουργικά συστήματα μπορεί να μην είναι το ίδιο. 1279 01:33:08,420 --> 01:33:11,130 Μπορούν να είναι ξεχωριστές σελίδες για csh και tcsh. 1280 01:33:11,130 --> 01:33:14,500 Όπου και αν δεν είναι στο Mac, αλλά θα μπορούσε να είναι αν αυτά είναι ξεχωριστές εντολές. 1281 01:33:14,500 --> 01:33:19,000 Αν sh πραγματικά δεν απαιτούν Bash, πιθανότατα θα υπάρξει μια ξεχωριστή σελίδα man. 1282 01:33:19,000 --> 01:33:25,820 Μερικά συστήματα έχουν ξεχωριστές σελίδες man μόνο για τα C-shell ενσωματωμένες εντολές. 1283 01:33:25,820 --> 01:33:30,250 Μερικές φορές, αν θέλετε να διαβάσετε μια περιγραφή ενός ενσωματωμένη εντολή 1284 01:33:30,250 --> 01:33:35,350 ότι είναι, επίσης, στην πορεία, όπως echo, θα πρέπει να διαβάσετε τη σελίδα man για αυτή την εντολή echo 1285 01:33:35,350 --> 01:33:37,610 για να καθορίσει πώς θα λειτουργήσει ως ενσωματωμένη εντολή 1286 01:33:37,610 --> 01:33:39,760 ακόμα κι αν δεν είστε καλώντας την ενσωματωμένη εντολή. 1287 01:33:41,630 --> 01:33:46,090 Αυτό είναι ένα μειονέκτημα του λειτουργικού συστήματος σε γενικές γραμμές, όχι μόνο για τα κελύφη, 1288 01:33:46,090 --> 01:33:50,710 αν και για τα κελύφη ειδικότερα οι σελίδες man είναι αρκετά μεγάλη, 1289 01:33:50,710 --> 01:33:56,180 εν μέρει επειδή έχουν προστεθεί χρήσιμες λειτουργίες για τους, η οποία μπορεί να είναι θετική. 1290 01:33:56,180 --> 01:34:00,290 Εντάξει. Υπάρχουν ερωτήσεις; Τυχόν θέματα που θέλετε να εμφανιστεί; 1291 01:34:00,290 --> 01:34:03,390 Οτιδήποτε σχετικό εδώ; 1292 01:34:04,540 --> 01:34:07,100 Λοιπόν, αυτό είναι πολύ ωραίο να μιλάμε σε όλους σας. 1293 01:34:07,100 --> 01:34:09,690 Ελπίζω να έχεις κάτι από το σεμινάριο 1294 01:34:09,690 --> 01:34:13,080 ότι θα είναι χρήσιμο για σας στις μελλοντικές επιδιώξεις σας. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]