1 00:00:00,000 --> 00:00:02,320 >> [Seminar - Unix-Shells, Environments] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [Dies ist CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Das heutige Thema ist die Unix-Shell. 5 00:00:12,770 --> 00:00:20,600 Ich bin Douglas Kline, Experte, oder zumindest einigermaßen kompetenten Benutzer, von der Schale. 6 00:00:20,600 --> 00:00:25,280 Eine Schale ist die Schnittstelle für den Benutzer, um das Betriebssystem des Computers. 7 00:00:25,280 --> 00:00:29,580 Der Name ist irreführend, da, im Gegensatz zu einem Tier Schale, 8 00:00:29,580 --> 00:00:34,890 welche Fest und Schutz ist, erlaubt die Kommunikation der Computer-Shell. 9 00:00:34,890 --> 00:00:39,120 So poröse Membran wäre wahrscheinlich eine bessere Metapher sein. 10 00:00:39,120 --> 00:00:44,500 >> Die ursprüngliche Shell für Unix ist die Bourne-Shell. 11 00:00:44,500 --> 00:00:46,450 Bourne wird Dinkel B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne war einer der ursprünglichen Autoren von Unix, 13 00:00:49,770 --> 00:00:51,700 und so wird die Schale nach ihm benannt. 14 00:00:51,700 --> 00:00:54,850 Der Name dieser Shell als Befehl ist einfach nur sh. 15 00:00:54,850 --> 00:00:57,400 Das ist der Befehl, den Sie ausführen können. 16 00:00:57,400 --> 00:01:00,810 Die Schale beginnt bei der Anmeldung. 17 00:01:00,810 --> 00:01:04,459 Wenn Sie sich an den Computer an, startet die Shell läuft nur für Sie, 18 00:01:04,459 --> 00:01:06,820 und das ist, was nimmt Ihre Befehle. 19 00:01:06,820 --> 00:01:09,790 Es kann auch zu anderen Zeiten zu starten. 20 00:01:09,790 --> 00:01:16,780 Wenn Sie ein Fenster mit keinem anderen Anzeige zu bringen, wird es für Sie eine Shell starten. 21 00:01:16,780 --> 00:01:20,450 Das ist, wie es ist, dass man zu einem Fenster und starten Sie Befehle 22 00:01:20,450 --> 00:01:23,960 und so weiter gibt, obwohl Sie sich nicht bei diesem Fenster. 23 00:01:23,960 --> 00:01:26,670 Darüber hinaus, wenn Sie eine Remote-Login, 24 00:01:26,670 --> 00:01:30,250 dann wird es eine Shell auf dem Remote-Computer zu starten. 25 00:01:30,250 --> 00:01:44,310 Und es ist möglich, Befehle ohne eine interaktive Shell ausgeführt. 26 00:01:44,310 --> 00:01:48,990 Das kann im aktuellen Betrieb bedeuten, 27 00:01:48,990 --> 00:01:50,700 und es kann auch bedeuten, eine Remote-Betrieb. 28 00:01:50,700 --> 00:01:52,900 Sie können einen Befehl an einen anderen Computer, 29 00:01:52,900 --> 00:01:55,460 umfasst die Inbetriebnahme einer Schale da. 30 00:01:55,460 --> 00:01:57,760 In der Tat hat es die Gründung eines Shell dort zu schließen 31 00:01:57,760 --> 00:02:01,740 auch wenn das nicht Ihr Endzweck. 32 00:02:05,310 --> 00:02:12,350 Wenn etwas startet wie dieser, ist es nicht unbedingt eine neue Shell starten. 33 00:02:12,350 --> 00:02:17,430 Wenn Sie ein neues Fenster zu bringen, ist es möglich, es zu sagen, bis in einem Editor zu bringen 34 00:02:17,430 --> 00:02:18,940 oder einen anderen Befehl. 35 00:02:18,940 --> 00:02:20,560 In diesem Fall wird der Editor von Grund auf neu zu beginnen. 36 00:02:20,560 --> 00:02:22,930 Wenn der Editor beendet, endet das Fenster. 37 00:02:22,930 --> 00:02:24,620 Dies ist ein wenig ungewöhnlich, aber es kann getan werden. 38 00:02:24,620 --> 00:02:27,140 In diesen Fällen wird es nicht eine Schale sein. 39 00:02:27,140 --> 00:02:31,890 Also es ist nicht unbedingt der Fall, dass ein Fenster oder eine solche Anwendung öffnet sich eine Shell. 40 00:02:31,890 --> 00:02:34,030 >> Shell-Befehle analysiert. 41 00:02:34,030 --> 00:02:40,900 Parsing bedeutet die Identifizierung der verschiedenen Elemente und klassifiziert sie. 42 00:02:40,900 --> 00:02:43,470 In einem Befehl, die komplette Zeichenfolge, die Sie eingeben, 43 00:02:43,470 --> 00:02:47,310 Es werden 1 oder mehr einzelne Befehle ausgeführt werden können. 44 00:02:47,310 --> 00:02:50,050 Andere Elemente können Argumente sein. 45 00:02:50,050 --> 00:02:55,020 Es können auch Sonderzeichen, die die Ausführung eines Befehls zu beeinflussen. 46 00:02:55,020 --> 00:02:59,710 Sie können die Ausgabe in einem anderen als den Bildschirm zu senden 47 00:02:59,710 --> 00:03:01,750 wenn der Befehl würde normalerweise schicken Sie es auf den Bildschirm. 48 00:03:01,750 --> 00:03:04,390 Es kann Eingang umzuleiten, sie kann auch andere Dinge zu tun. 49 00:03:04,390 --> 00:03:08,120 Es gibt verschiedene andere Symbole, Zeichen, und so weiter. 50 00:03:08,120 --> 00:03:13,600 Parsing beinhaltet Bestimmung und Interpretation der diese Dinge. 51 00:03:13,600 --> 00:03:19,560 >> Nun, wenn es keine Fragen mehr, was eher wahrscheinlich ist, da gibt es keine Menschen mehr, 52 00:03:19,560 --> 00:03:24,620 werden wir zu meinem nächsten Seite hier weitergehen. 53 00:03:24,620 --> 00:03:29,170 >> Ich sagte vorhin, die Bourne-Shell ist die erste Shell. 54 00:03:29,170 --> 00:03:31,550 Es gibt andere. 55 00:03:31,550 --> 00:03:34,520 Eine davon ist die C-Shell. Der Befehl ist csh. 56 00:03:34,520 --> 00:03:36,830 Der Name C-Shell ist nur ein Spiel mit Worten. 57 00:03:36,830 --> 00:03:41,260 Diese Schale wurde mit Berkeley-Unix in der Mitte der 1970er Jahre eingeführt. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix war ein wegweisendes Ereignis in der Entwicklung von Unix. 59 00:03:44,830 --> 00:03:48,770 Es war eine große Revolution und unter anderem die Einführung dieser Schale. 60 00:03:48,770 --> 00:03:50,790 Der Grund für dieses Wortspiel, C-Shell, 61 00:03:50,790 --> 00:03:56,490 ist, dass die C-Shell hat einige Eigenschaften, die sie in der C-Sprache ähnelt, 62 00:03:56,490 --> 00:03:59,740 der die Bourne-Shell nicht - 63 00:03:59,740 --> 00:04:02,140 oder sie nicht über zu diesem Zeitpunkt. 64 00:04:02,140 --> 00:04:05,190 Es gibt auch die TC-Shell. 65 00:04:05,190 --> 00:04:07,360 Dies ist eine Obermenge der C-Shell. 66 00:04:07,360 --> 00:04:11,470 Es verfügt über zusätzliche Funktionen, von denen viele nützlich für die interaktive Nutzung sind, 67 00:04:11,470 --> 00:04:16,050 wie unter Hinweis auf Befehle in der History-Mechanismus, 68 00:04:16,050 --> 00:04:18,459 was ich etwas später zu beschreiben - 69 00:04:18,459 --> 00:04:23,120 in einfacher Weise nach einem Editor modelliert. 70 00:04:23,120 --> 00:04:29,170 Es hat auch Bindungen, die Sie um eine kurze Schlüsselzeichenfolge zu einer längeren Befehl zu binden. 71 00:04:29,170 --> 00:04:31,440 Wir gehen nicht zu bekommen sein, dass heute in. 72 00:04:31,440 --> 00:04:33,650 Es hat einige Funktionen, die nützlich sind für die Programmierung. 73 00:04:33,650 --> 00:04:37,020 Doch die C-Shell ist nicht oft für Shell-Programmierung verwendet. 74 00:04:37,020 --> 00:04:39,080 Shell-Programme, wenn Sie nicht schon wissen, 75 00:04:39,080 --> 00:04:41,690 sind Programme, die von Shell-Eigenschaften bestehen. 76 00:04:41,690 --> 00:04:43,220 Sie könnten diese als Programme auszuführen. 77 00:04:43,220 --> 00:04:46,760 Sie schreiben eine Reihe von Shell-Kommandos in eine Datei und die Datei ausführen. 78 00:04:46,760 --> 00:04:49,760 Sie brauchen nicht, es zu kompilieren. Dies ist eine interpretierende Sprache. 79 00:04:49,760 --> 00:04:57,320 Der Ausdruck C-Shell ist jetzt zweideutig, da sie nur auf die ursprüngliche C-Shell, csh beziehen könnte, 80 00:04:57,320 --> 00:05:01,200 oder an alle C-Schalen, einschließlich tcsh. Es ist ein wenig zweideutig. 81 00:05:01,200 --> 00:05:08,250 Eine spätere >> Shell ist die Korn-Shell ksh, nach der Programmierer namens Korn. 82 00:05:08,250 --> 00:05:14,160 Diese Shell versucht, in ein Shell integrieren 83 00:05:14,160 --> 00:05:16,960 die Vorteile der C-Shell für interaktive Benutzung 84 00:05:16,960 --> 00:05:19,230 und die Bourne-Shell für die Programmierung. 85 00:05:19,230 --> 00:05:25,440 Eine Minderheit - hat als interaktive Schale von einigen Leuten verwendet. 86 00:05:25,440 --> 00:05:32,050 Später gab es allerdings eine weitere Einführung, die Bash-Shell, BASH, 87 00:05:32,050 --> 00:05:35,290 wieder ein Wortspiel, die Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 Es ist eine Erweiterung der Bourne-Shell. Korn-Shell ist auch. Beide sind. 89 00:05:43,830 --> 00:05:48,100 Es hat die gleichen Ziele der Korn-Shell von der Zusammenlegung der C-Shell 90 00:05:48,100 --> 00:05:50,980 Bourne-Shell und die Vorteile in der 1-Shell. 91 00:05:50,980 --> 00:05:56,810 Viele der Verbesserungen der Korn-Shell sind auch in Bash enthalten. 92 00:05:56,810 --> 00:06:00,710 Schlag, hat jedoch mehr und ist daher bevorzugt. 93 00:06:00,710 --> 00:06:05,180 Die Bourne-again shell und die Korn-Shell Bourne-artige Shells genannt 94 00:06:05,180 --> 00:06:07,730 denn sie gehören der Bourne-Shell Eigenschaften, 95 00:06:07,730 --> 00:06:11,180 die in mancher Hinsicht mit C Schalen kompatibel sind. 96 00:06:11,180 --> 00:06:15,520 Es gibt neben den anderen Shells, einige für eingeschränkten Gebrauch bestimmt sind, 97 00:06:15,520 --> 00:06:20,670 vielleicht auf einige Befehle begrenzt, vielleicht spezielle Zwecke, nicht oft verwendet. 98 00:06:20,670 --> 00:06:24,240 >> Ok. Nächster Artikel hier. 99 00:06:31,300 --> 00:06:38,970 Die Bash-Shell hat sich mit verschiedenen Formen von Linux verbunden. 100 00:06:38,970 --> 00:06:41,550 Ich bin mir nicht sicher, ob das stimmt, von jeder Form. 101 00:06:41,550 --> 00:06:43,280 Es gibt viele Formen gibt, und ich habe sie alle nicht genutzt, 102 00:06:43,280 --> 00:06:46,870 aber in denen, die ich verwendet habe, es hat sich mit ihm verbunden. 103 00:06:46,870 --> 00:06:49,670 So weit ich weiß, gibt es nichts über Bash 104 00:06:49,670 --> 00:06:52,210 die es nicht mehr kompatibel mit Linux macht 105 00:06:52,210 --> 00:06:55,020 als jede andere Kombination von Hülle und Betriebssystem. 106 00:06:55,020 --> 00:06:59,690 Ich denke, das spiegelt wahrscheinlich nur die Neigungen der Programmierer. 107 00:06:59,690 --> 00:07:07,500 Dass es sich mit Linux verbunden ist, ist ein weiterer Grund, lieber zu Bash ksh 108 00:07:07,500 --> 00:07:11,820 da die Dinge sind wahrscheinlich in sie geschrieben werden und es ist wahrscheinlich, sich auszubreiten. 109 00:07:11,820 --> 00:07:15,410 Ich werde Sie, dass andere Gründe für später geben. 110 00:07:15,410 --> 00:07:21,330 Bourne-Shell-Skripte sollten unter dem Korn-Shell oder Bash laufen. 111 00:07:21,330 --> 00:07:22,650 Wenn Sie etwas für die Bourne-Shell zu schreiben, 112 00:07:22,650 --> 00:07:26,180 Sie können sich wahrscheinlich führen Sie es unter ksh oder bash. 113 00:07:26,180 --> 00:07:30,610 Korn-Shell-Skripte werden wahrscheinlich unter Bash laufen, aber ich kann nicht garantieren, dass. 114 00:07:30,610 --> 00:07:36,040 Später hier sollte C-Shell-Skripte unter der TC-Shell ausgeführt. 115 00:07:38,850 --> 00:07:41,690 Die C-Shell wurde eigentlich nie ausgiebig für Scripting verwendet 116 00:07:41,690 --> 00:07:48,110 seit der Bourne-Shell und später waren die Bourne-artige Shells bevorzugt für diesen Zweck. 117 00:07:48,110 --> 00:07:50,620 Also das ist wirklich nicht so wichtig. 118 00:07:50,620 --> 00:07:53,480 Es gibt eine ganze Menge von der Bourne-Shell-Skripte, die vor langer Zeit geschrieben wurden, 119 00:07:53,480 --> 00:07:56,860 vor der Korn-Shell oder der Bourne-Shell wieder eingeführt wurden. 120 00:07:56,860 --> 00:07:59,300 Diese sind immer noch in Gebrauch, ein Teil des Betriebssystems, 121 00:07:59,300 --> 00:08:01,590 und so werden Sie sie finden, wenn Sie in das Betriebssystem aussehen 122 00:08:01,590 --> 00:08:03,760 oder einige alte Programmpakete. 123 00:08:03,760 --> 00:08:12,840 >> Bash ist zu einem gewissen Grad zu einer Art lingua franca für Betriebssysteme. 124 00:08:12,840 --> 00:08:17,580 Es ist bereits für Windows und VMS erweitert. 125 00:08:17,580 --> 00:08:20,440 VMS, falls Sie es nicht wissen, ist ein proprietäres Betriebssystem 126 00:08:20,440 --> 00:08:25,480 der Digital Equipment Corporation, die immer noch in Betrieb ist, im Wesentlichen hinter den Kulissen. 127 00:08:25,480 --> 00:08:29,250 Und wenn es geht, auf mehreren verschiedenen Betriebssystemen ausgeführt werden, 128 00:08:29,250 --> 00:08:31,110 wahrscheinlich die Menschen neigen dazu, für sie zu verschieben. 129 00:08:31,110 --> 00:08:33,840 Aber diese Entwicklung ist relativ neu. 130 00:08:33,840 --> 00:08:39,490 Es ist erst am Anfang, so kann ich nicht vorhersagen, ob dies wird sich herausstellen, um wirklich diese Art von Verkehrssprache sein. 131 00:08:39,490 --> 00:08:43,539 Auch, weil Dateipfadnamen und Bibliotheken unterscheiden 132 00:08:43,539 --> 00:08:46,210 zwischen diesen unterschiedlichen Betriebssystemen, 133 00:08:46,210 --> 00:08:50,250 Sie nicht in der Lage, ein Bash-Skript auf einem Betriebssystem zu schreiben sein könnte 134 00:08:50,250 --> 00:08:51,840 und führen Sie es auf einem anderen. 135 00:08:51,840 --> 00:08:54,440 Sie sollten es zwischen verschiedenen Unix, Linux zu bewegen 136 00:08:54,440 --> 00:08:59,020 Mac OS-Betriebssysteme, aber nicht notwendigerweise, Windows oder VMS. 137 00:08:59,020 --> 00:09:01,390 Möglicherweise müssen Sie Dateipfadnamen Beschreibungen zu ändern, 138 00:09:01,390 --> 00:09:03,180 und einige Bibliotheken könnte anders sein, 139 00:09:03,180 --> 00:09:05,230 , welche die Art und Weise, dass einige Befehle funktionieren beeinflussen können 140 00:09:05,230 --> 00:09:09,730 oder wie sie zu verarbeiten Argumente und dergleichen. 141 00:09:09,730 --> 00:09:19,230 Darüber hinaus ist ein weiterer Vorsicht hier, dass es keine Garantie 142 00:09:19,230 --> 00:09:23,570 dass all die verschiedenen Schalen die ich erwähnt habe - Bourne-Shell, C-Shell, 143 00:09:23,570 --> 00:09:29,880 TC-Shell, Korn-Shell, die Bourne-again shell - unter jedem Unix verfügbar sein 144 00:09:29,880 --> 00:09:33,750 oder Linux-oder Mac OS-Computer. 145 00:09:33,750 --> 00:09:35,620 Sie könnten einfach nicht da sein. 146 00:09:35,620 --> 00:09:38,300 Das ist eine der Vorkehrungen, die hier. 147 00:09:38,300 --> 00:09:41,490 Es ist eine bedauerliche Einschränkung hier seit Sie möchten, die Dinge, überall zu arbeiten, 148 00:09:41,490 --> 00:09:44,380 aber leider kann man nicht darauf verlassen. 149 00:09:44,380 --> 00:09:47,230 >> Ok. Weiter hier. 150 00:09:50,280 --> 00:09:54,370 Lassen Sie uns sagen, dass Sie ein Shell-Skript schreiben wollen, 151 00:09:54,370 --> 00:09:57,170 ein Programm, bestehend aus Shell-Befehle. 152 00:09:57,170 --> 00:10:01,200 Sie schreiben Ihre Befehle, steckte sie in einer Datei und die Datei ausführen. 153 00:10:01,200 --> 00:10:04,230 Was ist, wenn Sie Argumente einschließen möchten? 154 00:10:04,230 --> 00:10:09,650 Im Fall der Shell-Operationen werden Argumente Parameter oder Positionsparameter genannt 155 00:10:09,650 --> 00:10:15,940 und sie werden von einem Dollarzeichen und die Zahl, $ 1, $ 2 bezeichnet werden. 156 00:10:15,940 --> 00:10:27,000 Also, wenn das Skript hat diesen Namen, vielleicht meine erste Argument ein Argument sein 157 00:10:27,000 --> 00:10:30,540 und meine zweite Argument vielleicht 2, 158 00:10:30,540 --> 00:10:34,110 und in meinem Skript, wenn ich auf diese Dinge beziehen - 159 00:10:34,110 --> 00:10:36,810 Lassen Sie uns diese zu löschen, da ich nicht wirklich, um sie auszuführen - 160 00:10:36,810 --> 00:10:42,160 in meinem Skript, das ich vielleicht 1 Dollar haben, um sich auf arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, die kommen wird, dass die Art und Weise, arg2. 162 00:10:45,890 --> 00:10:50,080 Also diese Symbole stehen zur Verfügung, um auf die Argumente beziehen, 163 00:10:50,080 --> 00:10:52,390 und diejenigen, gelten für alle der Schalen. 164 00:10:52,390 --> 00:10:56,520 Darüber hinaus gibt es andere Zeichen. 165 00:10:56,520 --> 00:11:01,700 $ * Bezieht sich auf die gesamte Liste der Argumente, alle von ihnen. 166 00:11:01,700 --> 00:11:05,390 $ # Bezieht sich auf die Anzahl von Argumenten. 167 00:11:05,390 --> 00:11:07,910 Wiederum gilt dies für alle Schalen. 168 00:11:07,910 --> 00:11:15,540 Diese Symbole * und # können mit diesen Bedeutungen in andere Orte verwendet werden. 169 00:11:15,540 --> 00:11:17,940 Wir werden nicht immer in die. 170 00:11:17,940 --> 00:11:20,460 >> Shell-Bezeichner Linie. Was ist das? 171 00:11:20,460 --> 00:11:27,760 Angenommen, Sie haben ein Skript geschrieben haben, und es ist für eine bestimmte Schale und Sie es ausführen möchten. 172 00:11:27,760 --> 00:11:33,500 Woher wissen Sie, was berappen Ihr Betriebssystem zu verwenden, um Ihr Skript laufen? 173 00:11:33,500 --> 00:11:37,230 An einer Stelle konnte man davon ausgehen, dass sie es in der Bourne-Shell laufen 174 00:11:37,230 --> 00:11:39,440 wenn man nicht anders sagen, 175 00:11:39,440 --> 00:11:41,730 aber die Leute sind nicht Skripte in der Bourne-Shell, die viel mehr zu schreiben 176 00:11:41,730 --> 00:11:43,750 und man kann nicht einmal mehr darauf verlassen. 177 00:11:43,750 --> 00:11:48,740 Hier haben wir also eine Shell-Bezeichner Linie hier richtig. 178 00:11:48,740 --> 00:11:52,450 Das gibt Bash. 179 00:11:52,450 --> 00:11:56,750 Beachten Sie, dass es gibt es in den Pfadnamen / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Wenn ein Computer die Bash-Shell, aber nicht in das Verzeichnis bin, / bin, das wird nicht funktionieren. 181 00:12:02,870 --> 00:12:06,870 Das ist ein weiterer Qualifi, ein weiterer Vorsicht hier. 182 00:12:06,870 --> 00:12:09,500 Die Raute ist die Kommentarzeile Charakter. 183 00:12:09,500 --> 00:12:12,300 Das gilt für alle Muscheln. 184 00:12:12,300 --> 00:12:18,610 Der besondere Fall hier, #! zu Beginn eines Skripts ist ein Sonderfall. 185 00:12:18,610 --> 00:12:23,410 Das gibt die Hülle, in der das Skript ausführen. 186 00:12:23,410 --> 00:12:30,230 Wie ich schon sagte, ist es vielleicht nicht der gleiche Ort / bin sein. 187 00:12:30,230 --> 00:12:34,880 Darüber hinaus gibt es eine andere Sache hier. 188 00:12:34,880 --> 00:12:41,250 Wenn Sie nur die Pfund-Zeichen verwenden, ohne Ausrufezeichen und Pfadnamen, 189 00:12:41,250 --> 00:12:44,640 das sollte zeigen eine C-Shell. 190 00:12:44,640 --> 00:12:48,300 Allerdings glaube ich nicht empfehlen, tun das, weil ich bin nicht in der Lage zu garantieren, 191 00:12:48,300 --> 00:12:49,750 dass diese immer funktionieren wird. 192 00:12:49,750 --> 00:12:52,220 Wenn Sie ein C-Shell wollen, wäre es besser zu sagen. 193 00:12:52,220 --> 00:12:58,450 Dann gibt es etwas ziemlich verwirrend hier. 194 00:12:58,450 --> 00:13:03,940 Wenn Sie ein Shell-Bezeichner Leitung zB / bin / bash 195 00:13:03,940 --> 00:13:07,070 und das Oberteil ist hier nicht verfügbar 196 00:13:07,070 --> 00:13:10,680 es gibt nicht so etwas wie / bin / bash auf diesem Computer, 197 00:13:10,680 --> 00:13:14,330 entweder, weil sie nicht über Bash oder weil es an einem anderen Ort, 198 00:13:14,330 --> 00:13:17,450 Sie eine Fehlermeldung sagt Ihnen, dass Sie das Skript lief nicht existiert zu bekommen. 199 00:13:17,450 --> 00:13:21,510 Und natürlich das Skript existiert, so dass Fehlermeldung ist verwirrend. 200 00:13:21,510 --> 00:13:24,810 Der Grund, dass das Betriebssystem gibt Ihnen diese Fehler 201 00:13:24,810 --> 00:13:28,370 oder, genauer gesagt, dass Ihre interaktive Shell, in denen Sie aktiv sind dies gibt, dass Fehler, 202 00:13:28,370 --> 00:13:33,510 ist, dass es den Befehl verwendet werden, die den Namen des Skripts ist berichtet. 203 00:13:33,510 --> 00:13:36,920 Dieser Befehl effektiv bezeichnet die Shell durch den Namen des Skripts. 204 00:13:36,920 --> 00:13:39,330 Das ist, wo Sie diese verwirrende Fehlermeldung. 205 00:13:39,330 --> 00:13:42,980 Eine weitere Möglichkeit, Shell-Skript aufrufen 206 00:13:42,980 --> 00:13:45,910 ist durch die Angabe der Shell auf der Kommandozeile, wie hier. 207 00:13:45,910 --> 00:13:52,510 Dies ist ein Befehl. Das sagt Bash laufen und führen Sie dann mein Skript in Bash. 208 00:13:52,510 --> 00:13:55,680 Das wird Vorrang vor einem Bezeichner Linie zu nehmen, 209 00:13:55,680 --> 00:14:02,090 und dies hat die Funktion der so dass Sie für unterschiedliche Pfadnamen zu liefern. 210 00:14:02,090 --> 00:14:04,840 Wenn Sie einen Befehl geben, nur, wird das Betriebssystem für diesen Befehl aussehen 211 00:14:04,840 --> 00:14:06,410 an verschiedenen Stellen. 212 00:14:06,410 --> 00:14:08,820 Wenn es verfügbar ist, sollte sie es finden. 213 00:14:08,820 --> 00:14:12,290 Der Computer wird Bash überall dort, wo es sich befindet und führen Sie es, 214 00:14:12,290 --> 00:14:15,470 so dass Sie nicht brauchen, dann besorgt, wo er sie findet zu sein. 215 00:14:15,470 --> 00:14:17,360 Es gibt möglicherweise andere Sorgen hier, 216 00:14:17,360 --> 00:14:20,830 als ob es mehr als ein Bash-Version, die möglich wenn auch unwahrscheinlich ist. 217 00:14:20,830 --> 00:14:23,540 Also das ist ein weiterer Weg, um mit diesen Dingen umzugehen. 218 00:14:23,540 --> 00:14:30,480 Ausschreibungsleitungen können jegliche Shell aufrufen. 219 00:14:30,480 --> 00:14:34,480 Sie können auch andere als Schalen Dinge nennen. 220 00:14:34,480 --> 00:14:37,940 Beispiele habe ich hier sed, die die Strom-Editor ist; 221 00:14:37,940 --> 00:14:39,900 awk, die ein Muster Verarbeitungssprache ist; 222 00:14:39,900 --> 00:14:43,680 und perl, eine sehr hoch entwickelte Skriptsprache. 223 00:14:43,680 --> 00:14:47,570 Wenn Sie einen Bezeichner Linie, die eines dieser Programme an den Anfang, 224 00:14:47,570 --> 00:14:51,270 es wird direkt in dieses Programm zu gehen anstatt eine Shell. 225 00:14:51,270 --> 00:14:54,030 Diese Programme haben Grenzen ihrer Fähigkeiten. 226 00:14:54,030 --> 00:14:58,790 Perl ist sehr fähig. Sed ist ein Editor. Es kann Dinge, über die einfache Bearbeitung zu tun. 227 00:14:58,790 --> 00:15:03,300 Aber es schwer zu programmieren, dass sein kann. 228 00:15:03,300 --> 00:15:09,670 Außerdem Gabe von Argumenten und Sachen zu Skript ist entweder unmöglich oder verwirrend. 229 00:15:09,670 --> 00:15:15,030 Also in jenen Fällen, mit awk oder sed, ist es, zumindest in meiner Erfahrung, 230 00:15:15,030 --> 00:15:18,910 vorzuziehen, ein Shell-Skript-und Call-awk schreiben oder von der Shell-Skript sed 231 00:15:18,910 --> 00:15:24,660 eher als Aufruf awk oder als Skript-Bezeichner Zeile sed. 232 00:15:24,660 --> 00:15:26,980 Perl ist eine sehr abwechslungsreiche Sprache, wie ich sagte. 233 00:15:26,980 --> 00:15:30,050 Sie können keine interaktiven Befehle in Perl, 234 00:15:30,050 --> 00:15:32,660 was bedeutet, dass man nicht Teile des Skripts, die Sie entwickeln testen 235 00:15:32,660 --> 00:15:33,970 indem sie interaktiv. 236 00:15:33,970 --> 00:15:36,160 Allerdings ist es ein äußerst fähig Sprache 237 00:15:36,160 --> 00:15:40,960 und hat sich zu einem sehr weit verbreiteten Werkzeug entwickelt. 238 00:15:40,960 --> 00:15:45,720 Das ist nur ein wenig von einem Klammer Bemerkung über die Zeilen-Bezeichner. 239 00:15:45,720 --> 00:15:50,610 >> In allen oder den meisten Formen von Linux - wieder, ich kann nicht sicher sein, das ist alles - 240 00:15:50,610 --> 00:15:57,900 und in Mac OS, wenn Sie csh geben Sie tcsh 241 00:15:57,900 --> 00:16:00,570 und wenn Sie geben Sie sh bash zu bekommen. 242 00:16:00,570 --> 00:16:05,020 Sie wurden dort versuchen Sie die erweiterte Versionen dieser Schalen zu geben, 243 00:16:05,020 --> 00:16:07,940 aber dies kann verwirrend sein. 244 00:16:07,940 --> 00:16:16,720 Wenn Sie ein Skript mit tcsh schreiben oder Bash bietet beim Aufruf csh oder sh 245 00:16:16,720 --> 00:16:22,230 und dann versuchen, es auf einem Computer, die keine oder tcsh Bash laufen, 246 00:16:22,230 --> 00:16:25,050 Sie vielleicht einige Fehler bekommen, wenn gibt es Befehle gibt es in 247 00:16:25,050 --> 00:16:27,970 die diese Schalen nicht zu erkennen. 248 00:16:27,970 --> 00:16:34,120 Darüber hinaus können Sie Ihre Shell auf dem lokalen Computer aufgerufen haben 249 00:16:34,120 --> 00:16:37,700 sh oder csh nannte es und dann immer die erweiterten Muscheln. 250 00:16:37,700 --> 00:16:41,440 Sie können nicht einmal die Tatsache, dass Sie die erweiterte Schale sind zu denken. 251 00:16:41,440 --> 00:16:45,670 Das ist also ein potentieller Fallstrick. 252 00:16:45,670 --> 00:16:50,290 Wie wird festgestellt, dass, wenn Sie Typ SH Sie Bash zu bekommen, 253 00:16:50,290 --> 00:16:55,580 wenn Sie Typ csh Sie tsch bekommen? 254 00:16:55,580 --> 00:16:59,940 Es gibt Dinge in diesen Computern genannte Links 255 00:16:59,940 --> 00:17:06,460 was kann eine Verbindung zum Dateinamen auf die gleiche Sache beziehen. 256 00:17:06,460 --> 00:17:12,180 Es kann entweder zwei Namen für dieselbe Datei oder eine Datei, deren Zweck es ist, auf eine andere Datei verweisen. 257 00:17:12,180 --> 00:17:17,550 Sie sind hart und symbolische Links aufgerufen. Wir werden nicht in, dass geht heute nicht mehr werden. 258 00:17:17,550 --> 00:17:21,619 1 Datei sh, ein Bash-Datei - - Es können auch einzelne Dateien sein 259 00:17:21,619 --> 00:17:23,880 aber beide Bash laufen. 260 00:17:23,880 --> 00:17:29,350 Dann gibt es noch eine weitere Qualifikations hier. 261 00:17:29,350 --> 00:17:42,640 Wenn Sie anrufen, eine dieser Schalen von einem Namen sind, 262 00:17:42,640 --> 00:17:46,640 Sie vielleicht denken, Sie würden die gleiche Funktionalität wie nannte es unter einem anderen Namen zu bekommen. 263 00:17:46,640 --> 00:17:49,700 Nun, das ist eigentlich nicht unbedingt wahr. 264 00:17:49,700 --> 00:17:55,020 Diese Befehle können Sie den Namen, mit dem sie genannt wurden prüfen 265 00:17:55,020 --> 00:18:00,020 und sie können auf der Grundlage des Namens, unterschiedlich verhalten. 266 00:18:00,020 --> 00:18:02,740 Es können Probleme, zu versuchen, zu einem Standard entsprechen. 267 00:18:02,740 --> 00:18:06,060 Einige von Ihnen werden von der POSIX-Standard oder ein anderes gehört haben, 268 00:18:06,060 --> 00:18:08,730 vielleicht auch andere Funktionen. 269 00:18:08,730 --> 00:18:14,520 Dies kann manchmal durch Befehlszeilenargumente gewählt werden 270 00:18:14,520 --> 00:18:17,310 oder durch Setzen von Shell-Variablen. 271 00:18:17,310 --> 00:18:22,170 Nannte es wie sh oder bash kann tatsächlich zu einer anderen Ausführung führen 272 00:18:22,170 --> 00:18:25,300 auch wenn es die gleiche Datei, die Sie ausführen. 273 00:18:25,300 --> 00:18:31,800 Eine andere Sache zu prüfen, ist, dass selbst wenn ein anderer Computer oder tcsh Bash hat, 274 00:18:31,800 --> 00:18:35,310 wenn sie nicht verknüpft, wie sie auf dem lokalen Computer sind 275 00:18:35,310 --> 00:18:37,990 wenn Sie ein Linux-oder Mac OS lokalen Computer haben, 276 00:18:37,990 --> 00:18:45,630 dann wieder werden Sie die Schale, die Sie sh oder csh rufen, nicht die, die man vielleicht lieber zu bekommen. 277 00:18:50,430 --> 00:19:01,130 Die aktuelle Bourne-Shell-Erweiterungen hat weniger als die in der Bash 278 00:19:01,130 --> 00:19:06,100 aber die in der Vergangenheit Original-Bourne-Shell. 279 00:19:06,100 --> 00:19:09,690 Als Folge, dass auch der Strom Bourne-Shell SH, 280 00:19:09,690 --> 00:19:14,560 auch wenn es nicht Bash, ähnelt der C-Sprache mehr als die C-Shell tut. 281 00:19:14,560 --> 00:19:20,460 Das war nicht der Fall, wenn die C-Shell zuerst erstellt wurde, aber es hat sich so entwickelt. 282 00:19:20,460 --> 00:19:26,560 Sie können hier feststellen, dass all diese Schale Namen mit Ausnahme der Bourne-Shell 283 00:19:26,560 --> 00:19:30,640 haben etwas zu zeigen, welche Shell sind sie - csh, bash - 284 00:19:30,640 --> 00:19:32,550 aber die Bourne-Shell ist nur sh. 285 00:19:32,550 --> 00:19:34,910 Warum? Das war die ursprüngliche Shell. 286 00:19:34,910 --> 00:19:37,770 Es war die Schale dann nicht eine Schale, 287 00:19:37,770 --> 00:19:41,090 und da war es die Schale, gab es keinen Grund, sie aus einer anderen Schale unterscheiden. 288 00:19:41,090 --> 00:19:45,030 Also das ist, warum es diesen Namen hat und immer noch tut. 289 00:19:50,630 --> 00:19:58,990 Diese Top >> hier ist eine Zeile aus einem Passwort-Datenbank für ein Konto habe ich da 290 00:19:58,990 --> 00:20:01,680 auf einem anderen Computer. 291 00:20:01,680 --> 00:20:08,300 Ich werde versuchen, diesen Namen zu erhalten, so können Sie diesen Teil am Ende zu sehen, die Schale. 292 00:20:09,720 --> 00:20:15,450 Das Passwort-Datenbank enthält die Anmeldeeigenschaften für alle Nutzer. 293 00:20:15,450 --> 00:20:20,330 Zu Beginn ist der Benutzername, mit dem Sie die letzten zwei Briefe von mir jetzt sehen kann. 294 00:20:20,330 --> 00:20:23,970 Die Felder werden dabei durch Doppelpunkte getrennt. 295 00:20:23,970 --> 00:20:28,210 Das letzte Feld, wie Sie sehen können, ist bin / tcsh, die Shell. 296 00:20:28,210 --> 00:20:30,230 Das ist die Shell-Bezeichner. 297 00:20:30,230 --> 00:20:33,240 Es gibt hier etwas Interessantes. 298 00:20:33,240 --> 00:20:36,950 Wenn Unix zuerst entwickelt wurde, gab es nur 1 Schale, 299 00:20:36,950 --> 00:20:38,350 so gab es keine Wahl gibt. 300 00:20:38,350 --> 00:20:45,570 Warum also hat sie ermöglichen ein Feld in der Passwort-Datenbank, um eine Schale geben? 301 00:20:45,570 --> 00:20:47,920 Ich weiß nicht, aber es ist ein Glück, dass sie es taten. 302 00:20:47,920 --> 00:20:52,030 Es ist ziemlich schwierig, Veränderungen in der Passwort-Datenbank-Format machen 303 00:20:52,030 --> 00:20:54,420 weil viele Programme beziehen sich auf das Format 304 00:20:54,420 --> 00:20:57,720 und müssten neu geschrieben werden. 305 00:20:57,720 --> 00:21:04,130 Es ist eine gelungene oder zufälligen Entwicklung, die sie enthalten den Acker. 306 00:21:04,130 --> 00:21:12,780 Diese Art von einer Passwortdatei Linie ist auf allen Unix-und Linux-Computern, so weit ich weiß verwendet. 307 00:21:12,780 --> 00:21:14,650 Der Mac hat sein eigenes System. 308 00:21:14,650 --> 00:21:17,810 Es hat tatsächlich eine Passwort-Datei mit den Zeilen in diesem Format, 309 00:21:17,810 --> 00:21:21,060 aber das ist nicht, wenn die Benutzermerkmale definiert sind. 310 00:21:21,060 --> 00:21:24,200 Eine weitere Bemerkung in Klammern gibt. 311 00:21:36,470 --> 00:21:46,020 >> Wenn Sie anrufen, eine Schale, können Sie es als eine Unterschale der vorhandenen Schalen nennen. 312 00:21:46,020 --> 00:21:50,480 Also, wenn ich hier gehen, wollen wir loswerden diese Dinge. 313 00:21:50,480 --> 00:21:53,350 Hier bin ich in der C-Shell. 314 00:21:56,830 --> 00:22:01,200 Diese Variable, die meine Schale genau identifiziert, 315 00:22:01,200 --> 00:22:04,300 eigentlich ist nicht immer eine zuverlässige Möglichkeit herauszufinden, wie Shell Sie laufen, 316 00:22:04,300 --> 00:22:06,220 aber in diesem Fall ist. 317 00:22:06,220 --> 00:22:08,040 Was, wenn ich gerade Art - 318 00:22:09,970 --> 00:22:12,470 Jetzt bin ich in der Bash. 319 00:22:12,470 --> 00:22:19,540 Einige Dinge werden die gleichen sein. ls sagt mir meine Befehle. 320 00:22:19,540 --> 00:22:24,500 Wenn ich einen Suspend zurück zu meiner C-Shell, ls, gleich. Right? 321 00:22:24,500 --> 00:22:28,890 fg, Vordergrund, zurück zu meinem Bash-Shell. 322 00:22:28,890 --> 00:22:38,290 pwd, aktuelle Verzeichnis, zurück zum C-Shell. 323 00:22:38,290 --> 00:22:43,180 pwd, anderes Verzeichnis - eigentlich kein anderes Verzeichnis in diesem Fall. 324 00:22:43,180 --> 00:22:45,110 Es ist das gleiche Verzeichnis. 325 00:22:45,110 --> 00:22:50,000 Sagen wir, ich will einen Befehl aufrufen: wo ls. 326 00:22:50,000 --> 00:22:52,140 Was bedeutet das? 327 00:22:52,140 --> 00:22:53,670 Es sagt mir, wo Sie den Befehl ls, 328 00:22:53,670 --> 00:22:56,670 der, der gibt mir eine Verzeichnisliste, in ls entfernt. 329 00:22:56,670 --> 00:23:01,460 Gehen wir zurück zu Bash-Shell zu gehen. Versuchen wir die gleiche Sache. 330 00:23:01,460 --> 00:23:05,830 Hmm, interessant, da, wo: Befehl nicht gefunden. 331 00:23:05,830 --> 00:23:07,400 Warum ist das so? 332 00:23:07,400 --> 00:23:11,570 Der Befehl wird in dem an die C-Shell integriert. 333 00:23:11,570 --> 00:23:15,630 Dies ist kein Befehl, der in den Speicher von woanders gelesen und ausgeführt werden muss. 334 00:23:15,630 --> 00:23:20,310 Die C-Shell läuft es durch die Übertragung der Ausführung, einen Teil seiner eigenen Code 335 00:23:20,310 --> 00:23:22,790 und es ist nicht in der Bash-Shell. 336 00:23:22,790 --> 00:23:25,710 So Bash, wie einen eingebauten Befehl nicht mit, sieht für sie, findet sie nicht, 337 00:23:25,710 --> 00:23:27,720 und wir bekommen eine Fehlermeldung. 338 00:23:27,720 --> 00:23:32,290 Also da haben wir eine Bash-Shell unter einer C-Shell laufen, und wir fordern, dass eine Sub-Shell. 339 00:23:32,290 --> 00:23:38,480 Und nur, wenn Sie neugierig sind, hat Bash-Shell seinen eigenen Weg zum Auffinden Befehle. 340 00:23:38,480 --> 00:23:42,590 Hash bezieht sich auf die Tatsache, dass es schneller durchgeführt werden, 341 00:23:42,590 --> 00:23:44,960 wird schneller gefunden. 342 00:23:44,960 --> 00:23:48,610 Das ist einer der wichtigsten Verbesserungen in der einige dieser Schalen gebaut. 343 00:23:50,220 --> 00:23:54,200 >> Bourne-Typ-Schalen werden für die Programmierung bevorzugt. 344 00:23:54,200 --> 00:23:57,300 Sie haben Kontrollstrukturen wie Schleifen, Bedingungen, 345 00:23:57,300 --> 00:24:00,240 die Art der Befehle, die Sie in Programmiersprachen wie C verwenden könnte 346 00:24:00,240 --> 00:24:04,190 oder welcher Sprache auch immer. Vielleicht sind Sie in Java programmieren bist, oder was auch immer. 347 00:24:04,190 --> 00:24:06,460 Muscheln haben die auch. 348 00:24:06,460 --> 00:24:11,790 Die Bourne-artige Shells, insbesondere Bash, haben mehr 349 00:24:11,790 --> 00:24:15,730 und sie flexibler gestaltet werden. 350 00:24:15,730 --> 00:24:20,700 Die Bash-Shell hat Arrays. Die ursprüngliche Bourne-Shell nicht. 351 00:24:20,700 --> 00:24:26,130 So daß für die Programmierung erheblich vorteilhafter sein kann. 352 00:24:26,130 --> 00:24:29,810 Die C-Shell tatsächlich Arrays haben aber nicht eine Menge von diesen anderen Funktionen. 353 00:24:29,810 --> 00:24:33,450 Die Bourne-artige Shells wird schneller ausgeführt 354 00:24:33,450 --> 00:24:36,520 wenn sie nicht die Funktionen für die interaktive Verwendung bestimmt. 355 00:24:36,520 --> 00:24:39,340 Sie laden Dinge nach unten zu einem Zweck, das holt sie zu einem anderen Zweck. 356 00:24:39,340 --> 00:24:41,520 Es ist das Trade-off gibt. 357 00:24:41,520 --> 00:24:44,510 Diese Merkmale, die für die interaktive Nutzung bestimmt sind 358 00:24:44,510 --> 00:24:46,920 sind wirklich wenig oder keine Verwendung für Scripting. 359 00:24:46,920 --> 00:24:52,160 Es ist möglich, eine interaktive Unterschale genau wie die, die ich dort gestartet verwenden 360 00:24:52,160 --> 00:24:57,780 zu testen, Befehle, die Sie beabsichtigen, in einem Skript verwenden. 361 00:24:57,780 --> 00:25:01,180 Das ist, was man nicht mit perl zu tun. Sie können es mit den Schalen zu tun. 362 00:25:01,180 --> 00:25:04,850 Auch die Strukturen wie für Schleifen und so weiter kann interaktiv ausgeführt werden. 363 00:25:04,850 --> 00:25:07,000 Sie sind manchmal sinnvoll interaktiv ausführen, 364 00:25:07,000 --> 00:25:10,180 aber eher Sie mit ihnen, um ein Skript zu entwickeln. 365 00:25:15,690 --> 00:25:17,400 >> Aliases. 366 00:25:17,400 --> 00:25:21,630 Das wird über die C-Shell sein. 367 00:25:23,270 --> 00:25:27,570 History-Mechanismus, wo man auf frühere Befehle zu erhalten 368 00:25:27,570 --> 00:25:30,340 oder Teile von ihnen, dass Sie bereits ausgeführt haben. 369 00:25:30,340 --> 00:25:33,680 Auch über die C-Shell, die Bourne-Shell und die Korn-Shell haben diese Dinge, 370 00:25:33,680 --> 00:25:35,620 aber ich werde mich nicht in sie zu erhalten. 371 00:25:35,620 --> 00:25:40,340 So sind hier einige nützliche Aliase, die ich habe. 372 00:25:43,100 --> 00:25:44,880 Anstelle der Eingabe ls - es ist eine gemeinsame Befehls - 373 00:25:44,880 --> 00:25:47,620 geben Sie einfach l und sparen Sie sich ein Charakter. 374 00:25:47,620 --> 00:25:50,600 ls mit verschiedenen Optionen, alle, die Arbeit. 375 00:25:50,600 --> 00:25:54,460 Beachten Sie, dass diese Definitionen haben Anführungszeichen um sie herum. 376 00:25:54,460 --> 00:25:57,520 In diesen Fällen sind die Anführungszeichen nicht notwendig. 377 00:25:57,520 --> 00:26:00,100 Wenn Sie diese Aliase ohne die Anführungszeichen zu definieren, wäre es immer noch funktionieren. 378 00:26:00,100 --> 00:26:02,910 Sie werden empfohlen. 379 00:26:02,910 --> 00:26:04,900 Es gibt Situationen, in denen Sie nicht verwenden können, das Zitat 380 00:26:04,900 --> 00:26:08,050 weil Sie etwas zu geschehen, welche das Zitat würde verhindern wollen. 381 00:26:08,050 --> 00:26:11,210 Manchmal kann man Teil der Definition zitieren, aber nicht alles. 382 00:26:11,210 --> 00:26:17,010 Es ist auch allgemein empfohlen, einfache Anführungszeichen statt doppelte Anführungszeichen zu verwenden. 383 00:26:17,010 --> 00:26:19,750 Doppelte Anführungszeichen Auswirkungen auf Variablen-Definitionen, 384 00:26:19,750 --> 00:26:22,950 Besonders wodurch sie nicht stoppen ausgewertet werden. 385 00:26:22,950 --> 00:26:25,910 Warum sollten wir, um die Bewertung zu stoppen? 386 00:26:25,910 --> 00:26:28,710 Und wie Zitate zu tun, dass für uns? 387 00:26:28,710 --> 00:26:32,600 >> Hier ist ein Befehl, die Sie interessant finden könnte. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, wie Sie wahrscheinlich wissen, ist ein Wildcard-Ausdruck 390 00:26:37,640 --> 00:26:40,290 für alle Dateinamen die mit g beginnen. 391 00:26:40,290 --> 00:26:46,410 Wenn ich gerade in einem Befehl ls g * zu schreiben, werde ich eine Liste aller dieser Namen in meinem aktuellen Verzeichnis. 392 00:26:46,410 --> 00:26:50,870 Wenn ich diesen Alias ​​definieren, wie es hier mit den Kursen, 393 00:26:50,870 --> 00:26:56,990 wird es diesen Befehl in Ihrem aktuellen Verzeichnis, wo Sie es laufen laufen. 394 00:26:56,990 --> 00:27:01,250 Aber wenn Sie die Aliasdefinition ohne die Anführungszeichen laufen, 395 00:27:01,250 --> 00:27:09,620 sie bewerten die Wildcard g *, wenn es läuft diesen Befehl definieren. 396 00:27:09,620 --> 00:27:14,400 So die Definition des Alias ​​ls durch die Liste der Dateien im Verzeichnis folgen 397 00:27:14,400 --> 00:27:16,310 in dem der Befehl Alias ​​ausgeführt wird, 398 00:27:16,310 --> 00:27:19,180 unabhängig davon, wo Sie tatsächlich beabsichtigen, den Befehl auszuführen. 399 00:27:19,180 --> 00:27:26,360 Das ist nicht viel nützen, und die einfachen Anführungszeichen verhindern, dass die Bewertung der Sternchen. 400 00:27:26,360 --> 00:27:30,780 So bekommst du nur die Definition Befinden ls g *. 401 00:27:30,780 --> 00:27:35,510 Dann, wenn Sie den Aliasnamen ausführen, lgs, dann bringt es das aus. 402 00:27:35,510 --> 00:27:40,490 Jetzt gibt es keine Zitate, und es wird das Sternchen zu bewerten, wenn Sie den Befehl alias laufen. 403 00:27:40,490 --> 00:27:43,900 Also das ist eine Sache. 404 00:27:43,900 --> 00:27:46,590 Doppelte Anführungszeichen würde, dass hier dieselbe Wirkung haben, 405 00:27:46,590 --> 00:27:50,580 aber es gibt andere Fälle, in denen Anführungszeichen würde nicht so gut funktionieren. 406 00:27:50,580 --> 00:27:52,450 >> Hier ist eine andere. 407 00:27:52,450 --> 00:27:54,270 Sie können den Befehl grep kennen. 408 00:27:54,270 --> 00:28:02,110 Der Befehl grep verwendet werden, um eine Datei für die Zeilen, die bestimmte Zeichenfolgen haben zu scannen. 409 00:28:02,110 --> 00:28:10,350 So gehen wir hier, und ich werde von meinem Bourne-Shell zu beenden. 410 00:28:23,570 --> 00:28:25,450 Okay. Hier ist eine Datei. 411 00:28:25,450 --> 00:28:31,490 Sagen wir, es ist grep abc Saiten. Da ist es. 412 00:28:31,490 --> 00:28:37,930 Wenn ich grep zddd, bekomme ich nichts. Okay. 413 00:28:37,930 --> 00:28:40,960 So findet es einen String, es berichtet, es nicht zu finden, ist es nicht melden. 414 00:28:40,960 --> 00:28:44,930 Es gibt keine Linie, die die Zeichenfolge auf sich hat. 415 00:28:44,930 --> 00:28:49,080 Es gibt alle Arten von Optionen, die Sie hier in der Dokumentation finden. 416 00:28:49,080 --> 00:28:52,160 Hier ist eine Möglichkeit, es zu tun. 417 00:28:52,160 --> 00:29:03,290 Was ist mit diesem, alias grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Das wird ein Argument enthalten, wenn der Alias ​​definiert. 419 00:29:09,000 --> 00:29:26,300 Also, wenn ich das hier, jetzt, wenn ich grabc tun, 420 00:29:26,300 --> 00:29:30,620 jetzt der Alias ​​umfasst mehr als den einfachen Befehl. Es hat auch das Argument. 421 00:29:30,620 --> 00:29:32,190 So weit das geht. 422 00:29:32,190 --> 00:29:38,590 Ich habe einen anderen Befehl hier, dieses, also sind es in verschiedenen Saiten 423 00:29:38,590 --> 00:29:46,790 und zeigen, dass dies nicht etwas zu finden gibt, da es nicht übereinstimmt. 424 00:29:46,790 --> 00:29:56,180 >> Was, wenn ich in der Alias-Definition die Datei, die werde ich suchen, sind 425 00:29:56,180 --> 00:30:02,970 und ich möchte als Argument für den Alias ​​die Zeichenfolge, die ich suche geben? 426 00:30:02,970 --> 00:30:08,040 Ich möchte vielleicht abc als Argument für meinen Alias ​​sagen, 427 00:30:08,040 --> 00:30:10,870 aber der Alias ​​bereits die Datei bestimmt. 428 00:30:10,870 --> 00:30:15,710 Und das ist, wo dieser Ausdruck kommt in. 429 00:30:20,430 --> 00:30:25,270 Beachten Sie, hier haben wir grep wie zuvor. 430 00:30:25,270 --> 00:30:28,130 Wir haben die Datei hier, Streicher. 431 00:30:28,130 --> 00:30:35,610 \! ^, Irgendwie ein seltsamer Ausdruck, nehme ich an, wenn Sie es nicht gesehen haben. 432 00:30:35,610 --> 00:30:39,920 Ausrufezeichen ist Teil der C-Shell-History-Mechanismus. 433 00:30:39,920 --> 00:30:45,220 Es kann früher Befehle erinnern, kann es Argumente, um die Befehle erinnern und so weiter. 434 00:30:46,760 --> 00:31:01,570 Die Geschichte Mechanismus als Teil des Aliasing verwendet. 435 00:31:01,570 --> 00:31:07,390 Wenn Sie eine Linie nach dem Ausrufezeichen angeben, wird es auf dieser Linie in der Verlaufsliste beziehen, 436 00:31:07,390 --> 00:31:11,910 die wir werden nicht immer in jetzt, da es ein ganz anderes Thema. 437 00:31:11,910 --> 00:31:16,280 Es ist möglich, Teil einer Zeile angeben. 438 00:31:16,280 --> 00:31:22,950 So! 3.02 würde das zweite Argument des Befehlsnummer 3 sein. 439 00:31:22,950 --> 00:31:30,430 Die Einfügemarke hier in diesem Ausdruck steht für das erste Argument. 440 00:31:30,430 --> 00:31:34,410 Wenn Sie geben es nicht einen Hinweis, welchen Befehl Sie sich beziehen, 441 00:31:34,410 --> 00:31:37,300 es bezieht sich auf den unmittelbar vorangehenden Befehl, 442 00:31:37,300 --> 00:31:41,990 und der Cursor ist ein Symbol für das erste Argument. 443 00:31:41,990 --> 00:31:46,820 Weil es die Einfügemarke und nicht die Anzahl, die Sie nicht brauchen, um den Darm zu verwenden, 444 00:31:46,820 --> 00:31:52,660 so! ^ bedeutet die erste Argument für den vorherigen Befehl. 445 00:31:52,660 --> 00:31:55,020 Hier ein wenig gemischt. 446 00:31:55,020 --> 00:31:58,450 In diesem Fall, wenn Sie dies als Alias-Definition zu verwenden, 447 00:31:58,450 --> 00:32:04,650 die Geschichte Referenz verweist zurück auf die Befehle in dem der Alias ​​verwendet wird. 448 00:32:04,650 --> 00:32:08,470 Also das geht zurück ein Befehl als eine Geschichte Betrieb 449 00:32:08,470 --> 00:32:11,810 aber als Alias ​​Betrieb es bezieht sich auf den Befehl in denen Sie schreiben würde, 450 00:32:11,810 --> 00:32:14,780 sagen, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Wir haben die Angebote hier in sie. Was ist der Backslash für? 452 00:32:20,240 --> 00:32:30,810 In diesem Fall, wie auch anderswo, wissen wir nicht, die Geschichte Mechanismus ausführen wollen 453 00:32:30,810 --> 00:32:33,680 bei der Definition des Alias. 454 00:32:33,680 --> 00:32:37,900 Wenn wir nicht den umgekehrten Schrägstrich gibt es nicht haben, würde die Schale im ersten Argument ziehen 455 00:32:37,900 --> 00:32:41,870 des Befehls rechts, bevor es diesen Alias-Befehl, die wir nicht wollen, lief. 456 00:32:41,870 --> 00:32:47,520 Wir wollen, dass dies in dem Befehl alias gebaut, um später in einem Argument aufzurufen. 457 00:32:47,520 --> 00:32:53,550 Einfache Anführungszeichen nicht entgehen ein Ausrufezeichen, die die Geschichte auf. 458 00:32:53,550 --> 00:32:57,450 Vielleicht wissen Sie, der Ausdruck Fluchtmittel, um die Bedeutung von etwas zu ändern. 459 00:32:57,450 --> 00:33:00,260 In diesem Fall bedeutet es, etwas aus, die eine besondere Bedeutung zu stoppen. 460 00:33:00,260 --> 00:33:03,030 Besondere Bedeutung Ausrufezeichen ist Geschichte. 461 00:33:03,030 --> 00:33:05,790 Flucht-und es hat nicht diese Bedeutung. 462 00:33:05,790 --> 00:33:08,080 Zitate machen das nicht; Backslash tut. 463 00:33:08,080 --> 00:33:11,900 Daher freuen wir uns tatsächlich mit 2 Ebenen von hier entkommen. 464 00:33:23,500 --> 00:33:29,620 Ich werde diesen Befehl in das andere Fenster ohne die Eingabe bewegen 465 00:33:29,620 --> 00:33:35,210 durch die Verwendung dieser Bearbeitungsvorgänge, die Sie finden können nützlich. 466 00:33:40,620 --> 00:33:42,460 Etwas hier sonst werde ich Ihnen zeigen. 467 00:33:42,460 --> 00:33:46,730 Wenn Sie nur tippen alias ohne Argumente, sagt Ihnen, alle Ihre Argumente. 468 00:33:46,730 --> 00:33:48,640 Das ist ein Haufen von Alias-Namen ich hier schon 469 00:33:48,640 --> 00:33:53,400 außer denen, die ich habe mit heute hier. 470 00:33:53,400 --> 00:34:00,220 Aber wenn ich nur mit dem Namen eines Alias ​​geben, es sagt mir, was es bedeutet. 471 00:34:00,220 --> 00:34:03,390 Beachten Sie, dass die Anführungszeichen sind weg und der Backslash ist weg. 472 00:34:03,390 --> 00:34:08,620 Dieser String ist hier das Ergebnis dieser Aliasdefinition, 473 00:34:08,620 --> 00:34:12,199 und jetzt hat es einfach! ^ in sie. 474 00:34:12,199 --> 00:34:19,150 Das wird in der Datei Saiten für nichts zu suchen. 475 00:34:19,150 --> 00:34:34,900 Also, wenn ich grstrings_file Saiten, habe ich nicht, es gibt nichts zu suchen, 476 00:34:34,900 --> 00:34:37,429 aber es ist in Strings suchen. 477 00:34:37,429 --> 00:34:42,330 Es hat nicht die Wortketten finden Sie in der Datei Strings, aber es finden abc. 478 00:34:42,330 --> 00:34:46,770 Und es sieht nicht finden, dass. 479 00:34:46,770 --> 00:34:52,330 So, hier geben wir ein Argument, das in der Definition des Alias-Hits, 480 00:34:52,330 --> 00:34:55,530 dass in diesen eingefügt. 481 00:34:55,530 --> 00:34:58,540 Es ist, wo dieser Ausdruck kommt. 482 00:34:58,540 --> 00:35:00,240 Sie können mehr als 1 zu verwenden. 483 00:35:00,240 --> 00:35:03,170 Die Einfügemarke ist ein Symbol für das erste Argument. 484 00:35:03,170 --> 00:35:07,510 Wenn Sie ein zweites Argument benutzen wollten, würden Sie dann sagen: 2. 485 00:35:07,510 --> 00:35:11,250 Es gibt kein spezielles Symbol für das zweite Argument. 486 00:35:11,250 --> 00:35:14,790 Und weil Sie eine Zahl sind, müssten Sie den Doppelpunkt zu verwenden. 487 00:35:14,790 --> 00:35:17,220 Es gibt jedoch noch eine andere Wahl. 488 00:35:17,220 --> 00:35:21,220 Das Dollarzeichen steht für das letzte Argument. 489 00:35:21,220 --> 00:35:23,320 Und weil das ist ein Symbol, können Sie den Doppelpunkt weglassen. 490 00:35:23,320 --> 00:35:25,870 So wäre es das letzte Argument in der Liste sein. 491 00:35:25,870 --> 00:35:27,900 Und es gibt auch, dass man. 492 00:35:27,900 --> 00:35:31,380 Asterisk bedeutet, dass alle, so ist dies die komplette Liste der Argumente, 493 00:35:31,380 --> 00:35:35,150 wieder, können Sie den Doppelpunkt weglassen, weil es nicht eine Zahl. 494 00:35:36,970 --> 00:35:39,950 Ich hoffe, Sie alle beobachten alles. 495 00:35:39,950 --> 00:35:54,100 >> Die Geschichte Mechanismus kann in der History-Liste auf frühere Linien zu gehen. 496 00:35:54,100 --> 00:36:01,370 Sie könnten dies in einem Alias-Definition zu tun. 497 00:36:01,370 --> 00:36:02,950 Ich habe noch nie getan. 498 00:36:02,950 --> 00:36:05,840 Es würde den Effekt des Herausziehens frühere Befehle aus der History-Liste haben 499 00:36:05,840 --> 00:36:08,130 wenn Sie den Aliasnamen, die verschiedene Befehle ausführen könnte 500 00:36:08,130 --> 00:36:11,240 je nachdem, wann und wo Sie es ausführen. 501 00:36:11,240 --> 00:36:14,020 Denkbar möchten Sie vielleicht einen solchen Verweis ziehen 502 00:36:14,020 --> 00:36:15,900 nur wissen, was ein früherer Befehl war. 503 00:36:15,900 --> 00:36:17,280 Ich habe noch nie gesehen, das passiert. 504 00:36:17,280 --> 00:36:19,970 Ich nehme an, jemand Sie vielleicht, aber das ist sehr unwahrscheinlich. 505 00:36:19,970 --> 00:36:26,480 Es ist eine andere Sache hier. 506 00:36:26,480 --> 00:36:33,060 Wenn Sie diese Geschichte Typ Referenz zu verwenden, 507 00:36:33,060 --> 00:36:38,190 dann werden nur die Argumente an denen es eine solche Referenz verwendet. 508 00:36:38,190 --> 00:36:42,180 Wenn Sie einen Alias-Definition, die nicht mit einem Geschichte-Typ-Referenz, 509 00:36:42,180 --> 00:36:44,060 wenn es nur wird der Anfang der Befehls 510 00:36:44,060 --> 00:36:46,520 und Sie weitere Argumente haben, dann ist alles, was Sie nach, dass Typ 511 00:36:46,520 --> 00:36:48,450 wird dem Befehl hinzugefügt werden. 512 00:36:48,450 --> 00:36:52,040 In diesem Fall wird das Beispiel, das ich gerade dort gab, haben wir das erste Argument; 513 00:36:52,040 --> 00:36:54,610 haben wir nicht benutzt keine andere. 514 00:36:54,610 --> 00:36:57,960 Wenn andere Argumente hatte auf der Kommandozeile angegeben worden wäre, wäre sie nicht verwendet werden. 515 00:36:57,960 --> 00:37:04,630 Also, wenn Sie die Geschichte Bezug zu benutzen, dann müssen Sie es verwenden, um jedes Argument zu bekommen. 516 00:37:04,630 --> 00:37:11,310 >> Es ist eine andere Sache hier möchte ich nur erwähnen, teilweise Klammern, 517 00:37:11,310 --> 00:37:15,250 nämlich, dass diese Geschichte Mechanismus mit dem Ausrufezeichen 518 00:37:15,250 --> 00:37:18,010 geht zurück auf die ursprüngliche C-Shell. 519 00:37:18,010 --> 00:37:27,060 Die tcsh eingeführt Geschichte Operationen 520 00:37:27,060 --> 00:37:30,910 die die möglichen Befehle und Streicher von den Editoren, 521 00:37:30,910 --> 00:37:33,650 entweder Emacs oder vi. 522 00:37:33,650 --> 00:37:36,430 Meine persönliche Meinung ist Emacs ist viel einfacher, für diesen Zweck verwenden 523 00:37:36,430 --> 00:37:39,390 auch wenn Sie vi für Ihre regelmäßige Bearbeitung zu verwenden. 524 00:37:39,390 --> 00:37:43,900 Es gibt verschiedene Emacs-Befehle, die jetzt für die Geschichte angepasst sind. 525 00:37:43,900 --> 00:37:46,410 Steuer P bekommt die vorhergehende Zeile in der Verlaufsliste. 526 00:37:46,410 --> 00:37:48,840 Ein weiterer Steuer P erhalten Sie die eine davor. 527 00:37:48,840 --> 00:37:50,540 Der Pfeil nach oben macht das Gleiche. 528 00:37:50,540 --> 00:37:54,190 Steuer N bekommt den nächsten Befehl, wenn Sie bereits wieder einige Möglichkeiten durchgeblättert. 529 00:37:54,190 --> 00:37:55,880 Pfeil nach unten tut das auch. 530 00:37:55,880 --> 00:38:00,480 Sie können mit den Pfeilen und verschiedene andere Dinge, von links nach rechts. 531 00:38:00,480 --> 00:38:02,390 Diese können den History-Mechanismus machen 532 00:38:02,390 --> 00:38:05,070 viel einfacher als die Verwendung des Ausrufezeichen-Syntax, 533 00:38:05,070 --> 00:38:07,930 aber Sie können nicht verwenden würden, dass in einem Alias-Definition. 534 00:38:17,780 --> 00:38:20,020 Wir gehen über, dass eine andere Zeit. 535 00:38:24,300 --> 00:38:25,810 >> Variablen. 536 00:38:26,880 --> 00:38:29,510 Sie wissen, welche Variablen in Programmiersprachen. 537 00:38:29,510 --> 00:38:31,680 Die Schalen haben sie auch. 538 00:38:31,680 --> 00:38:37,350 Die C-Shell verwendet den Befehl gesetzt, um Variablen zuzuweisen, 539 00:38:37,350 --> 00:38:41,360 so dass die Variable a setzt auf den Wert von b - 540 00:38:41,360 --> 00:38:46,390 wie gesagt, eine nutzlose Definition, sondern ein Beispiel dafür, wie diese genutzt werden. 541 00:38:48,790 --> 00:38:52,410 Das Set Befehl wird eine Variable zu erstellen, wenn sie nicht bereits vorhanden sind. 542 00:38:55,270 --> 00:39:02,490 Die Positionsparameter für Shell-Skripte können als Variablen werden, 543 00:39:02,490 --> 00:39:10,750 aber die Verwendung von ihnen, und die Regeln für sie sind etwas anders. 544 00:39:10,750 --> 00:39:14,320 Sie können einen Wert nicht zu $ ​​1 vergeben im Rahmen eines Skripts. 545 00:39:14,320 --> 00:39:18,340 Sie müssten, um eine neue Variable zu diesem Zweck definieren, wenn einige von euch wollte. 546 00:39:23,000 --> 00:39:28,470 Geben ohne Argumente setzen und Ihnen eine Liste aller aktuell definierten Variablen zu erhalten. 547 00:39:28,470 --> 00:39:34,220 Und lassen Sie uns über meine anderen Schale hier und sehen, was wir bekommen, wenn wir das tun. 548 00:39:34,220 --> 00:39:37,110 Eine recht lange Liste gibt, oder? 549 00:39:37,110 --> 00:39:40,990 Blättern Sie ein wenig. Schauen Sie sich das alles. 550 00:39:40,990 --> 00:39:44,330 Einige dieser Dinge werden automatisch von der Shell definiert. 551 00:39:44,330 --> 00:39:49,320 Die Shell erstellt die Variable und gibt sie einen Wert. 552 00:39:49,320 --> 00:39:52,730 Einige von ihnen werden von der Schale definiert ist, aber dann durch den Benutzer neu definiert 553 00:39:52,730 --> 00:39:54,820 nach seinen Vorlieben. 554 00:39:54,820 --> 00:39:59,110 Und einige von ihnen werden vom Benutzer je nachdem, was er tut, dass Tag erstellt. 555 00:39:59,110 --> 00:40:01,880 Das ist nur ohne Argumente gesetzt. 556 00:40:06,920 --> 00:40:10,050 Es ist eine seltsame Eigenschaft hier dieser Sache. 557 00:40:10,050 --> 00:40:17,980 Es müssen entweder keine Leerzeichen zwischen dem Gleichheitszeichen und dem Variablennamen sein 558 00:40:17,980 --> 00:40:23,700 und der Wert oder die Räume auf beiden Seiten des Gleichheitszeichens, 559 00:40:23,700 --> 00:40:28,940 wie in dieser. 560 00:40:35,620 --> 00:40:41,340 Das wird nicht funktionieren, und das ist eigentlich ein gültiger Befehl 561 00:40:41,340 --> 00:40:43,390 aber es wird nicht das tun, was Sie wollen. 562 00:40:43,390 --> 00:40:50,070 Dieser Befehl wird funktionieren, denn wenn man nur sagen gesetzt und einen Variablennamen 563 00:40:50,070 --> 00:40:54,890 mit keine Gleichheitszeichen oder eingestellt und ein Variablenname mit einem Gleichheitszeichen und kein Wert, 564 00:40:54,890 --> 00:40:57,770 es wird die Variable auf Null gesetzt. 565 00:40:57,770 --> 00:41:00,120 So setzen Sie ein = ist ein gültiger Befehl. 566 00:41:00,120 --> 00:41:04,370 Das Set-Befehl kann mehr als 1 Variable auf der gleichen Linie zu definieren. 567 00:41:04,370 --> 00:41:11,240 So daß dieser Befehl hat hier die Wirkung der Definition a und b Null-Werten. 568 00:41:11,240 --> 00:41:13,470 Wahrscheinlich nicht, was Sie wollen. 569 00:41:13,470 --> 00:41:17,940 Dieser hier, bereits erwähnt, wird zu einem Fehler führen 570 00:41:17,940 --> 00:41:21,270 weil = b ist kein gültiger Ausdruck. 571 00:41:21,270 --> 00:41:23,680 Ein Variablenname kann nicht mit dem Gleichheitszeichen beginnen. 572 00:41:26,760 --> 00:41:29,080 Und es sind diese Dinge hier weiter. 573 00:41:29,080 --> 00:41:36,820 Die Doppelpunkte wurden verwendet, um Argumente aus der Geschichte Linien wählen, 574 00:41:36,820 --> 00:41:41,210 und sie können verwendet werden - und ich habe nicht vor zu gehen - um diese Dinge zu ändern. 575 00:41:41,210 --> 00:41:44,480 Sie können auch verwendet werden, um Shell-Variablen ändern. 576 00:41:44,480 --> 00:41:49,050 Dieser hier, $ a, hat einen Wert. 577 00:41:49,050 --> 00:41:55,040 : R abheben wird eine Erweiterung. 578 00:41:55,040 --> 00:41:57,200 Eine Erweiterung wird alles nach einem Punkt zu sein, 579 00:41:57,200 --> 00:41:59,200 ein Punkt und alles ihm am Ende einer Datei, 580 00:41:59,200 --> 00:42:03,230 nur am Ende der Liste nach dem letzten Schrägstrich. 581 00:42:03,230 --> 00:42:05,480 Also ich habe es hier. 582 00:42:05,480 --> 00:42:10,730 eine ist, dass. Es fallen die. O. 583 00:42:10,730 --> 00:42:16,510 Wenn es keine Verlängerung, nur die Pfadnamen nach dem letzten Schrägstrich, wird es keine Auswirkungen. 584 00:42:16,510 --> 00:42:27,480 a: h, dass variable Ausdruck, abheben wird das letzte Element des Verzeichnisses, 585 00:42:27,480 --> 00:42:29,660 wieder nur nach dem letzten Schrägstrich. 586 00:42:29,660 --> 00:42:33,160 So / a / b / c wird / a / b, 587 00:42:33,160 --> 00:42:38,870 aber dieses ist verändert, weil das Element nach der Liste ist null. 588 00:42:38,870 --> 00:42:43,070 Hier gibt es etwas, das auch ich möchte betonen. 589 00:42:43,070 --> 00:42:46,770 Diese Qualifikation nicht für die Existenz dieser Dateien zu suchen. 590 00:42:46,770 --> 00:42:48,910 Sie nur für Strings zu suchen. 591 00:42:48,910 --> 00:42:54,520 Diese sollen die Dateinamen zu manipulieren, Pfadnamen, 592 00:42:54,520 --> 00:42:57,520 aber sie kann auf einem beliebigen Zeichenfolge verwendet werden, auch wenn es nicht ein Dateiname. 593 00:42:57,520 --> 00:42:58,920 Und sie suchen nicht nach der Existenz, 594 00:42:58,920 --> 00:43:03,550 so, wenn es keine solche Datei, / a / b / c, das wird immer noch funktionieren. 595 00:43:03,550 --> 00:43:06,930 Ob es von Nutzen ist eine andere Frage, aber es wird immer noch funktionieren. 596 00:43:06,930 --> 00:43:12,850 Variablen sind unterschiedlich in den Bourne-Shells. Dazu kommen wir später. 597 00:43:12,850 --> 00:43:18,240 Dollar-Zeichen können ebenso wie die Ausrufezeichen und das Sternchen maskiert werden. 598 00:43:18,240 --> 00:43:21,760 Dollar-Zeichen mit einem Backslash oder den einfachen Anführungszeichen maskiert werden. 599 00:43:21,760 --> 00:43:24,790 Anführungszeichen haben die ungerade Effekt in allen Schalen 600 00:43:24,790 --> 00:43:28,690 zwingen die Auswertung eines Dollar-Zeichen variablen Ausdruck. 601 00:43:28,690 --> 00:43:31,960 Also, wenn es eine Möglichkeit entgangen ist, können die Anführungszeichen den Effekt haben 602 00:43:31,960 --> 00:43:34,380 wodurch es zu der ohnehin ausgewertet werden. 603 00:43:34,380 --> 00:43:37,090 Dies ist ein wenig verwirrend. 604 00:43:37,090 --> 00:43:43,740 Wenn es mehrere Ebenen der Flucht, wie einfache Anführungszeichen in doppelte Anführungszeichen 605 00:43:43,740 --> 00:43:46,770 oder doppelten Anführungszeichen in einfache Anführungszeichen, sollten Sie testen, um zu sehen, was passieren wird 606 00:43:46,770 --> 00:43:49,520 auf eine Variable, wenn Sie eines sind. 607 00:43:49,520 --> 00:43:53,410 Diese zwei Situationen - doppelt innerhalb von Einzel-, Doppel-Einzel Innenseite - 608 00:43:53,410 --> 00:43:55,980 nicht unbedingt geben Sie das gleiche Ergebnis. 609 00:44:02,520 --> 00:44:05,600 Umgebungsvariablen, gebundene C-Shell-Variablen. 610 00:44:05,600 --> 00:44:08,340 Environment-Variablen sind auch Variablen in der C-Shell, 611 00:44:08,340 --> 00:44:11,250 und sie sind auch Variablen in anderen Shells auch. 612 00:44:11,250 --> 00:44:15,230 In der C-Shell, sie sind unterschiedliche Sätze. 613 00:44:15,230 --> 00:44:18,130 Die Dinge, die ich zuvor gesagt habe etwa Shell-Variablen. 614 00:44:18,130 --> 00:44:21,300 Environment-Variablen sind ein deutlicher Satz von Variablen 615 00:44:21,300 --> 00:44:28,650 mit Ausnahme von mehreren Variablen, die wir gebundenen Variablen nennen, 616 00:44:28,650 --> 00:44:30,640 die sehr wichtig sind, und wir werden später in solche zu bekommen. 617 00:44:30,640 --> 00:44:34,950 Umgebungsvariablen werden automatisch weitergeleitet 618 00:44:34,950 --> 00:44:41,800 auf Muscheln oder Befehle, die von der Shell ausgeführt werden. 619 00:44:41,800 --> 00:44:46,220 Die anderen Dinge sind es nicht. Die Shell-Variablen sind die Aliase nicht. Environment-Variablen sind. 620 00:44:46,220 --> 00:44:48,630 Deshalb nennen wir sie Umgebungsvariablen 621 00:44:48,630 --> 00:44:55,030 die Idee ist, dass die Umwelt erstreckt sich über nur Ihre aktuelle Shell. 622 00:44:55,030 --> 00:45:00,510 Sie können verwendet werden, um die Dinge für Befehle definieren. 623 00:45:00,510 --> 00:45:05,470 Hier ist ein Beispiel. DRUCKER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Diese beiden Variablen können einen Drucker, ein Befehl nutzen, um Dinge zu drucken definieren. 625 00:45:12,270 --> 00:45:16,500 Wenn Sie mehrere Drucker um sich zu haben, möchten Sie vielleicht die, die Sie mögen. 626 00:45:16,500 --> 00:45:21,320 Der Grund haben wir 2 Variablen ist, dass unterschiedliche Befehlssätze wurden geschrieben 627 00:45:21,320 --> 00:45:23,870 Mit diesen verschiedenen Variablen. 628 00:45:23,870 --> 00:45:25,910 Man könnte sie unterschiedliche Werte zu geben. 629 00:45:25,910 --> 00:45:28,860 Die meisten wahrscheinlich, dass Sie beide den gleichen Wert zu geben. 630 00:45:28,860 --> 00:45:35,840 Diese Dinge funktionieren, weil die Befehle, die Druck machen 631 00:45:35,840 --> 00:45:40,740 wurden programmiert, um die Werte dieser Variablen zu untersuchen. 632 00:45:42,200 --> 00:45:46,150 Wenn ein Programm nicht so geschrieben, wenn es geschrieben, um etwas anderes zu tun, 633 00:45:46,150 --> 00:45:48,280 die Variable wäre irrelevant. 634 00:45:48,280 --> 00:45:52,530 Also das Betriebssystem ist nicht auf der Suche nach diesen Variablen 635 00:45:52,530 --> 00:45:55,210 jedes Mal, wenn Sie einen Drucker verweisen. 636 00:45:55,210 --> 00:45:59,090 Ein Befehl, der Druck tut, ist für diese Variablen suchen, wenn sie auf diese Weise programmiert. 637 00:46:11,030 --> 00:46:15,240 Diese Variablen werden oft in Ihrem Initialisierung Dateien definiert 638 00:46:15,240 --> 00:46:19,440 aber nicht notwendigerweise. 639 00:46:19,440 --> 00:46:21,050 Sie können sie auf der Kommandozeile zu definieren. 640 00:46:21,050 --> 00:46:24,090 Sie können in einem Befehl definiert werden. 641 00:46:24,090 --> 00:46:28,740 Ein Befehl, der etwas läuft vielleicht über eine eigene Auswahl von Variablen - 642 00:46:28,740 --> 00:46:32,390 Variablen, die spezifisch für eine bestimmte Software sind beispiels. 643 00:46:32,390 --> 00:46:36,740 Sie werden definiert werden, wenn Sie dieses Paket auszuführen. 644 00:46:39,690 --> 00:46:42,680 Wie werden diese Variablen zu einer Sub-Shell übergeben? 645 00:46:42,680 --> 00:46:48,210 Wenn eine Sub-Shell geschrieben wird, ist es nicht in diesen Bereich schreiben. 646 00:46:48,210 --> 00:46:53,260 Die Fläche der Unterschale, die Umgebungsvariablen widmet 647 00:46:53,260 --> 00:46:56,450 wird nicht durch die Unterschale geschrieben, es ist durch Kopieren geschrieben. 648 00:46:56,450 --> 00:47:00,530 Wenn Sie eine normale Befehl ausführen, wie diese Befehle zu drucken oder was auch immer, 649 00:47:00,530 --> 00:47:03,840 sie beginnen, indem Sie eine neue Shell. 650 00:47:03,840 --> 00:47:06,190 Die Schale schafft eine Shell und überschreibt dann ein Teil davon 651 00:47:06,190 --> 00:47:08,800 mit dem Befehl, den Sie ausführen, was ein wenig verwirrend ist, 652 00:47:08,800 --> 00:47:10,740 aber das ist, wie diese Befehle erhalten die Umgebungsvariablen 653 00:47:10,740 --> 00:47:14,890 dass sie dann später beziehen. 654 00:47:21,920 --> 00:47:28,010 Der Befehl hier für die Festlegung der variablen setenv. 655 00:47:28,010 --> 00:47:36,470 Das ist, wie Sie ihn definieren. Es ist drei Elemente: setenv, Variable, Wert. 656 00:47:36,470 --> 00:47:44,710 Wenn Sie gerade keine Argumente setenv, was bekommen Sie? 657 00:47:47,220 --> 00:47:48,810 Eine Liste aller dieser Variablen. 658 00:47:48,810 --> 00:47:53,190 Wieder ist es eine schöne lange Liste, und in diesem Fall, wie in den anderen, 659 00:47:53,190 --> 00:47:57,320 Diese Variablen werden weitgehend durch meine Anmeldevorgang von der Shell selbst definiert 660 00:47:57,320 --> 00:47:59,740 als durch alles, was ich tat. 661 00:47:59,740 --> 00:48:03,580 Es gibt einen weiteren Befehl hier printenv. 662 00:48:07,520 --> 00:48:10,340 Das druckt auch die Umwelt. 663 00:48:10,340 --> 00:48:15,240 Beachten Sie, dieses letzte, was hier, EDITOR = vi. 664 00:48:15,240 --> 00:48:21,120 Das sagt, dass, wenn ich mit etwas, das einen Editor ruft 665 00:48:21,120 --> 00:48:25,530 und ich weiß nicht angeben, ein Editor und erlaubt es mir die Wahl, kann es mir geben vi. 666 00:48:25,530 --> 00:48:37,280 Was ist, wenn ich printenv HERAUSGEBER? Es sagt mir, was es ist. 667 00:48:37,280 --> 00:48:41,340 Kurz vor, dass es eine Variable, WENIGER. 668 00:48:41,340 --> 00:48:46,040 Dies sind Ihre Standardoptionen, wenn ich das LESS-Befehl, 669 00:48:46,040 --> 00:48:49,360 was zeigt Dateien. 670 00:48:49,360 --> 00:48:55,910 Also, wenn ich das tue, kann printenv ein Argument oder 0 Argumente übernehmen, 671 00:48:55,910 --> 00:48:58,070 nicht mehr als 1 ist. 672 00:49:01,800 --> 00:49:05,690 Es gibt auch andere Befehle, aber wir gehen nicht in das ganze heute. 673 00:49:05,690 --> 00:49:11,010 Denken Sie daran, es gab die Modifikatoren für die Shell-Variablen wie: h, 674 00:49:11,010 --> 00:49:14,350 die das letzte Element einer Pfad fallen wird, 675 00:49:14,350 --> 00:49:17,950 oder: r, die eine Verlängerung fallen wird. 676 00:49:17,950 --> 00:49:23,110 Diejenigen, die jetzt an den Umgebungsvariablen zu beantragen. Sie haben nicht zu verwenden. 677 00:49:23,110 --> 00:49:24,960 Früher war es so, sie könnten nicht geändert werden. Jetzt können sie sein. 678 00:49:24,960 --> 00:49:29,190 Es ist eines der Fortschritte mit der Entwicklung der Schalen über die Jahre. 679 00:49:29,190 --> 00:49:35,620 Ich sagte, dass die Schalen als Teil der Umgebungen 680 00:49:35,620 --> 00:49:43,040 und Shell-Variablen in der C-Shell sind, mit einigen Ausnahmen, unterschiedliche Sätze. 681 00:49:43,040 --> 00:49:46,790 Sie können eine Umgebungsvariable und eine Shell-Variable mit dem gleichen Namen zu etablieren. 682 00:49:46,790 --> 00:49:49,220 Sie werden verschiedene Variablen sein, sie können unterschiedliche Werte haben. 683 00:49:49,220 --> 00:49:53,090 Ändern Sie den Wert einer wird den Wert des anderen nicht ändern. 684 00:49:53,090 --> 00:49:58,070 Diese Variablen sind alle mit dem Dollarzeichen ausgewertet - $ a, $ was auch immer. 685 00:49:58,070 --> 00:50:02,340 So was, wenn Sie das? Möchten Sie wissen, was man Sie? 686 00:50:02,340 --> 00:50:04,520 In meinen Tests habe ich die Shell-Variable, 687 00:50:04,520 --> 00:50:07,240 aber dies ist nicht dokumentiert und Sie können nicht darauf verlassen. 688 00:50:07,240 --> 00:50:10,270 Also frage ich Sie, ist Shell-und Umgebungsvariablen die Schaffung 689 00:50:10,270 --> 00:50:13,490 mit dem gleichen Namen eine gute Idee? Nr. Ok. 690 00:50:13,490 --> 00:50:17,460 Was sind die großen Ausnahmen, in denen die Umwelt und die Shell-Variablen 691 00:50:17,460 --> 00:50:19,860 miteinander verknüpft? 692 00:50:19,860 --> 00:50:27,470 Es sind diese vier. 693 00:50:32,030 --> 00:50:35,510 Großbuchstabe TERM-Umgebungsvariable, 694 00:50:35,510 --> 00:50:41,540 Shell-Variable Begriff in kleinen Buchstaben, die Art der Terminal-Emulation. 695 00:50:41,540 --> 00:50:47,430 Ich werde einfach hier um zu gehen und ich werde Echo, eine nützliche Befehl hier zu tun, 696 00:50:47,430 --> 00:50:52,560 $ TERM $ term. Und da. 697 00:50:52,560 --> 00:51:00,570 xterm ist ein Terminal-Typ für Fenster in das X Window System angezeigt. 698 00:51:00,570 --> 00:51:04,330 xterm-color ist eine Variation, dass die verschiedenen Farben ermöglicht. 699 00:51:04,330 --> 00:51:06,580 Warum definieren wir diese? Was ist das gut? 700 00:51:06,580 --> 00:51:09,740 Befehle, die den Bildschirm wie der Editor neu ordnen 701 00:51:09,740 --> 00:51:13,680 senden bestimmte Sequenzen, die so genannte Escape-Sequenzen, 702 00:51:13,680 --> 00:51:18,160 mit einem Terminal oder einem Fenster, um es neu anzuordnen und so weiter. 703 00:51:18,160 --> 00:51:20,990 Diese Sequenzen sind für verschiedene Arten von Terminals. 704 00:51:20,990 --> 00:51:23,100 Das sagt er, welche zu verwenden. 705 00:51:23,100 --> 00:51:25,900 Manchmal gibt es Probleme gibt. 706 00:51:25,900 --> 00:51:28,600 Vielleicht möchten Sie das ändern. 707 00:51:28,600 --> 00:51:30,780 Wenn die Dinge nicht funktionieren, manchmal ist die Terminal-Typ ist falsch eingestellt, 708 00:51:30,780 --> 00:51:36,440 Sie können es durch die Neudefinition der tige variable beheben. 709 00:51:36,440 --> 00:51:43,420 In diesen Fällen kann die Änderung einer Variablen, die Umgebungsvariable oder die Shell-Variable, 710 00:51:43,420 --> 00:51:45,970 sollte die andere ändern. 711 00:51:45,970 --> 00:51:50,970 Ich habe entdeckt, durch die Erfahrung, dass eine Änderung TERM in Großbuchstaben 712 00:51:50,970 --> 00:51:54,060 nicht immer tige Shell-Variable ändern in kleinen Buchstaben. 713 00:51:54,060 --> 00:51:55,550 Das ist ein Fehler. 714 00:51:55,550 --> 00:51:59,400 Ich weiß nicht, wenn es das ist immer wahr. Die meiste Zeit ist es nicht wahr, aber kann es sein. 715 00:51:59,400 --> 00:52:02,490 Also, wenn Sie eine Änderung vornehmen, nur überprüfen, dass aus. 716 00:52:02,490 --> 00:52:05,830 Es ist nicht oft, dass man diesen Wert ändern müssen, aber einmal in eine Weile zu tun. 717 00:52:05,830 --> 00:52:08,260 Umgebungsvariable USER. 718 00:52:08,260 --> 00:52:12,070 Auch Umgebungsvariable in Großbuchstaben, Shell-Variable in Kleinbuchstaben. 719 00:52:12,070 --> 00:52:13,710 Dies ist Ihr Benutzername. 720 00:52:13,710 --> 00:52:16,730 Es ist nur unter sehr außergewöhnlichen Umständen 721 00:52:16,730 --> 00:52:18,420 dass Sie das ändern möchten. 722 00:52:18,420 --> 00:52:22,350 Wenn Ihr Benutzername ist jemand anderes, kann es alle möglichen Dinge zu werfen. 723 00:52:22,350 --> 00:52:26,040 Home-Verzeichnis, Home-Verzeichnis des Benutzers. 724 00:52:26,040 --> 00:52:28,060 Auch hier würden Sie nicht wollen, das zu ändern. 725 00:52:28,060 --> 00:52:32,260 Beachten Sie in all diesen Fällen und die, die wir sind dabei, zu decken, die Pfad-Variable, 726 00:52:32,260 --> 00:52:37,070 Umgebungsvariable ist in Großbuchstaben und das gebundene Shell-Variable ist in kleinen Buchstaben. 727 00:52:37,070 --> 00:52:39,240 Wenn Sie ein zu ändern, sollten Sie die andere ändern. 728 00:52:39,240 --> 00:52:45,960 Diese Art der Bindung kann nicht festgestellt, wie Sie können nicht zwei Variablen zu binden, 729 00:52:45,960 --> 00:52:50,570 anders als diese 4, und die Bindung in diesen Variablen kann nicht rückgängig gemacht werden kann, 730 00:52:50,570 --> 00:52:52,090 kann man nicht trennen. 731 00:52:52,090 --> 00:52:55,820 Also diese vier Paare von Variablen gebunden sind. 732 00:52:55,820 --> 00:52:59,020 Sie wird es immer sein. Keine andere werden. 733 00:52:59,020 --> 00:53:05,720 Darüber hinaus wäre es möglich, Variablen mit demselben Namen zu erstellen 734 00:53:05,720 --> 00:53:07,780 der entgegengesetzten Typs. 735 00:53:07,780 --> 00:53:11,600 Sie könnten eine Shell-Variable Begriff in kleinen Buchstaben machen 736 00:53:11,600 --> 00:53:14,990 oder eine Umgebungsvariable TERM in Großbuchstaben. 737 00:53:14,990 --> 00:53:19,040 Diese Variablen würden unabhängig von diesen Variablen gepaart sein 738 00:53:19,040 --> 00:53:20,780 und sie sind unabhängig voneinander. 739 00:53:20,780 --> 00:53:23,780 Ich kann mir nicht vorstellen, warum man das tun würde, es sei denn Sie wollen die Menschen zu verwirren. 740 00:53:24,600 --> 00:53:29,730 Dieser hier, Pfad-Variable, dies ist ein wirklich wichtiges. 741 00:53:29,730 --> 00:53:35,550 Eine andere Sache hier ist, dass es Fälle geben, 742 00:53:35,550 --> 00:53:40,430 Variablen mit ähnlichen gepaarten Namen, die nicht miteinander verbunden sind. 743 00:53:40,430 --> 00:53:45,000 Es können Variablen, Shell und Shell sein, in großen und kleinen Buchstaben. 744 00:53:45,000 --> 00:53:48,300 Basierend auf diesen Namen, die Sie nicht wissen, ob diese Variable ist ein Shell-Variable 745 00:53:48,300 --> 00:53:51,580 oder eine Umgebungsvariable, und sie sind nicht miteinander verbunden. 746 00:53:51,580 --> 00:53:55,300 Also diese Art von gepaarten Namen bedeutet nicht gebundenen Variablen. 747 00:53:55,300 --> 00:53:58,830 Der Pfad-Variable, die ich vorher zeigt, 748 00:53:58,830 --> 00:54:01,880 ist eine Liste von Pfadnamen in dem die Schale sieht für Befehle. 749 00:54:01,880 --> 00:54:12,320 Lassen Sie uns über dieses Fenster hier und wir echo $ PATH, Großbuchstaben zu tun - 750 00:54:12,320 --> 00:54:20,230 Umgebungsvariable - echo $ Pfad, Kleinbuchstaben - Shell-Variable. 751 00:54:20,230 --> 00:54:24,980 Beachten Sie, dass die Liste der Verzeichnisse ist die gleiche. Diese sind gebunden. 752 00:54:24,980 --> 00:54:26,590 Ändern Sie eine, die andere ändern Sie. 753 00:54:26,590 --> 00:54:32,970 In der Umgebungsvariablen die Elemente durch Doppelpunkte getrennt. Beachten Sie, dass. 754 00:54:32,970 --> 00:54:35,130 Die Shell-Variablen werden durch Leerzeichen getrennt. 755 00:54:35,130 --> 00:54:38,760 Diese Umgebungsvariable ist eine einzelne Saite. 756 00:54:38,760 --> 00:54:41,480 Die Shell-Variable ein Array ist. 757 00:54:41,480 --> 00:54:43,490 Die Bourne-Shell nicht über Arrays. 758 00:54:43,490 --> 00:54:46,600 Bash tut, aber das ist schon ein fester Teil der Schale. 759 00:54:46,600 --> 00:54:48,660 Dies ist ein Einzelstrang und kein Feld. 760 00:54:48,660 --> 00:54:50,420 Die C-Shell hatte immer Arrays. 761 00:54:50,420 --> 00:54:52,630 Die Arrays sind viel einfacher, mit zu arbeiten. 762 00:54:52,630 --> 00:54:54,400 Sie können Teile davon beziehen. 763 00:54:54,400 --> 00:55:02,350 So echo $ path [1] und ich / usr / bin, das erste Element. 764 00:55:02,350 --> 00:55:09,950 Auch hier erinnern Dollar-Zeichen steht für das letzte Element der Verlaufsliste. 765 00:55:09,950 --> 00:55:16,850 Was passiert da? Es versucht, Dollar-Zeichen als Variable Symbol. 766 00:55:16,850 --> 00:55:20,850 Ich entkommen. Oops. Es wäre nicht das auch nicht. 767 00:55:20,850 --> 00:55:23,690 Einige dieser Dinge nicht so gut funktionieren. 768 00:55:23,690 --> 00:55:28,140 Vielleicht werde einfach lassen wir das aus. 769 00:55:28,140 --> 00:55:36,980 Asterisk bezieht sich auf die ganze Sache, aber das ist, was Sie bekommen, wenn Sie nicht ein Element angeben. 770 00:55:36,980 --> 00:55:46,170 Eine weitere Möglichkeit, Feldvariablen manipuliert werden kann, 771 00:55:46,170 --> 00:55:49,500 Anzahl der Elemente gibt, 7 Elemente. 772 00:55:49,500 --> 00:55:53,410 Hier das Nummernzeichen setzen wir vor dem Variablennamen. 773 00:55:53,410 --> 00:55:58,280 Hier ist eine andere. Setzen Sie ein Fragezeichen gibt. 774 00:55:58,280 --> 00:56:03,170 Das ist ein logischer Wert. Das zeigt an, dass die Variable existiert. 775 00:56:03,170 --> 00:56:05,160 Es ist eine andere Art zu arbeiten mit Variablen. 776 00:56:05,160 --> 00:56:06,660 Dass durch die Möglichkeit, nicht auf eine Anordnung variabel sein. 777 00:56:06,660 --> 00:56:08,210 Das könnte eine Variable sein. 778 00:56:08,210 --> 00:56:11,840 Und wenn ich das tue, gibt es keine solche Variable, und ich bekomme eine 0 ein. 779 00:56:11,840 --> 00:56:14,990 Ein weiteres kleines Ding dort über variable Auswertungen. 780 00:56:23,670 --> 00:56:32,950 Zurück zu dieser hier, wenn aus irgendeinem Grund Sie mit diesem arbeiten wollte 781 00:56:32,950 --> 00:56:37,990 statt mit dem Array, die Shell-Variable, 782 00:56:37,990 --> 00:56:41,470 gibt es Befehle, die diese Dinge auf der Grundlage der Doppelpunkt trennen kann. 783 00:56:41,470 --> 00:56:44,080 In der Tat, wenn Sie gehen, um möglicherweise tun dies in der Bash-Shell, 784 00:56:44,080 --> 00:56:47,110 eine Art von einem Skript, das wäre wohl sein, wie Sie es tun würden. 785 00:56:47,110 --> 00:56:50,350 Aber in der C-Shell ist es viel einfacher, um das Array zu verwenden. 786 00:56:50,350 --> 00:56:58,250 In der Bourne-Shell-Variablen werden durch einen einzigen Ausdruck wie diese zugewiesen, 787 00:56:58,250 --> 00:57:01,760 die Art, wie Sie vielleicht eine Variable in einer Programmiersprache zuzuordnen, 788 00:57:01,760 --> 00:57:05,110 und hier darf kein Leerzeichen sein. 789 00:57:05,110 --> 00:57:09,110 Es ist notwendig, dass es nur ein String sein. 790 00:57:09,110 --> 00:57:14,980 In der Bourne-artige Shells, alle Variablen Shell-Variablen. 791 00:57:14,980 --> 00:57:19,250 Environment-Variablen sind eine Teilmenge der Shell-Variablen. 792 00:57:19,250 --> 00:57:24,060 Sie werden aus den Nicht-Umgebungsvariablen durch Exportieren aus. 793 00:57:24,060 --> 00:57:28,860 Der Befehl dazu ist Export, wie Export DRUCKER. 794 00:57:28,860 --> 00:57:34,930 Wenn wir eine solche Variable zu definieren, 795 00:57:34,930 --> 00:57:38,480 wenn wir wollten einen Druckbefehl zu finden, müsste es eine Umgebungsvariable zu sein, 796 00:57:38,480 --> 00:57:40,730 und das ist, wie wir es ein. 797 00:57:40,730 --> 00:57:42,090 Hier gibt es etwas Art von verwirrend. 798 00:57:42,090 --> 00:57:50,430 Dieser Ausdruck, den Export in die Umwelt, ergibt sich aus dieser Bourne-Shell-Konzept, 799 00:57:50,430 --> 00:57:54,520 doch dieser Begriff wird in den Beschreibungen der C-Shell verwendet wird, 800 00:57:54,520 --> 00:57:57,920 wo kein solcher Befehl Export. 801 00:57:57,920 --> 00:58:06,200 Wenn Sie nur sagen, Export von selbst, erhalten Sie eine Liste der exportierten - 802 00:58:06,200 --> 00:58:10,620 Also, wenn ich gerade hier zu exportieren, keine solche Sache. 803 00:58:13,620 --> 00:58:15,200 Okay, da wir gehen. 804 00:58:15,200 --> 00:58:17,010 Diese Dinge, die übrigens auch von der Shell definiert. 805 00:58:17,010 --> 00:58:19,400 Ich wollte nicht einer dieser von mir selbst zu definieren. 806 00:58:19,400 --> 00:58:23,550 Die Schale hat alle möglichen Dinge von selbst aus. 807 00:58:23,550 --> 00:58:26,650 Es sollte die Dinge automatisch. 808 00:58:30,240 --> 00:58:36,880 In Bash oder Korn-Shell, können Sie einen Befehl wie diesen ausführen können, 809 00:58:36,880 --> 00:58:42,000 geben, die sowohl einen variablen Wert und exportieren es in 1-Befehl. 810 00:58:42,000 --> 00:58:46,150 In der Bourne-Shell müssen sie getrennte Befehle wie ein Export sein. 811 00:58:46,150 --> 00:58:48,410 Hier ist ein weiterer Aspekt, die verwirrend ist. 812 00:58:48,410 --> 00:58:52,220 Das Set-Befehl in der C-Shell-Variablen definiert 813 00:58:52,220 --> 00:58:55,550 und ohne Argumente sagt Ihnen, was die Variablenwerte. 814 00:58:55,550 --> 00:59:01,140 In der Bash-Shell, das Set-Befehl ohne Argumente macht das Gleiche, 815 00:59:01,140 --> 00:59:03,580 aber mit Argumenten, es macht etwas ganz anderes. 816 00:59:03,580 --> 00:59:06,200 Das sind also die verschiedenen Argumente hier. 817 00:59:06,200 --> 00:59:10,460 Einige von diesen sind Umgebungsvariablen, einige von ihnen sind Shell-Variablen. 818 00:59:10,460 --> 00:59:13,200 Alle von ihnen sind Shell-Variablen wirklich. Einige von denen sind Umgebungsvariablen. 819 00:59:15,690 --> 00:59:23,920 Das Set-Befehl mit Argumenten verwendet werden, um zu arbeiten 820 00:59:23,920 --> 00:59:28,220 auf die Positionsparameter an ein Skript, 821 00:59:28,220 --> 00:59:33,910 Das ist ein Weg, um sie alle auf einmal. 822 00:59:33,910 --> 00:59:36,150 Wir können nicht wirklich in diese gehen heute. 823 00:59:36,150 --> 00:59:39,580 Es kann auch verwendet werden, um Shell-Verhalten zu ändern. 824 00:59:39,580 --> 00:59:46,700 Besonders in der Bash gibt es Variablen, die bestimmen, wie die Shell verhält. 825 00:59:46,700 --> 00:59:51,310 Dann auch nur diesen einen Befehl, die Sie sehen, dieser Befehl. 826 00:59:51,310 --> 00:59:59,050 Setzen, gefolgt von Variablen und Variablentypen ist in der Korn-und Bash-Shell verwendet. 827 00:59:59,050 --> 01:00:04,970 Es ist nicht obligatorisch, aber es kann verwendet werden, um die Werte der Variablen zu beschränken, 828 01:00:04,970 --> 01:00:08,400 was nützlich, um Fehler zu verhindern kann, und es ist ziemlich weit verbreitet. 829 01:00:08,400 --> 01:00:11,640 Also ich bin einfach nur zu erwähnen, dass, wenn Sie es irgendwo zu sehen. 830 01:00:17,290 --> 01:00:19,160 Die in dem Befehl. 831 01:00:19,160 --> 01:00:22,490 Angemeldet ich bereits erwähnt habe, wo der Befehl in der C-Shell, 832 01:00:22,490 --> 01:00:28,750 was Sie sagen, kann die Position eines Befehls Pfadnamen. 833 01:00:28,750 --> 01:00:32,580 Hier ist Befehl Substitution. 834 01:00:32,580 --> 01:00:41,900 Sie sollten auf Ihrer Tastatur irgendwo ein Zeichen, das wie folgt aussieht finden. 835 01:00:41,900 --> 01:00:44,910 Die Lage auf der Tastatur wird zu variieren. 836 01:00:44,910 --> 01:00:47,050 Wir haben es genannt Backquote. Es geht um die Größe von einem Angebot. 837 01:00:47,050 --> 01:00:48,720 Es geht von oben links nach unten rechts. 838 01:00:48,720 --> 01:00:52,690 Hier auf meinem Mac-Tastatur, es ist in der oberen linken Ecke. 839 01:00:52,690 --> 01:00:58,150 Das Zeichen kann verwendet werden, um einen Befehl innerhalb eines Befehls auszuführen. 840 01:00:58,150 --> 01:01:03,400 Wenn Sie einen Ausdruck in Backquotes haben, 841 01:01:03,400 --> 01:01:07,080 dass die Expression ist ein Befehl, es laufen. 842 01:01:07,080 --> 01:01:09,010 Die Ausgabe dieses Befehls 843 01:01:09,010 --> 01:01:11,980 Dann wird für die gesamte Backquote Ausdruck substituiert 844 01:01:11,980 --> 01:01:16,110 in einem Befehl, der länger läuft dann mit dieser Ausgabe 845 01:01:16,110 --> 01:01:22,010 als Teil der Folge von Argumenten und so weiter. 846 01:01:22,010 --> 01:01:28,640 Hier ist ein Befehl, dass verwendet. 847 01:01:28,640 --> 01:01:32,340 Lassen Sie uns zeigen, den Betrieb hier. 848 01:01:44,980 --> 01:01:49,090 Gehen wir hier, nehmen Sie die einfachen Anführungszeichen. 849 01:01:49,090 --> 01:01:54,410 Kontrolle A bringt mich an den Anfang der Zeile mit dem Emacs Bearbeitung Syntax. 850 01:01:54,410 --> 01:02:00,380 Bisher ist die Pfadnamen ist, was wo ist, 851 01:02:00,380 --> 01:02:05,040 aber wenn ich es so, dann steckt es in dieser Liste von Pfadnamen 852 01:02:05,040 --> 01:02:08,750 anstelle von diesem ganzen Backquote Ausdruck und läuft ls-l auf sie. 853 01:02:08,750 --> 01:02:11,120 Art bequem, oder? 854 01:02:11,120 --> 01:02:14,860 Also das ist eine nette Sache. Das ist, wie Backquotes zu arbeiten. 855 01:02:14,860 --> 01:02:17,560 Jetzt gehen wir nach unten ein wenig weiter. 856 01:02:17,560 --> 01:02:22,050 Diese sind Aliase. Ich benutze diesen. 857 01:02:22,050 --> 01:02:26,410 Ich werde versuchen, diese mit in ein Bearbeitungsvorgang zu erhalten. 858 01:02:34,900 --> 01:02:36,900 Okay. 859 01:02:36,900 --> 01:02:39,630 Nun wollen wir sehen, wie diese Definitionen kam heraus. 860 01:02:39,630 --> 01:02:44,930 Alias ​​LBH erzählte mir, wie es definiert. 861 01:02:44,930 --> 01:02:51,210 Beachten Sie, es ist einfach, aber die äußeren Anführungszeichen weggenommen zu haben 862 01:02:51,210 --> 01:02:53,750 und das Ausrufezeichen abgezogen. 863 01:02:53,750 --> 01:02:58,940 ! * Vollständige Liste aller Argumente. 864 01:02:58,940 --> 01:03:03,580 In einem Alias-Definition wird es, wo ich diese verwenden, gelten wieder. 865 01:03:03,580 --> 01:03:10,620 lwh ksh bash. Okay. 866 01:03:10,620 --> 01:03:13,960 Sehen Sie, wie das funktioniert? Es spart mir etwas zu tippen. 867 01:03:13,960 --> 01:03:16,440 Gehen wir ein wenig, nur um etwas anderes hier zu erwähnen. 868 01:03:19,150 --> 01:03:23,120 Beachten Sie hier diese verschiedenen Muscheln. Ich hätte das schon erwähnt haben. 869 01:03:23,120 --> 01:03:36,060 Die csh hat eine 2 hier und so auch / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Wir konnten durch andere Mittel festzustellen, dass die sind eigentlich die gleichen Datei. 871 01:03:39,870 --> 01:03:43,150 Denken Sie daran, ich sagte, wenn Sie tippen Sie sh bash zu bekommen. 872 01:03:43,150 --> 01:03:47,390 Geben Sie diese, und Sie diese. 873 01:03:47,390 --> 01:03:51,730 Aber die sind nicht verbunden. Die haben einzelne Gäste gibt. 874 01:03:51,730 --> 01:03:54,910 Und das ist nicht die Art von Datei, die einen anderen anrufen. 875 01:03:54,910 --> 01:03:59,460 So sind die einzelnen Dateien, die C-Shell diejenigen sind die gleiche Datei. 876 01:03:59,460 --> 01:04:03,640 Hier wieder nach unten, der andere hier, dieser Alias, 877 01:04:03,640 --> 01:04:09,090 beachten Sie, dass dieses Kommando Datei ausgeführt wird. 878 01:04:09,090 --> 01:04:13,810 Das Alias ​​läuft, dass. Datei sehen Sie den Typ einer Datei. 879 01:04:13,810 --> 01:04:20,330 So FWH ksh bash. Okay. 880 01:04:20,330 --> 01:04:23,230 Das ist die Ausgabe der Datei-Befehl. 881 01:04:23,230 --> 01:04:24,630 Ich weiß nicht, ob Sie wissen, was das bedeutet hier, 882 01:04:24,630 --> 01:04:26,750 Mach-O Universal Binary mit 2-Architekturen. 883 01:04:26,750 --> 01:04:30,470 Es gibt 2 mögliche Prozessortypen in Mac 884 01:04:30,470 --> 01:04:34,780 und einige Programme geschrieben wurden, in der Lage, mit beiden ausgeführt werden, 885 01:04:34,780 --> 01:04:37,950 und die Datei-Befehl kann bestimmen, dass, so das ist, was das bedeutet. 886 01:04:37,950 --> 01:04:40,660 Beide Dateien wurden auf diese Weise geschrieben. 887 01:04:40,660 --> 01:04:43,760 So sehen wir, wie der Alias ​​funktioniert, werden wir sehen, wie die Backquote arbeitet, 888 01:04:43,760 --> 01:04:48,640 wir sehen, wie die eigentliche Datei ls oder Datei funktioniert. 889 01:04:52,050 --> 01:04:57,000 Das kann nicht funktionieren. Versuchen Sie, "wo, wo" und "lwh wo". Okay, lass uns versuchen. 890 01:04:57,000 --> 01:05:01,040 wo, wo. 891 01:05:01,040 --> 01:05:03,500 wo ist ein Shell eingebaut. 892 01:05:03,500 --> 01:05:06,970 Denken Sie daran, früher haben wir gezeigt, dass Bash hatte nicht wo. 893 01:05:06,970 --> 01:05:10,080 Wenn Sie in der Bash-Shell geben, wo, erhalten Sie eine Fehlermeldung. 894 01:05:10,080 --> 01:05:12,540 Es ist nur ein Teil der Schale, anstatt ein separates Kommando. 895 01:05:12,540 --> 01:05:20,000 Was passiert, wenn ich auf der Suche nach Typ lwh wo? Sehen Sie, was da passiert. 896 01:05:20,000 --> 01:05:22,850 Ran, wo, wo, habe diese Ausgabe, und dann versucht, ls laufen 897 01:05:22,850 --> 01:05:25,600 als l, wo ist ein Shell eingebaut. 898 01:05:25,600 --> 01:05:28,790 wo ist da, aber die anderen sind nicht vorhanden. 899 01:05:28,790 --> 01:05:32,090 Keiner von ihnen existieren, eigentlich. 900 01:05:32,090 --> 01:05:35,560 Also das funktioniert nicht immer, und es zeigt auch, wie einige Dinge 901 01:05:35,560 --> 01:05:39,580 weiß nicht recht, was tun Sie vielleicht gedacht haben. 902 01:05:40,930 --> 01:05:43,010 Gehen wir ein wenig nach unten weiter hier. 903 01:05:44,890 --> 01:05:54,760 Das hier ist in der Bash. Das ist auch der Befehl Substitution wie die Backquote. 904 01:05:54,760 --> 01:06:05,280 Aber im Gegensatz zu Backquote, verwendet es diese Variable Stil. 905 01:06:05,280 --> 01:06:09,860 Es gibt eine Anzahl von Ausdrücken, die mit einem Dollarzeichen beginnen, 906 01:06:09,860 --> 01:06:16,070 und während diese sind keine Variablen, die Verwendung des Dollarzeichens ausgeliehen sie 907 01:06:16,070 --> 01:06:19,570 um einen Ausdruck einer Art anzuzeigen. 908 01:06:19,570 --> 01:06:23,550 Dies kann durch Klammern oder Klammern oder doppelte Klammern umgeben sein, 909 01:06:23,550 --> 01:06:26,320 die einen anderen Zweck. 910 01:06:26,320 --> 01:06:29,500 Einzel Klammern sind hier ein Kommandosubstitution ebenso wie die einfachen Anführungszeichen. 911 01:06:29,500 --> 01:06:32,720 Doppel Klammern ist eigentlich eine Rechenoperation. 912 01:06:32,720 --> 01:06:35,380 Es gibt auch andere Schreibweisen, andere Operationen. 913 01:06:35,380 --> 01:06:41,520 Backquote-Syntax ist in Bash zur Verfügung. 914 01:06:41,520 --> 01:06:46,780 Jedoch ist dieses bevorzugt. Es ist viel einfacher zu lesen und sie nisten können. 915 01:06:46,780 --> 01:06:51,300 Sie können innerhalb $ (Kommando) haben einen anderen Befehl, 916 01:06:51,300 --> 01:06:54,590 so etwas wie - 917 01:07:14,560 --> 01:07:18,210 Ich eine Liste gibt. 918 01:07:18,210 --> 01:07:21,670 Das würde funktionieren, wenn ich die Backquote auch. 919 01:07:32,050 --> 01:07:38,470 Was, wenn ich etwas zu tun - 920 01:08:03,390 --> 01:08:06,430 Sie würden wahrscheinlich nicht wirklich verwenden Sie diesen Befehl, 921 01:08:06,430 --> 01:08:14,160 aber das interne Befehlsersetzung spiegelt die Namen aller Dateien, beginnend mit a, 922 01:08:14,160 --> 01:08:18,229 dann läuft dieser ein ls-l auf diese Dateien, 923 01:08:18,229 --> 01:08:20,500 und dann diese nur hallt die Ausgabe. 924 01:08:21,729 --> 01:08:24,479 Sie würde wahrscheinlich nicht tun, man würde nur das Echo oder ls tun, 925 01:08:24,479 --> 01:08:29,450 aber zeigt, wie das Verschachteln von Befehlen arbeitet. 926 01:08:29,450 --> 01:08:34,380 Also nur ein weiteres Merkmal hier. 927 01:08:34,380 --> 01:08:37,450  Ich erwähnte dies früher, dass, wenn Sie haben, wo in der C-Shell, 928 01:08:37,450 --> 01:08:42,770 Geben Werke in den Bourne-artige Shells zur Ortung Befehle. 929 01:08:48,939 --> 01:08:52,270 Built-in Befehle, genau das, was ich da sage. 930 01:08:52,270 --> 01:08:54,640 Befehle sind Teil der Schale, wie, wo. 931 01:08:54,640 --> 01:08:59,880 Wenn die Shell führt einen Befehl wie ls, sucht er sie durch den Weg, 932 01:08:59,880 --> 01:09:03,029 findet sie in ein Verzeichnis irgendwo, 933 01:09:03,029 --> 01:09:05,800 liest, dass in den Speicher, wird eine neue Schale, 934 01:09:05,800 --> 01:09:08,960 liest den Befehl ls oder was auch immer in die Schale 935 01:09:08,960 --> 01:09:11,450 wo die Umgebungsvariablen bereits befindet, 936 01:09:11,450 --> 01:09:14,000 und dann überträgt die Ausführung zu. 937 01:09:14,000 --> 01:09:18,319 Built-in-Befehl, ist der Code für diesen Befehl in der Shell, 938 01:09:18,319 --> 01:09:21,460 so die Schale beginnt nur die Ausführung Teil seiner eigenen Code. 939 01:09:21,460 --> 01:09:24,569 wobei ein solcher Befehl ist. Es wird tatsächlich schneller. 940 01:09:24,569 --> 01:09:28,380 Es muss nicht alles in den Speicher zu lesen, es ist bereits im Speicher. 941 01:09:28,380 --> 01:09:32,460 Built-in-Befehle immer Vorrang vor Befehle mit dem gleichen Namen. 942 01:09:32,460 --> 01:09:36,050 Befehle, die in Verzeichnisse sind auf dem Weg können den gleichen Namen haben, 943 01:09:36,050 --> 01:09:39,090 Befehle in verschiedenen Verzeichnissen, Dateien in verschiedenen Verzeichnissen. 944 01:09:39,090 --> 01:09:41,740 Die eine, die früher in den Weg tritt ist, die Sie bekommen. 945 01:09:41,740 --> 01:09:43,770 Wenn es einen eingebauten Befehl, Sie bekommen es immer. 946 01:09:43,770 --> 01:09:47,890 Es gibt keine Möglichkeit sie eine niedrigere Priorität als einen Befehl in den Weg zu geben. 947 01:09:47,890 --> 01:09:54,140 Wenn Sie diesen Weg Befehl erhalten möchten, können Sie den vollständigen Pfadnamen eingeben. 948 01:09:54,140 --> 01:09:55,850 Wenn es einen Befehl aus, wobei in dem Weg irgendwo 949 01:09:55,850 --> 01:09:58,440 Sie / bin / wo geben könnte und Sie erhalten es würde. 950 01:09:58,440 --> 01:10:01,800 Wenn Sie nicht die ganze Pfadnamen eingeben möchten, können Sie einen Alias ​​definieren. 951 01:10:01,800 --> 01:10:06,310 In der Tat, wenn Sie den gleichen Namen wie die eingebauten Befehl gab dem Alias, es würde funktionieren 952 01:10:06,310 --> 01:10:08,790 weil die Aliasdefinition wird ausgewertet 953 01:10:08,790 --> 01:10:13,220 bevor die Schale fest, dass es einen eingebauten Befehl, der ausgeführt werden soll, ist. 954 01:10:18,810 --> 01:10:23,440 Dann wird das ein wenig komplizierter mit einigen Befehlen hier. 955 01:10:23,440 --> 01:10:29,880 Bei einigen Befehlen tatsächlich eingebauten Befehle und in den Weg. 956 01:10:29,880 --> 01:10:34,140 Einer von ihnen ist Echo, der Befehl, den ich gerade vor einer Weile in diesen Beispielen verwendet. 957 01:10:34,140 --> 01:10:37,410 Echo ist ein Befehl, in den Weg und es ist in jeder Shell. 958 01:10:37,410 --> 01:10:40,580 Sie müssen nicht unbedingt alle gleich verhalten. 959 01:10:40,580 --> 01:10:42,970 Es war ursprünglich ein Befehl nur im Weg. 960 01:10:42,970 --> 01:10:45,280 Es wurde an den Schalen später gebaut. 961 01:10:45,280 --> 01:10:48,080 Da gibt es Optionen, die auf die Umwelt hängen 962 01:10:48,080 --> 01:10:52,970 und die Befehlszeilenoptionen, die integrierten Befehle 963 01:10:52,970 --> 01:10:57,030 geschrieben wurden, die gleiche wie der Befehl, der in dem Weg gewesen funktionieren, 964 01:10:57,030 --> 01:10:59,670 es ist unwahrscheinlich, wären sie so geschrieben haben 965 01:10:59,670 --> 01:11:01,720 wenn der Befehl nicht bereits für den Pfad geschrieben. 966 01:11:01,720 --> 01:11:06,180 Also das hat Nebenwirkungen. Seine Geschichte hat Auswirkungen hier. 967 01:11:06,180 --> 01:11:08,380 Es gibt Optionen gibt. 968 01:11:14,280 --> 01:11:23,060 Es gibt auch eine durch eine Variable in der tcsh genannt echo_style Option definiert. 969 01:11:23,060 --> 01:11:27,700 Das ist eine dieser Variablen, die die Art und Weise, die Werke echo ändern. 970 01:11:27,700 --> 01:11:30,910 Es gibt andere Fälle, in denen Sie eine Variable zuweisen 971 01:11:30,910 --> 01:11:36,290 , dass die Art und Weise ändert, dass die Shell-Betrieb, einschließlich eines integrierten Befehl arbeitet. 972 01:11:36,290 --> 01:11:38,130 Es wäre nicht alles andere beeinflussen 973 01:11:38,130 --> 01:11:40,640 da andere Befehle haben keinen Zugriff auf die Shell-Variablen, 974 01:11:40,640 --> 01:11:42,090 nur die Umgebungsvariablen. 975 01:11:42,090 --> 01:11:45,360 Aber Shell-Operationen können die Shell-Variablen zu lesen. 976 01:11:45,360 --> 01:11:50,710 Das wird nicht für csh arbeiten. Das ist nur tcsh. Das ist eine der Verbesserungen. 977 01:11:58,540 --> 01:12:04,620 Parsing-Sequenzen hat, wenn es wertet Metazeichen 978 01:12:04,620 --> 01:12:08,140 wenn es wertet Variablen, Aliase Geschichte Referenzen. 979 01:12:08,140 --> 01:12:11,830 Es gibt eine bestimmte Sequenz für diese Dinge. 980 01:12:11,830 --> 01:12:13,730 Ist dies der Dinge in einer bestimmten Reihenfolge 981 01:12:13,730 --> 01:12:16,080 und bekommt etwas, das ein Ausdruck von einer Art ist 982 01:12:16,080 --> 01:12:20,650 die bereits ausgewertet hat, wird es nicht wieder auswerten. 983 01:12:20,650 --> 01:12:24,520 Wenn er es wird, dann wird es nur geben die Charaktere. 984 01:12:24,520 --> 01:12:29,920 Also, wenn Bewertung einiger Ausdrücke wie Kommando-Substitution 985 01:12:29,920 --> 01:12:36,850 oder variable oder was führt zu einer Expression 986 01:12:36,850 --> 01:12:39,240 was würden Sie wollen, ausgewertet werden, 987 01:12:39,240 --> 01:12:42,510 das wird nur funktionieren, wenn die Auswertung erfolgt später in der Sequenz. 988 01:12:42,510 --> 01:12:45,010 Ich hoffe, ich bin klar, dass dort. 989 01:12:45,010 --> 01:12:50,460 Das Parsing-Sequenz, eine Operation, bei der C-Shell, 990 01:12:50,460 --> 01:12:56,490 ist nicht das gleiche für integrierte Befehle, wie es für nicht-integrierte Befehle. 991 01:12:56,490 --> 01:12:58,890 Ich bin mir nicht sicher Bash dort. 992 01:12:58,890 --> 01:13:02,450 Zum Beispiel produziert, wenn ein Shell-Variable eine Geschichte Referenz, 993 01:13:02,450 --> 01:13:04,230 es wäre wahrscheinlich nicht in die Geschichte gehen. 994 01:13:04,230 --> 01:13:06,010 Es wäre nur das Ausrufezeichen erhalten. 995 01:13:06,010 --> 01:13:08,840 In der Tat, wir können nur versuchen, dass sich gerade jetzt. 996 01:13:09,720 --> 01:13:18,240 a = und wir müssen dies in es gesetzt. 997 01:13:30,690 --> 01:13:34,580 Oh, warten. Entschuldigung. Ich tat dies in der Bash. Ich wollte es hier zu tun. 998 01:13:53,470 --> 01:13:56,080 Sehen Sie, so dass es nicht zu bewerten, dass die Geschichte Referenz 999 01:13:56,080 --> 01:14:00,520 weil es schon über den Punkt der Auswertung Geschichte Ausdrücke 1000 01:14:00,520 --> 01:14:02,720 wenn es die Variable ausgewertet. 1001 01:14:02,720 --> 01:14:05,550 Also das ist ein Effekt der Parsen. 1002 01:14:05,550 --> 01:14:08,760 Und wieder, integrierten Befehle sind nicht die gleiche Art und Weise. 1003 01:14:08,760 --> 01:14:11,230 Gut. Lassen Sie uns auf die nächste Sie hier. 1004 01:14:11,230 --> 01:14:16,060 Dies soll 1 Zeile sein, aber es macht es leichter zu lesen. 1005 01:14:19,130 --> 01:14:21,530 Was bedeutet das? 1006 01:14:21,530 --> 01:14:28,640 Sie erinnern sich vielleicht, dass wir Sternchen als Platzhalter Dateinamen zu bewerten, 1007 01:14:28,640 --> 01:14:33,890 und es gibt auch andere Dateinamen Wildcards wie das Fragezeichen und Klammerausdrücke. 1008 01:14:33,890 --> 01:14:39,000 Diese Art der Auswertung wird als Kleckse. 1009 01:14:39,000 --> 01:14:46,290 gesetzt noglob zu Beginn dieses Befehls sagt das nicht tun. 1010 01:14:46,290 --> 01:14:53,370 unset noglob sagt gehen Sie zurück zu tun. 1011 01:14:53,370 --> 01:14:56,440 Beachten Sie, dass Satz glob würde diese Wirkung haben. 1012 01:14:56,440 --> 01:15:00,800 In der Umgangssprache würde gesetzt oder nicht gesetzt glob noglob scheinen gleichwertig zu sein, 1013 01:15:00,800 --> 01:15:03,290 aber hier ist es nicht. Es ist nicht gesetzt noglob. 1014 01:15:05,120 --> 01:15:07,910 Jetzt tset. tset stand für Terminal-Set. 1015 01:15:07,910 --> 01:15:11,840 Es ist nicht, die heute noch verwendet, aber bevor Windows-Systeme verfügbar wurde 1016 01:15:11,840 --> 01:15:15,760 und Sie haben ein einziges Terminal hatte, haben Sie vielleicht, um die Art zu bestimmen. 1017 01:15:15,760 --> 01:15:18,700 Und wenn etwas wurde über eine Ethernet-oder aus dem Netz kommt, 1018 01:15:18,700 --> 01:15:21,120 möchten Sie vielleicht sagen, es ist ein vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 ist eine Art Standard in der Terminal-Geschäft. Es stammt aus der Dezember-Terminal. 1020 01:15:26,630 --> 01:15:35,270 Wenn Sie gerade tun Einwahl - bemerkt? Dies geht zurück eine Art und Weise, nicht wahr? 1021 01:15:35,270 --> 01:15:39,520 Also, wenn wir einfach hier tset über, 1022 01:15:39,520 --> 01:15:45,250 wenn ich nur tset tun, es ist das Zurücksetzen meinem Terminal, aber du hast nichts gesehen. 1023 01:15:45,250 --> 01:15:47,340 Es hat nicht wirklich etwas zu ändern. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Okay. 1026 01:15:51,480 --> 01:15:53,350 setenv TERM xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Wir wissen bereits, dass der Begriff wurde so festgelegt, so dass nicht zu ändern. 1028 01:15:57,080 --> 01:15:58,860 Das ist der Weg, wir würden es tun wollen. 1029 01:15:58,860 --> 01:16:07,080 Aber beachten Sie, dass dieser Befehl, tset-s, nur diese Befehle ausgegeben. Es dauerte nicht ausführen. 1030 01:16:07,080 --> 01:16:09,770 Es hat nicht diese Befehle ausführen, es auszugeben. 1031 01:16:09,770 --> 01:16:13,650 Also das soll dann Befehle, die ausgeführt werden, produzieren wird. 1032 01:16:13,650 --> 01:16:16,360 Sie erinnern sich an den Befehl in dieser Datei Ich zeigte Ihnen einen Q in sich hatte. 1033 01:16:16,360 --> 01:16:18,910 Also lassen Sie uns das tun. 1034 01:16:18,910 --> 01:16:23,750 Die Q unterdrückt eine Ausgabe, aber das macht hier keine Rolle, wie Sie sehen können. 1035 01:16:23,750 --> 01:16:27,980 Ich bin gerade dabei, dass Ihnen zeigen, dass es keine Rolle spielte. 1036 01:16:27,980 --> 01:16:31,870 Dies ist in Backquote-Syntax. 1037 01:16:31,870 --> 01:16:35,340 Beachten Sie die Backquote hier, Backquote hier. 1038 01:16:35,340 --> 01:16:37,680 Ich bin hier Weglassen dieser Dinge. 1039 01:16:37,680 --> 01:16:39,570 Dies sind Fälle der sagt, was sie tun 1040 01:16:39,570 --> 01:16:42,050 im Fall von bestimmten Arten von Terminals - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, Netzwerk, DFÜ-, was Sie haben. 1042 01:16:45,400 --> 01:16:48,050 Es spielt hier keine Rolle, weil wir nicht tatsächlich alle diese Dinge. 1043 01:16:48,050 --> 01:16:49,720 Ich bin nur zur Veranschaulichung den Befehl. 1044 01:16:49,720 --> 01:16:55,170 Wenn ich das mit dem Backquote, was werde ich bekommen? 1045 01:16:55,170 --> 01:17:00,210 Beachten Sie auch hier, dass diese enthalten den Satz noglob und entschärft noglob, 1046 01:17:00,210 --> 01:17:02,630 Das sind also jetzt in der Definition überflüssig. 1047 01:17:02,630 --> 01:17:05,380 Das war nicht immer wahr, aber jetzt sind sie in diesem Befehl enthalten. 1048 01:17:05,380 --> 01:17:08,890 Aber mal sehen, was passiert, wenn ich das tue, 1049 01:17:08,890 --> 01:17:12,570 und gehen Sie zum Anfang der Zeile mit Control A und das tue ich. 1050 01:17:14,380 --> 01:17:18,040 Okay, gesetzt: Befehl nicht gefunden. Das ist irgendwie merkwürdig, ist es nicht? 1051 01:17:18,040 --> 01:17:20,570 Set ist ein bekannter Befehl. Es ist ein Teil der Schale. 1052 01:17:20,570 --> 01:17:24,040 gesetzt: Befehl nicht gefunden? Warum ist das so? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Nun, lassen Sie uns darüber nachdenken. 1054 01:17:26,790 --> 01:17:31,100 Es läuft ein Backquote-Befehl Substitution, 1055 01:17:31,100 --> 01:17:37,430 und tritt zu einem bestimmten Teil der Sequenz des Parsens des Befehls. 1056 01:17:37,430 --> 01:17:40,360 Set ist eine integrierte Befehls. 1057 01:17:40,360 --> 01:17:43,900 Also von der Zeit es tut diesen Befehl Substitution, 1058 01:17:43,900 --> 01:17:48,280 es ist schon über den Punkt der Identifizierung integrierten Befehle bekommen. 1059 01:17:48,280 --> 01:17:51,900 So behandelt eingestellt, als ob es ein Befehl auf dem Weg waren. 1060 01:17:51,900 --> 01:17:55,440 Unnötig zu sagen, ist es nicht zu finden und Sie eine Fehlermeldung. 1061 01:17:55,440 --> 01:17:59,300 Well. Es ist ein Beispiel für das Parsen Folge. 1062 01:17:59,300 --> 01:18:01,460 Und was tun wir dagegen tun? 1063 01:18:01,460 --> 01:18:04,800 Beachten Sie, diese sehr interessante Befehl hier, eval. 1064 01:18:04,800 --> 01:18:06,530 Ich frage mich, was das bedeutet. 1065 01:18:06,530 --> 01:18:08,760 Wenn Sie in die Bedienungsanleitung schauen - und lassen Sie uns nur das tun, 1066 01:18:08,760 --> 01:18:12,000 um zu zeigen, wie verwirrend diese Handbücher sind - 1067 01:18:12,000 --> 01:18:19,400 Mann tcsh verwirrt manuell, Dinge hier zu finden ist nicht einfach. 1068 01:18:19,400 --> 01:18:31,850 Hier gehen wir, eval arg, so können wir ein oder mehrere Argumente haben 1069 01:18:31,850 --> 01:18:34,090 und es gibt eine Liste der Dinge gibt. 1070 01:18:34,090 --> 01:18:37,730 Behandelt die Argumente als Eingaben in die Schale 1071 01:18:37,730 --> 01:18:43,600 und führt die resultierenden Befehle im Zusammenhang mit der aktuellen Shell. 1072 01:18:43,600 --> 01:18:46,900 Dies wird normalerweise verwendet, um Befehle als Ergebnis des Befehls erzeugt auszuführen 1073 01:18:46,900 --> 01:18:51,310 oder Variablensubstitution, weil Parsen erfolgt, bevor dieser Substitutionen. 1074 01:18:51,310 --> 01:18:52,580 Sehr gut. 1075 01:18:52,580 --> 01:18:54,740 Und hier sind sie auch auf den Befehl tset beziehen für eine Probe Nutzung 1076 01:18:54,740 --> 01:18:57,700 wie die, die ich dir gezeigt habe nur. 1077 01:18:57,700 --> 01:19:00,440 Jetzt muss ich das Fenster wieder zu einem brauchbaren Platz zu bekommen. 1078 01:19:03,150 --> 01:19:07,800 Lassen Sie uns hier und wir werden sehen, dass eval kurz vor gewöhnt. 1079 01:19:07,800 --> 01:19:14,010 Also mal sehen, was passiert, wenn wir - hier gehen wir mit den Pfeilen auf diesen Befehl 1080 01:19:14,010 --> 01:19:20,940 und die Kontrolle von A bis Anfang eval. 1081 01:19:20,940 --> 01:19:22,850 Okay, so funktioniert es. 1082 01:19:22,850 --> 01:19:26,440 Wenn Sie eval tun, dauert es, was nach ihm kommt und macht es einen Befehl aus. 1083 01:19:26,440 --> 01:19:29,460 Dies ermöglicht Ihnen, im wesentlichen analysieren es zweimal. 1084 01:19:29,460 --> 01:19:33,710 Der Abschnitt verläuft hier diesen Befehl innerhalb der einfachen Anführungszeichen, 1085 01:19:33,710 --> 01:19:36,210 wird die Ausgabe. 1086 01:19:36,210 --> 01:19:42,850 Ausgabe soll wie diese als die Befehle hier ausgeführt werden 1087 01:19:42,850 --> 01:19:45,890 bei dieser und dieser. 1088 01:19:45,890 --> 01:19:50,100 So dass diese Befehle Hier, in dieser Reihenfolge, 1089 01:19:50,100 --> 01:19:58,950 aber diese sind integrierte Befehle und es nicht bekommen kann sie sofort. 1090 01:19:58,950 --> 01:20:06,440 Also gehen wir zu eval, nimmt eval, dass bis beginnt das Ganze wieder von vorn, und es funktioniert. 1091 01:20:06,440 --> 01:20:18,460 Ein Beispiel beide backquoting, eval, Parsing, Folgen des Parsing, 1092 01:20:18,460 --> 01:20:21,910 und ein Befehl, die wahrscheinlich von sehr geringem Nutzen für Sie ist heute. 1093 01:20:21,910 --> 01:20:25,540 Okay. Alle Rechte, umask. 1094 01:20:25,540 --> 01:20:32,160 Lassen Sie uns an diesem Befehl hier, umask 022. Ich frage mich, was das bedeutet. 1095 01:20:32,160 --> 01:20:38,420 Lassen Sie geben einfach umask mit nichts dahinter. 22. Okay. 1096 01:20:38,420 --> 01:20:44,350 022 und es wieder tun. 1097 01:20:44,350 --> 01:20:48,580 Wie Sie vielleicht schon erraten haben, umask ohne Argumente können Sie den aktuellen Maske; 1098 01:20:48,580 --> 01:20:51,760 umask mit Argumenten macht es so, aber das war die, die ich schon hatte. 1099 01:20:51,760 --> 01:20:53,800 Was bedeutet 022 das? 1100 01:21:01,650 --> 01:21:07,080 Das sind hier die Schutzmaßnahmen für eine Datei. 1101 01:21:07,080 --> 01:21:11,440 Sie bestimmen, wem es erlaubt ist zu lesen oder zu schreiben oder die Datei aus. 1102 01:21:11,440 --> 01:21:16,560 Protections werden auch Berechtigungen genannt. 1103 01:21:16,560 --> 01:21:21,390 Das r steht für Lesen, w für schreiben, 1104 01:21:21,390 --> 01:21:25,500 und x, die nicht vorhanden ist, es steht für auszuführen. 1105 01:21:25,500 --> 01:21:27,260 Es gibt 3 Kategorien gibt. 1106 01:21:27,260 --> 01:21:33,540 Die 3 letzten Elemente sind in der Kategorie der Benutzer. Diejenigen, gelten für mich, den Benutzer. 1107 01:21:33,540 --> 01:21:36,870 Diese 3 hier gelten für die Gruppe. 1108 01:21:36,870 --> 01:21:41,590 Die Datei gehört zu Gruppe 1 können Benutzer mehreren Gruppen angehören, 1109 01:21:41,590 --> 01:21:47,150 aber wenn der Benutzer in der Gruppe, zu dem diese Datei gehört, ist, 1110 01:21:47,150 --> 01:21:51,090 dann dieser Schutz wird ihm dann, wenn er nicht der Benutzer. 1111 01:21:51,090 --> 01:21:54,230 Und dieser ist jeder andere auch. 1112 01:21:55,540 --> 01:21:57,690 Diese Kategorien schließen sich gegenseitig. 1113 01:21:57,690 --> 01:21:59,750 Die Anwenderschutz gelten für ihn, 1114 01:21:59,750 --> 01:22:03,780 die Gruppe Schutz für die Mitglieder der Gruppe, die von dem Benutzer, 1115 01:22:03,780 --> 01:22:08,110 und die anderen Schutzmaßnahmen nur auf andere als die Benutzer-und Gruppenmitglieder Menschen gelten. 1116 01:22:08,110 --> 01:22:12,320 Wenn es ein r oder aw oder x, bedeutet es, dass der Schutz gewährt wird. 1117 01:22:12,320 --> 01:22:13,950 Wenn es einen Bindestrich, bedeutet das es nicht ist. 1118 01:22:13,950 --> 01:22:16,690 Es gibt tatsächlich andere Dinge, die hier neben diesen gesetzt werden kann, 1119 01:22:16,690 --> 01:22:18,350 was ich jetzt nicht in zu erhalten. 1120 01:22:18,350 --> 01:22:24,450 Die umask definiert einen Standard für Dateien, die Sie erstellen. 1121 01:22:24,450 --> 01:22:28,580 Und als eine Maske, im Grunde sagt, dass es die Bits, die Sie nicht gewählt werden. 1122 01:22:28,580 --> 01:22:30,450 Wie hat sich diese Bits? 1123 01:22:30,450 --> 01:22:33,240 Wenn Sie wissen, jeder von ihnen denken, als Oktalzahl, 1124 01:22:33,240 --> 01:22:42,120 das ist der 1s bit, das ist die 2s, das ist die 4s. 1125 01:22:42,120 --> 01:22:45,840 So 0 bis 7 1126 01:22:45,840 --> 01:22:51,770 wird beschrieben, welche Kombination von r ist, w ist und x die Sie für diese drei 1127 01:22:51,770 --> 01:22:53,710 und eine ähnliche Zahl für diese und dann für diese. 1128 01:22:53,710 --> 01:23:12,030 So bedeutet 0 022 für andere, für die Gruppe 2, 2 für den Benutzer. 1129 01:23:12,030 --> 01:23:15,870 Aber dies ist eine Maske. Die Maske ist, was Sie nicht haben. 1130 01:23:19,380 --> 01:23:20,610 Es tut mir leid. Ich habe Ihnen die Dinge in der falschen Reihenfolge. 1131 01:23:20,610 --> 01:23:25,620 Es ist das erste 3. Diese 3 sind die Benutzer, diese 3 sind die Gruppe, diese 3 sind die andere. 1132 01:23:25,620 --> 01:23:27,970 Leider habe ich Ihnen diese in der falschen Reihenfolge. 1133 01:23:27,970 --> 01:23:31,910 Die 0, die die erste von denen ist, nicht den Wert anzuzeigen, 1134 01:23:31,910 --> 01:23:35,430 aber wenn eine Zahl nicht da ist, ist es eine 0 ist. 1135 01:23:35,430 --> 01:23:38,370 Das bedeutet, dass alle drei von ihnen erlaubt wäre. 1136 01:23:38,370 --> 01:23:41,550 Beachten Sie, dass in diesem bestimmten die x ist nicht erlaubt. 1137 01:23:41,550 --> 01:23:44,090 Der Grund dafür ist, daß die Schale in der Lage ist, die Bestimmung 1138 01:23:44,090 --> 01:23:46,260 ob eine Datei ausgeführt werden soll oder nicht. 1139 01:23:46,260 --> 01:23:49,800 Da dies nicht eine ausführbare Datei, hat es nicht die x eingestellt. 1140 01:23:49,800 --> 01:23:54,000 Die 2 bedeutet, dass die Erlaubnis, die zweite Kategorie hier zu schreiben, 1141 01:23:54,000 --> 01:23:56,500 die eine in der Mitte, wird verweigert. 1142 01:23:56,500 --> 01:23:58,500 Also noch einmal, das sind die Dinge, die es verweigert. 1143 01:23:58,500 --> 01:24:02,080 Nun, das ist x erlaubt, aber es ist nicht hier, denn es ist nicht ausführbar 1144 01:24:02,080 --> 01:24:04,260 und in ähnlicher Weise für die anderen. 1145 01:24:04,260 --> 01:24:08,880 Also das ist eine gemeinsame umask. 1146 01:24:08,880 --> 01:24:14,630 Ein weiterer häufiger ein 700 - geben Sie sich alles, und niemand sonst irgendetwas. 1147 01:24:14,630 --> 01:24:17,040 Und es gibt auch andere Möglichkeiten. 1148 01:24:21,340 --> 01:24:27,110 Ich werde darauf zurückgehen. Mit der Geschichte kann ich wieder für die lwh, dort zu suchen. 1149 01:24:27,110 --> 01:24:30,210 Okay. So, hier, das sind die Schalen. 1150 01:24:30,210 --> 01:24:36,020 Bash, der Besitzer, der Systemkonto ist, kann alles. 1151 01:24:36,020 --> 01:24:41,210 Gruppe und alle anderen tun können, lesen oder ausführen, aber nicht schreiben. 1152 01:24:41,210 --> 01:24:44,570 Das man nicht einmal erlauben dem Besitzer, es zu schreiben. 1153 01:24:44,570 --> 01:24:46,460 Wenn der Besitzer wollte, es zu schreiben, das Systemkonto, 1154 01:24:46,460 --> 01:24:48,020 er würde den Schutz erstes ändern. 1155 01:24:48,020 --> 01:24:53,940 Aber auch hier setzt die umask die Standardeinstellung durch Maskierung, 1156 01:24:53,940 --> 01:24:57,160 durch die Angabe der Bits, die nicht eingestellt werden wird. 1157 01:24:57,160 --> 01:25:04,380 Dies ist typischerweise in einem Ihrer Initialisierungsdateien, die die. Cshrc für die C-Shell ist 1158 01:25:04,380 --> 01:25:07,500 oder die. Profil für die Bourne-artige Shells. 1159 01:25:07,500 --> 01:25:12,520 Es kann auch an anderer Stelle, wenn es andere Initialisierung Dateien auf dem System. 1160 01:25:12,520 --> 01:25:14,610 Wie auch immer, das ist umask. 1161 01:25:14,610 --> 01:25:18,180 Es ist etwas, was irgendwie merkwürdig hier, 1162 01:25:18,180 --> 01:25:22,800 und das ist, warum gibt es einen einzigen Befehl für diese? 1163 01:25:22,800 --> 01:25:28,690 Wenn ich schreibe, würde ich es eine Variable, umask = gewissen Wert. 1164 01:25:28,690 --> 01:25:31,100 Warum gibt es eine ganze Befehl nur für diesen Zweck? 1165 01:25:31,100 --> 01:25:34,560 Der Grund ist, das geht nur zurück zu den Ursprüngen von Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix war nur einige Programmierprojekt in den Bell Labs in den frühen 1970er Jahren. 1167 01:25:41,050 --> 01:25:42,610 Die Leute kamen zusammen, um Programm. 1168 01:25:42,610 --> 01:25:45,290 Sie wollten nie, dass es eine weltweite Betriebssystem zu werden. 1169 01:25:45,290 --> 01:25:47,250 Unterschiedliche Menschen verschiedene Teile schrieb, ohne zu denken sehr viel 1170 01:25:47,250 --> 01:25:49,790 , wie sie im Begriff waren, verwendet werden - eher lückenhaft. 1171 01:25:49,790 --> 01:25:53,290 Und es kamen zusammen, so, und es ist immer noch so in mancher Hinsicht. 1172 01:25:53,290 --> 01:25:57,930 Damit spiegelt die Geschichte, und es gibt immer noch diese Widersprüche und ungeraden Elemente davon. 1173 01:25:57,930 --> 01:26:00,750 Okay. Weiter hier. 1174 01:26:08,170 --> 01:26:11,000 Wie ich bereits schrieb, die C-Shell ist nicht wirklich sehr viel für die Programmierung, 1175 01:26:11,000 --> 01:26:12,420 Obwohl es sein kann. 1176 01:26:12,420 --> 01:26:15,080 Er führt langsamer, wieder die Trade-off zwischen interaktive Nutzung, 1177 01:26:15,080 --> 01:26:17,820 die weitere Verarbeitung beteiligt als Geschwindigkeit hat, 1178 01:26:17,820 --> 01:26:20,710 die ohne die Verarbeitung zu tun. 1179 01:26:20,710 --> 01:26:28,320 Die zusätzlichen Funktionen für die Bourne-Shell von der Korn-und Bourne-Shells wieder aufgenommen 1180 01:26:28,320 --> 01:26:32,120 scheinen nicht, um sie zu verlangsamen, und ich weiß nicht, warum das so ist. 1181 01:26:32,120 --> 01:26:36,310 Es könnte nur besser sein, Programmierung, aber ich bin nicht in der Lage zu wissen. 1182 01:26:36,310 --> 01:26:40,420 Beschleunigen hier ist eigentlich nicht so eine große Sache, auch wenn es erwähnt wird. 1183 01:26:40,420 --> 01:26:43,690 Der Grund ist, dass Shell-Skripte tatsächlich ziemlich schnell. 1184 01:26:43,690 --> 01:26:46,450 Wenn es eine Menge von Befehlen, wie in einer Rechenprogramm, 1185 01:26:46,450 --> 01:26:49,110 Sie würde wahrscheinlich nicht tun es in einem Shell-Skript. 1186 01:26:49,110 --> 01:26:51,450 Die Operationen sind recht einfach und unkompliziert. 1187 01:26:51,450 --> 01:26:53,960 Die, die ich erlebt habe, die zu langsam sind 1188 01:26:53,960 --> 01:26:57,110 beinhalten wiederholte Anwendungen von langsamen Befehlen. 1189 01:26:57,110 --> 01:27:00,480 Früher habe ich erwähnt das Stream-Editor sed. Dieser Befehl ist langsam. 1190 01:27:00,480 --> 01:27:03,760 Wenn Sie sed viele Male ausführen, werden Sie eine langsame Skript zu bekommen, aber es ist nicht die Schale, die langsam ist. 1191 01:27:03,760 --> 01:27:07,920 Laufen in der Bourne-Shell wird nicht viel schneller als in der C-Shell läuft es sein, 1192 01:27:07,920 --> 01:27:10,070 obwohl es vielleicht einige Vorteile gibt. 1193 01:27:10,070 --> 01:27:12,760 Die zusätzlichen Programmiermöglichkeiten, auf der anderen Seite, 1194 01:27:12,760 --> 01:27:17,920 sind wichtige Gründe, warum Sie die Bourne-artige Shells verwenden würden. 1195 01:27:17,920 --> 01:27:21,390 C-Shell hat ungerade Funktionen, die es - 1196 01:27:21,390 --> 01:27:25,250 die Tatsache, dass Sie nicht wissen, ob eine Variable eine Shell-Variable oder eine Umgebungsvariable. 1197 01:27:25,250 --> 01:27:27,440 Es kann sehr verwirrend sein. 1198 01:27:27,440 --> 01:27:32,170 Es ist nicht so einfach zu schreiben 1199 01:27:32,170 --> 01:27:35,930 nur auf dem Programmiererfahrung in anderen Sprachen basiert. 1200 01:27:35,930 --> 01:27:41,350 Ich glaube, Sie die Bourne-artige Shells mehr im Einklang mit Ihrer Erfahrung finden. 1201 01:27:43,730 --> 01:27:49,270 Einige Skripte, obwohl, können Tausende von Zeilen lang sein. 1202 01:27:49,270 --> 01:27:52,450 Diejenigen, die ich gesehen habe, sind für das Patchen Betriebssystemen. 1203 01:27:52,450 --> 01:27:55,450 Diese können sehr langsam ausführen, aber Sie laufen nicht die sehr oft. 1204 01:27:55,450 --> 01:27:57,180 Es ist nur, wenn Sie Patchen tust, 1205 01:27:57,180 --> 01:27:59,450 und es ist nur der Systemmanager, der diese Dinge tut, 1206 01:27:59,450 --> 01:28:01,840 so ist es nicht wirklich viel von einem Problem. 1207 01:28:01,840 --> 01:28:06,980 Diejenigen, die Hunderte von Zeilen lang sind eigentlich ziemlich schnell auszuführen. 1208 01:28:06,980 --> 01:28:10,540 In denen dieses hier, was sind die Verbesserungen? 1209 01:28:10,540 --> 01:28:13,170 Arrays, Berechnungen, - ich habe schon ein paar von ihnen genannten 1210 01:28:13,170 --> 01:28:20,540 die $ ()-Ausdruck für Berechnungen in der Bash-Shell, 1211 01:28:20,540 --> 01:28:23,050 die andere Art von Kommando-Substitution. 1212 01:28:23,050 --> 01:28:25,360 Es gibt verschiedene Arten von Testbefehlen 1213 01:28:25,360 --> 01:28:29,350 , mit denen Sie bedingte Tests auf der Existenz einer Datei oder andere Dinge tun können. 1214 01:28:29,350 --> 01:28:34,790 Zuletzt hier, dieser Befehl hier. 1215 01:28:34,790 --> 01:28:38,480 Was hat das zu tun, und warum sollte jemand es nutzen? 1216 01:28:51,170 --> 01:28:52,990 printenv Variablen. 1217 01:28:52,990 --> 01:28:56,130 Wir wissen, was printenv tut. Es sagt uns, den Wert einer Variablen. 1218 01:28:56,130 --> 01:29:00,850 Und printenv Variablen wird uns nicht sagen, sehr gut, da gibt es keine solche Variable. 1219 01:29:03,550 --> 01:29:05,120 Blank. 1220 01:29:05,120 --> 01:29:08,440 Aber versuchen wir es etwas Sinnvolles. 1221 01:29:13,420 --> 01:29:16,800 Das ist auch nicht da. Okay. Ich glaube, ich nie definiert, dass. 1222 01:29:16,800 --> 01:29:18,020 Lassen Sie uns nur meine Umwelt. 1223 01:29:18,020 --> 01:29:20,900 Dies ist ein weiterer Befehl, mit dem Sie Ihre Umgebung zu inspizieren. 1224 01:29:20,900 --> 01:29:24,470 Es ist gute alte HERAUSGEBER, die, die wir zuvor gesehen. 1225 01:29:42,360 --> 01:29:44,120 Was bedeutet das? 1226 01:29:44,120 --> 01:29:48,050 Hier haben wir eine Backquote Ausdruck. 1227 01:29:48,050 --> 01:29:50,370 Denken Sie daran, dies ist der C-Shell. 1228 01:29:50,370 --> 01:29:54,850 So printenv HERAUSGEBER wird uns einen Wert von Editor. Es ist vi. 1229 01:29:54,850 --> 01:29:59,790 Und dann wird es den Wert der Variablen a, der Befehl set gesetzt. 1230 01:29:59,790 --> 01:30:02,860 So jetzt, wenn ich echo $ ein, bekomme ich vi. 1231 01:30:02,860 --> 01:30:05,850 Das scheint nicht besonders nützlich. 1232 01:30:05,850 --> 01:30:08,080 Allerdings ist es tatsächlich einen Zweck haben. 1233 01:30:08,080 --> 01:30:12,260 Da wir nicht wissen, ob eine Variable eine Shell-Variable oder eine Umgebungsvariable 1234 01:30:12,260 --> 01:30:16,280 indem Sie die Dollar-Zeichen Auswertung Syntax können wir printenv verwenden 1235 01:30:16,280 --> 01:30:19,460 um sicherzustellen, dass es ist eine Umgebungsvariable. 1236 01:30:19,460 --> 01:30:22,550 Also, wenn es eine Shell-Variable Editor, würde es nicht bekommen haben. 1237 01:30:22,550 --> 01:30:25,640 Dies funktioniert nur mit der Umgebungsvariablen. 1238 01:30:25,640 --> 01:30:28,370 Wenn es eine Shell-Variable und ich wollte seinen Wert, 1239 01:30:28,370 --> 01:30:29,980 Ich hätte einen anderen Weg, es zu tun. 1240 01:30:29,980 --> 01:30:33,530 Eine Möglichkeit, dies zu tun würde, indem Sie Satz und Rohrleitungen sein. 1241 01:30:33,530 --> 01:30:36,130 Dies ist einer der Metazeichen Sonderzeichen. 1242 01:30:36,130 --> 01:30:38,370 Es sendet die Ausgabe von Set zu etwas anderem. 1243 01:30:38,370 --> 01:30:40,650 Mal sehen, was wir dort finden. 1244 01:30:40,650 --> 01:30:49,340 Nichts. Okay. Mal sehen, was da drin ist alles zusammen. 1245 01:30:49,340 --> 01:30:53,580 Es war echo_style, die, die ich bereits erwähnt habe. Okay, lasst uns das tun. 1246 01:31:02,460 --> 01:31:06,230 Denken Sie daran, ich schon erwähnt, echo_style 1247 01:31:06,230 --> 01:31:08,410 bestimmt die Art und Weise der Echo-Befehl ausgeführt wird. 1248 01:31:08,410 --> 01:31:10,940 BSD steht für Berkeley Standard Auslieferungs. 1249 01:31:10,940 --> 01:31:13,200 Dies ist der Berkeley-Unix aus den 1970er Jahren. 1250 01:31:13,200 --> 01:31:16,630 Das ist eine der Möglichkeiten, die können laufen Echo. 1251 01:31:16,630 --> 01:31:22,310 Einstellen echo_style zu diesem Wert in der TC-Shell verursachen Echo auf diese Weise zu verhalten. 1252 01:31:22,310 --> 01:31:27,670 So machte das tut, sondern nur eingestellt werden, bekommt Shell-Variablen. 1253 01:31:27,670 --> 01:31:35,430 Es wäre nicht zu finden HERAUSGEBER, die nicht eine Shell-Variable. 1254 01:31:36,870 --> 01:31:38,050 Nichts. 1255 01:31:38,050 --> 01:31:39,660 Also das ist eine Möglichkeit, sie zu unterscheiden. 1256 01:31:39,660 --> 01:31:42,000 Aber die Tatsache, dass Sie haben, um durch einige seltsame Befehl, wie das gehen 1257 01:31:42,000 --> 01:31:45,500 zwischen Shell-Variablen oder Umgebungsvariablen unterscheiden 1258 01:31:45,500 --> 01:31:49,970 zeigt die Art unpraktisch Natur der C-Shell für einige Zwecke. 1259 01:31:52,290 --> 01:31:57,960 Und jetzt, letzte und vielleicht Dest ist dies die man-Seiten. 1260 01:31:57,960 --> 01:32:03,190 Diejenigen, die Sie vielleicht wissen, ist der Mann, der Befehl für Kurzanleitung. 1261 01:32:03,190 --> 01:32:08,610 Die man-Seiten für die Schalen sind schwer zu lesen. Sie sind sehr lang. 1262 01:32:08,610 --> 01:32:14,060 Sie sind in einer Weise, die es schwierig machen kann zu finden, was Sie suchen organisiert. 1263 01:32:14,060 --> 01:32:15,980 Also, wenn Sie nach etwas mit einem Ziel suchen, 1264 01:32:15,980 --> 01:32:20,050 Sie können nicht wissen, ob dieser Zweck ist ein Shell-Variable oder etwas anderes, 1265 01:32:20,050 --> 01:32:21,630 so können Sie nicht wissen, wo es zu suchen. 1266 01:32:21,630 --> 01:32:25,030 Sie können für verschiedene Strings suchen, aber die Saiten werden oft wiederholt. 1267 01:32:25,030 --> 01:32:27,640 So ist es in der Regel schwer zu lesen. 1268 01:32:27,640 --> 01:32:33,810 Wir sind gerade auf der TC-Shell-man-Seite sah ein wenig vor, um den Befehl eval finden. 1269 01:32:33,810 --> 01:32:36,610 Manche Dinge gehen schneller. 1270 01:32:36,610 --> 01:32:38,860 Ein Ansatz ist, nach einer Zeichenfolge zu suchen. 1271 01:32:38,860 --> 01:32:40,360 Sie können die Pager. 1272 01:32:40,360 --> 01:32:49,080 Pager hat den Schrägstrich, für einen Befehl oder eine Zeichenkette in einer Pager-Betrieb zu suchen. 1273 01:32:49,080 --> 01:32:52,830 Man wird standardmäßig Pager verwenden, entweder mehr oder weniger. 1274 01:32:52,830 --> 01:32:56,560 Ich weiß nicht, ob man mit denen nicht vertraut sind, aber die, können die Dateien nach und nach zeigen. 1275 01:32:56,560 --> 01:33:00,550 Ich habe mit LESS, um diese insbesondere Dateien, die wir hier haben, anzuzeigen. 1276 01:33:00,550 --> 01:33:03,300 Sie können drinnen suchen. 1277 01:33:03,300 --> 01:33:04,880 Sie können versuchen, mit verschiedenen Suchbegriffe. 1278 01:33:04,880 --> 01:33:08,420 Auch der Mensch Seiten in verschiedenen Betriebssysteme können nicht die gleichen sein. 1279 01:33:08,420 --> 01:33:11,130 Sie können separate Seiten für csh und tcsh sein. 1280 01:33:11,130 --> 01:33:14,500 Sie sind nicht auf dem Mac, aber sie könnte, wenn die getrennte Befehle. 1281 01:33:14,500 --> 01:33:19,000 Wenn sh nicht wirklich Bash nennen, hätte es wahrscheinlich eine separate man-Seite sein. 1282 01:33:19,000 --> 01:33:25,820 Einige Systeme haben getrennte man-Seiten nur für die C-Shell integrierte Befehle. 1283 01:33:25,820 --> 01:33:30,250 Manchmal, wenn Sie eine Beschreibung eines integrierten Befehl lesen wollen 1284 01:33:30,250 --> 01:33:35,350 das ist auch auf dem Weg, wie Echo, um die man-Seite zu diesem Befehl auf Echo zu lesen müssen Sie 1285 01:33:35,350 --> 01:33:37,610 zu bestimmen, wie sie als eingebauten Befehl zu arbeiten 1286 01:33:37,610 --> 01:33:39,760 auch wenn Sie nicht den Aufruf der eingebauten Befehl. 1287 01:33:41,630 --> 01:33:46,090 Das ist ein Nachteil des Betriebssystems in der Regel nicht nur für die Schalen, 1288 01:33:46,090 --> 01:33:50,710 obwohl für die Schalen insbesondere die man-Seiten sind ziemlich lang, 1289 01:33:50,710 --> 01:33:56,180 teils, weil sie nützliche Features, um sie hinzugefügt haben, ist ein positiver sein können. 1290 01:33:56,180 --> 01:34:00,290 Okay. Gibt es irgendwelche Fragen? Alle Themen, die Sie einbringen möchten? 1291 01:34:00,290 --> 01:34:03,390 Alles, was hier relevant? 1292 01:34:04,540 --> 01:34:07,100 Nun, es war sehr schön mit dir zu reden alle. 1293 01:34:07,100 --> 01:34:09,690 Ich hoffe, dass Sie aus diesem Seminar hat etwas 1294 01:34:09,690 --> 01:34:13,080 das wird in der Zukunft alles nützlich sein. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]