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