0:00:02.330,0:00:04.518 Спасибо всем кто пришёл. 0:00:04.518,0:00:08.569 Это "пропущенный семестр" по информатике 0:00:08.569,0:00:09.390 по крайней мере, 0:00:09.390,0:00:10.720 так мы назвали этот курс. 0:00:10.720,0:00:12.079 Если вы здесь не для этого - 0:00:12.079,0:00:13.188 вы ошиблись аудиторией. 0:00:13.188,0:00:14.819 Мы будем здесь примерно час - 0:00:14.819,0:00:17.646 просто чтобы вы ориентировались. 0:00:17.646,0:00:21.110 Сперва я хочу рассказать немного о том, 0:00:21.110,0:00:23.359 почему мы проводим этот курс. 0:00:23.359,0:00:25.980 Этот курс вытекает из наблюдений Аниша, 0:00:25.980,0:00:27.060 Хосе и меня, сделанных 0:00:27.060,0:00:29.410 во время ассистирования 0:00:29.410,0:00:30.545 курсов в MIT, которые 0:00:30.545,0:00:31.760 заключаются в следующем: 0:00:31.760,0:00:33.206 в основном все мы, специалисты 0:00:33.206,0:00:34.526 по информатике, знаем, что 0:00:34.526,0:00:36.110 компьютеры прекрасно справляются 0:00:36.110,0:00:37.880 с повторяющимися задачами 0:00:37.880,0:00:39.240 и автоматизацией, 0:00:39.240,0:00:40.890 но мы часто не осознаём 0:00:40.890,0:00:43.400 как много инструментов могут улучшить 0:00:43.400,0:00:45.040 наши процессы разработки. 0:00:45.040,0:00:46.850 Мы можем гораздо эффективнее 0:00:46.850,0:00:48.380 использовать наши компьютеры, 0:00:48.380,0:00:50.450 потому что мы можем использовать компьютер 0:00:50.450,0:00:52.030 как инструмент для нас самих, 0:00:52.030,0:00:54.146 а не только для создания веб сайтов 0:00:54.146,0:00:55.826 или программного обеспечения. 0:00:55.826,0:00:58.863 И этот курс - это попытка это исправить, 0:00:58.863,0:01:01.090 это попытка показать вам 0:01:01.090,0:01:02.606 некоторые из этих инструментов, 0:01:02.606,0:01:04.852 которые вы можете эффективно использовать 0:01:04.852,0:01:08.032 в повседневности, исследованиях и учёбе. 0:01:08.032,0:01:12.410 И это будет курс где мы хотим научить вас, 0:01:12.410,0:01:15.420 как лучше использовать инструменты, 0:01:15.420,0:01:17.490 которые вы уже знаете, а также 0:01:17.490,0:01:19.980 надеемся показать вам инструменты, 0:01:19.980,0:01:21.820 о которых вы раньше не знали, 0:01:21.820,0:01:23.840 и как комбинировать эти инструменты 0:01:23.840,0:01:25.900 для создания более мощных вещей, 0:01:25.900,0:01:29.654 чем вы можете сделать сегодня. 0:01:29.654,0:01:34.340 Курс будет состоять из 11 часовых лекций 0:01:34.340,0:01:37.980 каждая из которых охватывает одну тему. 0:01:37.980,0:01:39.796 Вы можете посмотреть на веб сайте, 0:01:39.796,0:01:41.490 который также написан вон там, 0:01:41.490,0:01:44.739 темы лекций и даты каждой из них. 0:01:44.739,0:01:46.985 Они будут в основном независимыми, 0:01:46.985,0:01:48.780 и вы можете появляться только на тех, 0:01:48.780,0:01:49.910 которые вам интересны. 0:01:49.910,0:01:52.470 Но мы будем считать что вы в курсе всего, 0:01:52.470,0:01:54.900 и когда мы дойдём до более поздних лекций, 0:01:54.900,0:01:58.980 я не буду например объяснять bash заново. 0:01:58.980,0:02:06.800 Мы выложим конспекты и записи лекций. 0:02:06.800,0:02:10.146 Когда точно - мы ещё не установили, 0:02:10.146,0:02:11.970 но это будет после лекций. Очевидно, 0:02:11.970,0:02:14.240 что видео должно быть выложено после. 0:02:14.240,0:02:16.875 Курс буду вести я - Джон, 0:02:16.875,0:02:19.080 и Аниш - сидящий вон там, и Хосе, 0:02:19.080,0:02:20.710 которого сейчас здесь нет, 0:02:20.710,0:02:23.150 но он будет читать завтрашнюю лекцию. 0:02:23.150,0:02:25.330 И имейте ввиду, что мы пытаемся покрыть 0:02:25.330,0:02:27.880 много основ в течении курса из всего лишь 0:02:27.880,0:02:29.290 11 часовых лекций. 0:02:29.290,0:02:32.550 Поэтому мы будем идти относительно быстро, 0:02:32.550,0:02:34.610 но, пожалуйста, останавливайте нас 0:02:34.610,0:02:37.080 если чувствуете что не успеваете, 0:02:37.100,0:02:39.570 или надо уделить больше времени, 0:02:39.570,0:02:41.004 просто скажите нам об этом. 0:02:41.004,0:02:42.955 Пожалуйста, прерывайте нас вопросами, 0:02:42.955,0:02:45.340 также после каждой лекции нас можно найти 0:02:45.340,0:02:49.440 на 9 этаже в 32 корпусе в Stata Center, 0:02:49.440,0:02:50.440 корпус информатики. 0:02:50.440,0:02:53.931 Если будете на девятом этаже 0:02:53.931,0:02:56.890 в gates tower, можете прийти попробовать 0:02:56.890,0:02:57.990 некоторые упражнения, 0:02:57.990,0:02:59.740 которые мы даём на каждой лекции 0:02:59.740,0:03:01.940 или просто задать нам другие вопросы 0:03:01.940,0:03:04.040 о вещах которые мы обсуждали на лекции 0:03:04.040,0:03:05.440 или о других вещах касательно 0:03:05.440,0:03:06.993 использования вашего компьютера 0:03:06.993,0:03:08.430 более эффективно. 0:03:08.430,0:03:12.290 Из-за ограниченного времени 0:03:12.290,0:03:15.040 мы не сможем покрыть все инструменты 0:03:15.040,0:03:16.040 во всех деталях, 0:03:16.040,0:03:18.230 и поэтому мы попробуем осветить 0:03:18.230,0:03:19.890 интересные инструменты 0:03:19.890,0:03:21.910 и интересные способы их использования. 0:03:21.910,0:03:23.590 Мы не обязательно будем углубляться 0:03:23.590,0:03:25.200 в детали о том как всё работает, 0:03:25.200,0:03:26.653 или более сложные случаи. 0:03:26.653,0:03:28.363 Но если у вас есть вопросы об этом, 0:03:28.363,0:03:30.010 пожалуйста задавайте их нам. 0:03:30.010,0:03:31.852 Многие из этих инструментов 0:03:31.852,0:03:33.072 мы использовали годами, 0:03:33.072,0:03:34.810 и мы, может быть, можем указать 0:03:34.810,0:03:36.440 на дополнительные интересные вещи, 0:03:36.440,0:03:38.080 которые вы можете с ними делать. 0:03:38.080,0:03:40.939 Так что пользуйтесь тем, что мы здесь. 0:03:40.939,0:03:42.680 Этот курс будет... 0:03:42.680,0:03:44.370 Я не хочу сказать, что он будет 0:03:44.370,0:03:45.540 слишком быстрым, 0:03:45.540,0:03:47.974 но в течении этой лекции 0:03:47.974,0:03:49.716 мы покроем много основ, 0:03:49.716,0:03:51.650 которые мы будем считать, что вы знаете 0:03:51.650,0:03:53.160 в течение всего семестра. 0:03:53.160,0:03:54.770 Такие вещи как использовать shell 0:03:54.770,0:03:56.280 и терминал, я объясню что это 0:03:56.280,0:03:58.480 тем кто не знаком с этим. 0:03:58.480,0:04:00.190 И затем мы довольно быстро перейдём 0:04:00.190,0:04:01.890 к более продвинутым инструментам 0:04:01.890,0:04:03.100 и их использованию. 0:04:03.100,0:04:04.740 Вы уже можете видеть из конспектов 0:04:04.740,0:04:08.140 как выглядят темы которые мы покроем. 0:04:08.140,0:04:10.715 Итак, мы переходим к сегодняшней лекции, 0:04:10.715,0:04:12.676 в которой мы рассмотрим shell, 0:04:12.676,0:04:15.460 и shell будет одним из основных способов 0:04:15.460,0:04:17.520 взаимодействия с вашим компьютером, 0:04:17.520,0:04:18.630 как только вы захотите 0:04:18.630,0:04:20.212 делать что-то больше, 0:04:20.212,0:04:22.155 чем привычные визуальные интерфейсы 0:04:22.155,0:04:23.748 позволяют вам делать. 0:04:23.748,0:04:25.760 Визуальные интерфейсы в некотором роде 0:04:25.760,0:04:26.800 ограничены в том, 0:04:26.800,0:04:28.230 что они позволяют вам делать, 0:04:28.230,0:04:29.620 потому что вы можете делать 0:04:29.620,0:04:31.189 только то для чего есть кнопки, 0:04:31.189,0:04:32.659 слайдеры и поля ввода. 0:04:32.659,0:04:34.271 Часто все текстовые инструменты 0:04:34.271,0:04:36.031 сделаны так, чтобы быть одновременно 0:04:36.031,0:04:37.340 совместимыми друг с другом, 0:04:37.340,0:04:38.650 и чтобы в то же время иметь 0:04:38.650,0:04:40.380 кучу способов комбинировать их 0:04:40.380,0:04:42.450 или программировать и автоматизировать их. 0:04:42.450,0:04:43.572 И поэтому в этом курсе 0:04:43.572,0:04:44.735 мы будем фокусироваться 0:04:44.735,0:04:46.567 на этих инструментах командной строки 0:04:46.567,0:04:48.020 или на текстовых инструментах. 0:04:48.020,0:04:49.640 И shell - это место где вы будете 0:04:49.640,0:04:51.310 делать большую часть этой работы. 0:04:51.310,0:04:52.434 Поэтому для тех из вас, 0:04:52.434,0:04:53.739 кто не знаком с shell - 0:04:53.739,0:04:55.404 большинство платформ предоставляют 0:04:55.404,0:04:56.359 какой-нибудь shell. 0:04:56.359,0:04:58.724 На Windows это часто PowerShell, 0:04:58.724,0:05:01.309 но также другие shell доступны на Windows. 0:05:01.309,0:05:04.599 На Linux вы найдёте тонны терминалов - 0:05:04.599,0:05:06.244 это такие окна, 0:05:06.244,0:05:08.169 которые позволяют вам отображать shell, 0:05:08.169,0:05:10.500 вы также найдёте много других типов shell. 0:05:10.500,0:05:11.979 Наиболее рапространённый - 0:05:11.979,0:05:14.639 это bash - или "Born Again SHell". 0:05:14.639,0:05:16.810 из-за того что это настольно часто используемый shell - 0:05:16.810,0:05:19.640 его мы будем рассматривать в этих лекциях в первую очередь 0:05:19.640,0:05:23.380 если вы на Mac OS - у вас тоже есть bash возможно более старой версии 0:05:23.380,0:05:25.450 если вы откроете terminal app 0:05:25.450,0:05:31.062 вы можете следовать на любой из этих платформ, но учитывайте что в большинстве своём это будет 0:05:31.071,0:05:33.171 Linux centric, с точки зрения как мы это преподаём 0:05:33.171,0:05:37.310 даже если большинство их этих инструментов работают на всех платформах 0:05:37.310,0:05:42.050 если вы хотите установить терминал или shell и вы не знаете как это сделать - 0:05:42.050,0:05:44.479 мы будем счастливы вам это показать на кафедре, 0:05:44.479,0:05:52.040 или это обычно очень легко нагуглить - ваша платформа плюс как бы терминал и вы найдёте 0:05:53.980,0:06:00.360 теперь, когда вы открыли терминал вы увидите что-то что выглядит немного вот так 0:06:00.360,0:06:03.854 обычно одна только линия сверху 0:06:03.854,0:06:06.000 это как известно "командная строка" ("shell prompt") 0:06:06.000,0:06:09.624 вы можете видеть как выглядит моя командная строка - у неё есть моё имя пользователя, 0:06:09.624,0:06:13.160 имя моего компьютера, текущий путь в котором я нахожусь 0:06:13.160,0:06:15.529 и мы поговорим о путях немного позже 0:06:15.529,0:06:19.630 и тогда это реально просто мигает - они приглашают меня что-нибудь ввести 0:06:19.630,0:06:23.510 и это и есть командная строка - где вы говорите shell что вы хотите делать 0:06:23.510,0:06:27.760 вы можете настроить её как угодно, и когда вы откроете на своём компьютере, 0:06:27.760,0:06:30.249 она может выглядеть немного по другому 0:06:30.249,0:06:33.199 может выглядеть как-то так если вы настроили её немного 0:06:33.199,0:06:36.069 или может выглядеть как угодно 0:06:37.270,0:06:41.600 му не будем углубляться в настройки shell на этой лекции, мы сделаем это потом 0:06:41.600,0:06:47.060 мы поговорим о том как вы будете использовать shell с пользой 0:06:47.060,0:06:51.730 и это ваш основной текстовый интерфейс к вашему компьютеру - через этот shell 0:06:51.730,0:06:57.550 в командной строке вы вводите команды и команды могут быть относительно простыми 0:06:57.550,0:07:01.357 обычно что-нибудь как запускать программы с аргументами 0:07:01.357,0:07:04.920 как это выглядит? Хорошо, мы можем запустить одну программу "дата" - date 0:07:04.920,0:07:06.680 мы просто набираем date и жмём enter 0:07:06.680,0:07:09.960 и тогда увидите, что неудивительно, дату и время 0:07:09.960,0:07:12.190 вы можете также запустить программу с аргументами 0:07:12.190,0:07:16.300 это один путь изменить исполнение программы 0:07:16.300,0:07:19.060 Так, к примеру, есть программа "эхо" - echo 0:07:19.060,0:07:22.410 и она просто выводит заданные вами аргументы 0:07:22.410,0:07:27.090 и аргументы это просто разделены пробелами вещи, следующие после имени программы 0:07:27.090,0:07:30.980 так, мы можем сказать "привет", и она выведет "привет" 0:07:30.980,0:07:35.380 возможно, не так ужасно удивительно, но это самые основы аргументов 0:07:35.380,0:07:39.060 одну вещь вы заметили - аргументы разделены пробелами 0:07:39.060,0:07:42.510 и вы можете подумать, что если я хочу один аргумент из нескольких слов 0:07:42.510,0:07:44.228 вы можете взять их в кавычки 0:07:44.228,0:07:48.634 вы можете сделать так echo Hello пробел World 0:07:48.634,0:07:55.040 и теперь программа echo получает один аргумент, который содержит строку "Hello World" с пробелом 0:07:55.040,0:07:57.270 вы можете использовать одинарные кавычки 0:07:57.270,0:08:02.430 и к разнице между одинарными и двойными кавычками мы вернёмся и будем говорить о bash скриптах 0:08:02.430,0:08:06.120 вы можете избежать одиночный символ (избежать разбиения строки одиночным символом) 0:08:06.120,0:08:10.740 например Hello\ Word - это тоже будет работать 0:08:10.740,0:08:17.610 Все эти правила как вам избежать, и как разбирать, и брать в кавычки различные аргументы и переменные 0:08:17.610,0:08:19.220 - мы рассмотрим немного позже. 0:08:19.220,0:08:22.370 Надеюсь вы не столкнётесь со слишком многими странностями в этой связи, 0:08:22.370,0:08:25.940 просто имейте ввиду, хотя бы, что пробелы разделяют строку 0:08:25.940,0:08:29.470 так если вы делаете что либо, как - создать директорию "Мои фотографии" 0:08:29.470,0:08:32.570 вы не можете просто ввести: сделать директорию Мои фотографии 0:08:32.570,0:08:35.740 вы получите две директории - одну с названием "Мои" и другую с названием "фотографии" 0:08:35.740,0:08:38.860 и это возможно не то что вы хотите 0:08:38.860,0:08:45.359 Теперь, одно вы можете спросить - как shell знает что есть эти программы 0:08:45.359,0:08:51.250 когда я ввожу date, или когда я ввожу echo - как оно знает что эти программы должны делать 0:08:51.250,0:08:57.417 и ответ на это - то что в вашем компьютере встроены программы, которые идут с компьютером 0:08:57.417,0:09:04.599 также как ваш компьютер может идти с приложением терминал, или с Windows Explorer, 0:09:04.599,0:09:10.789 или с каким-то браузером, он так же идёт с группой приложений ориентированных на терминал 0:09:10.789,0:09:13.669 и они находятся в вашей файловой системе 0:09:13.669,0:09:18.319 и ваш shell знает как определить где программа находится 0:09:18.319,0:09:21.289 B принципе знает как искать программы 0:09:21.289,0:09:26.799 Делается это через так называемую неизменную системную переменную (invariant environment variable) 0:09:26.799,0:09:31.352 Системная переменная - это такая же переменная, которую вы возможно использовали в языках программирования 0:09:31.352,0:09:37.119 Выходит что shell и "заново рождённый" shell в особенности, есть в действительности язык программирования 0:09:37.119,0:09:42.110 Эта командная строка приведённая здесь - может не только запускать программы с аргументами, 0:09:42.110,0:09:46.480 вы можете так же делать такие вещи как while циклы, for циклы, условные выражения, 0:09:46.480,0:09:51.080 всё это. Вы можете определять функции, вы можете декларировать переменные, и всё это вы можете делать в shell 0:09:51.080,0:09:55.931 Мы рассмотрим многое из этого на следующие лекции о shell скриптах 0:09:55.931,0:09:59.870 Сейчас же, давайте просто рассмотрим эту конкретную системную переменную 0:09:59.870,0:10:02.849 Системные переменные определяются каждый раз вы запускаете свою shell 0:10:02.849,0:10:06.179 Вам не нужно определять их каждый раз вы запускаете свою shell 0:10:06.179,0:10:10.940 Это такая группа как где ваша домашняя директория, какое ваше имя пользователя, 0:10:10.940,0:10:15.779 и так же есть та критичная для этой конкретной цели, которая есть PATH variable 0:10:15.779,0:10:25.449 Так, если я эхо $PATH это покажет мне все пути ("paths") на моей машине где shell будет искать программы. 0:10:25.449,0:10:29.910 Вы заметите что это список, разделённый двоеточиями, 0:10:29.910,0:10:32.220 это может быть долго и тяжело читать, 0:10:32.220,0:10:36.750 но суть в том что - когда вы введёте имя программы, 0:10:36.750,0:10:40.909 поиск будет идти через список путей на вашем компьютере 0:10:40.909,0:10:43.530 и будет искать в каждой директории 0:10:43.530,0:10:48.420 программу или файл чьё имя совпадает с командой которую вы пытаетесь исполнить. 0:10:48.420,0:10:50.719 Так, в моём случае, когда я пытаюсь запустить data или echo, 0:10:50.719,0:10:52.809 оно пройдёт через них один за одним, 0:10:52.809,0:10:56.239 до тех пор пока найдёт тот который содержит программу называемую call или echo 0:10:56.239,0:10:57.667 и запустит её. 0:10:57.667,0:11:00.956 Если вы хотите знать какую оно собственно запускает - существует команда which ("который") 0:11:00.956,0:11:02.140 которая позволит нам сделать это 0:11:02.140,0:11:05.560 Так я могу ввести which echo и оно мне скажет 0:11:05.560,0:11:10.400 "если я хочу запустить программу с именем echo, я буду запускать вот эту вот" 0:11:10.400,0:11:13.980 Стоит остановиться здесь чтобы поговорить о том, что есть пути ("paths") 0:11:13.980,0:11:18.460 Так пути ("paths") есть способ именовать местонахождение файла на вашем компьютере 0:11:18.460,0:11:24.105 В Linux и в Mac OS эти пути ("paths") разделены косой чертой ("forward slashes") 0:11:24.105,0:11:29.480 Так здесь вы увидите что это в корневой директории 0:11:29.480,0:11:35.590 Так косая черта в самом начале указывает на то что начинается с самого верха файловой системы, 0:11:35.590,0:11:41.652 потом смотри в директории под названием usr, потом смотри в директории bin, 0:11:41.652,0:11:44.420 и потом ищи файл под названием echo 0:11:44.420,0:11:48.990 В Windows такие пути ("paths") обычно разделены обратными косыми чертами ("back slashes"). 0:11:48.990,0:11:53.290 И где в Linux и в Mac OS все пути ("paths") живут в корневом именном пространстве 0:11:53.290,0:11:57.350 так все пути ("paths") начинаются с косой черты (или все абсолютные пути ("absolute paths")), 0:11:57.350,0:12:01.100 в Windows есть свой корень для каждого раздела. 0:12:01.100,0:12:05.980 Так вы могли видеть такие вещи как С:\ или D:\ 0:12:05.980,0:12:13.237 Таким образом Windows имеет как бы раздельные иерархии путей файловой системы для каждого имеющегося у вас диска. 0:12:13.237,0:12:18.228 Тогда когда Linux и Mac OS все они смонтированы под одним пространством имён. 0:12:18.228,0:12:22.380 Вы возможно заметили что я сказал слово абсолютный путь ("absolute path") и вы возможно не знаете что это значит. 0:12:22.380,0:12:29.772 Так абсолютные пути - это пути полностью определяющие местонахождение файла 0:12:29.772,0:12:33.930 Так в этом случае это говорит... это говорит о специфическом echo файле 0:12:33.930,0:12:37.870 и это даёт вам полный путь ("full path") к этому файлу, 0:12:37.870,0:12:41.490 но там так же есть вещи известные как относительные пути ("relative paths") 0:12:41.490,0:12:47.079 Так относительный путь ("relative path") относителен к тому где вы сейчас находитесь 0:12:47.079,0:12:49.950 и так, способ как мы находим где мы находимся - 0:12:49.950,0:12:54.646 вы можете ввести pwd текущая рабочая директория ("present working directory") 0:12:54.646,0:12:57.310 настоящая?.. "PRINT working directory" 0:12:57.310,0:13:03.030 Так если я введу pwd это выведет текущий путь ("path") в котором я нахожусь 0:13:03.030,0:13:11.720 Правильно? Так теперь я нахожусь в домашней директории, под root, потом John, под ним и тогда dev, под ним и т.д. 0:13:11.720,0:13:16.120 Отсюда я тогда могу изменить мою текущею рабочею директорию 0:13:16.120,0:13:19.760 и все относительные пути ("relative paths") относительны текущей рабочей директории 0:13:19.760,0:13:22.640 которая в общем-то где вы сейчас находитесь 0:13:22.640,0:13:26.599 В этом случае для примера я могу cd /home 0:13:26.599,0:13:28.459 cd - означает изменить директорию ("change directory") 0:13:28.459,0:13:31.659 это способ которым я меняю то что моя текущая директория есть 0:13:31.659,0:13:34.039 в это случае я изменяю на домашнею директорию /home 0:13:34.039,0:13:37.779 и теперь я - вы увидите моя командная строка изменится чтобы указать 0:13:37.779,0:13:39.339 что я сейчас в домашней директории /home 0:13:39.339,0:13:42.428 Это даёт мне только имя последнего сегмента пути ("path"), 0:13:42.428,0:13:44.913 но вы можете настроить ваш терминал показывать вам полный путь 0:13:44.913,0:13:47.170 где бы вы не были 0:13:47.170,0:13:52.320 И теперь, если я введу pwd снова - это покажет мне что я в /home 0:13:52.320,0:13:58.819 Существует также пара особенных директорий . и .. 0:13:58.819,0:14:02.419 . - означает "текущая директория" 0:14:02.419,0:14:04.689 .. - означает "родительская директория" 0:14:04.689,0:14:07.659 Это способ позволят вам легко перемещаться по файловой системе 0:14:07.659,0:14:11.421 Например здесь, если я ввиду cd .. 0:14:11.421,0:14:13.690 это покажет мне что я теперь в / 0:14:13.690,0:14:15.919 то есть я в корневой директории файловой системы 0:14:15.919,0:14:19.799 я был в /home, а теперь я в / 0:14:19.799,0:14:23.594 И действительно, если я введу pwd это подтвердится 0:14:23.594,0:14:27.529 И я также могу использовать относительные пути ("relative paths") [br]чтобы перейти вниз по файловой системе 0:14:27.529,0:14:35.229 я могу ввести cd ./home и это изменит директорию на home директорию под текущей директорией 0:14:35.229,0:14:38.055 Правильно? Это приведёт меня обратно в /home 0:14:38.055,0:14:42.949 Если я попробую ввести ./home снова - ответ будет: "такой директории не существует" 0:14:42.949,0:14:46.229 Потому что нету home директории в текущей директории где я теперь 0:14:46.229,0:14:48.390 куда я попал выполнив cd 0:14:48.390,0:14:50.599 Правильно? 0:14:50.599,0:14:57.114 И я могу как бы cd всю дорогу назад, в то место где я был 0:14:57.114,0:14:59.889 используя относительные пути ("relative paths") 0:14:59.889,0:15:08.700 И я также могу делать вещи как .. .. .. чтобы вернутся куда-нибудь глубоко назад в мою файловую систему 0:15:08.700,0:15:12.925 это, по случаю, весь путь назад в корневую директорию, так здесь есть директория bin 0:15:12.925,0:15:16.991 и под bin есть файл echo, итак я могу сделать world 0:15:16.991,0:15:19.940 и это запускает программу echo из директории bin 0:15:19.940,0:15:22.079 Хорошо, это способ как вы можете конструировать пути, 0:15:22.079,0:15:24.439 чтобы произвольно пересекать вашу файловую систему 0:15:24.439,0:15:27.749 Иногда вам нужены абсолютные пути иногда относительные 0:15:27.749,0:15:30.269 Обычно вы ипользуете кротчайший 0:15:30.269,0:15:33.859 Но, если вы хотите, к примеру, запустить программу, 0:15:33.859,0:15:36.579 или написать программу которая запускает программу, 0:15:36.579,0:15:38.100 такую как echo или date 0:15:38.100,0:15:40.940 и вы хотите запускать откуда угодно 0:15:40.940,0:15:44.860 вам или нужно ввести имя программы, как data или echo 0:15:44.860,0:15:48.300 и позволить shell использовать этот путь чтобы найти где она находится, 0:15:48.300,0:15:50.290 или нужно ввести абсолютный путь ("absolute path") 0:15:50.290,0:15:51.820 Потому что если вы дадите относительный путь ("relative path"), 0:15:51.820,0:15:53.900 тогда если я запущу её в моей домашней директории, 0:15:53.900,0:15:56.190 и вы запустите её в какой-то другой директории, 0:15:56.190,0:16:01.420 это может работать у меня, но не у вас 0:16:01.420,0:16:04.011 В общем-то, когда мы запускаем программу, 0:16:04.011,0:16:07.271 она будет оперировать в текущей директории 0:16:07.271,0:16:08.432 по крайней мере по умолчанию 0:16:08.432,0:16:10.600 если мы не зададим какие либо аргументы 0:16:10.610,0:16:15.065 И это очень удобно - это значит что часто нам не нужно давать полные пути, 0:16:15.065,0:16:19.090 мы можем просто использовать имена файлов в директории где мы находимся 0:16:19.090,0:16:22.570 Одно что действительно удобно - это найти что находится в текущей директории 0:16:22.570,0:16:27.281 Так мы уже видели pwd - который выводит наше текущее местонахождение 0:16:27.281,0:16:33.050 Существует команда ls - которая покажет вам список ("list") файлов в текущей директории 0:16:33.050,0:16:37.230 Так, если я введу ls здесь - это список всех файлов в текущей директории 0:16:37.230,0:16:42.331 Правильно? И удобный способ просто и быстро перемещаться в файловой системе 0:16:42.331,0:16:46.300 Вы увидите что если я, как бы, cd .. и потом ls 0:16:46.300,0:16:49.770 это покажем мне файлы из той директории 0:16:49.770,0:16:56.270 но я так же могу ввести ls .. я как бы могу задать путь 0:16:56.270,0:17:03.316 и ls ту директорию заместо этой 0:17:03.316,0:17:05.579 Вы можете видеть это если я пойду в саму корневую директорию 0:17:05.579,0:17:08.240 Правильно? И корневая директория содержит другие файлы 0:17:08.240,0:17:11.654 Есть один удобный трюк, о котором вы возможно не знаете, 0:17:11.654,0:17:14.140 две другие особые вещи вы можете сделать 0:17:14.140,0:17:19.110 одна это тильда символ ~ этот символ приведёт вас в вашу домашнею директорию 0:17:19.110,0:17:22.110 Таким образом, ~ всегда представляет домашнею директорию 0:17:22.110,0:17:24.030 И вы можете делать относительные пути ("relative paths") туда 0:17:24.030,0:17:34.990 я могу ввести ~/ и я тут - потому что тильда выразилась в /home/jon 0:17:34.990,0:17:40.679 Так же, в особенности для cd, очень удобный аргумент вы можете задать - тире 0:17:40.679,0:17:45.777 если вы введёте cd - вы перейдёте в директорию где вы были до этого 0:17:45.777,0:17:48.177 Так если я введу cd - я попаду назад в корневую директорию 0:17:48.177,0:17:52.849 Если я введу cd - снова, я попаду назад в missing-semester 0:17:52.849,0:17:59.202 То есть, это удобный способ если вы хотите переключатся между двумя разными директориями 0:17:59.202,0:18:04.552 В случае ls, или в случае cd - могут существовать аргументы о которых вы не знаете 0:18:04.552,0:18:08.812 Правильно? Пока ещё мы не делали ничего, кроме, задания пути, 0:18:08.812,0:18:12.870 но откуда бы вы узнали что можете задавать путь в ls? 0:18:12.870,0:18:18.070 Ну, большинство программ принимают то что известно как аргументы, вроде флагов и опций 0:18:18.070,0:18:20.293 они обычно начинаются с тире - 0:18:20.293,0:18:23.900 Одна из наиболее удобных из них - это --help 0:18:23.900,0:18:26.250 Большинство программ это поддерживают, 0:18:26.250,0:18:34.630 и если вы введёте к примеру ls --help это надеюсь выведет кучу информации об этой команде 0:18:34.630,0:18:39.370 И вы увидите тут как использовать ls, различные опции 0:18:39.370,0:18:41.310 и вы можете задать количество файлов 0:18:41.310,0:18:47.760 Как читать эти описания? - троеточие означает один, ноль или больше 0:18:47.760,0:18:52.860 Квадратные скобки означают - необязательно - то есть в этом случае опции не обязательны 0:18:52.860,0:18:55.100 и количество файлов необязательно (опционно) 0:18:55.100,0:18:57.666 И вы увидите что это говорит о том что программа делает 0:18:57.666,0:19:01.480 и также определяет разные типы флагов и опций, которые вы можете задавать 0:19:01.480,0:19:05.830 Обычно мы называем одиночное тире с одиночной буквой флагом, 0:19:05.830,0:19:09.347 или что-то что не принимает значения - флагом. 0:19:09.347,0:19:11.450 И все что принимает значение - опцией 0:19:11.450,0:19:16.430 Так, к примеру, -a и --all оба флаги, 0:19:16.430,0:19:21.883 а -с и --color - опции 0:19:21.883,0:19:26.520 Одну вещь вы увидите здесь, если покрутите достаточно долго вниз, 0:19:26.520,0:19:29.550 -l флаг 0:19:29.550,0:19:31.700 и упс, это не помогает 0:19:32.470,0:19:38.640 -l флаг использует длинный формат вывода 0:19:38.640,0:19:42.772 это уже само по себе достаточно полезно, но давайте посмотрим что это на самом деле делает 0:19:42.772,0:19:48.070 если я введу ls -l это всё так же выводит файлы из текущей директории, 0:19:48.070,0:19:50.847 но и даст мне гораздо больше информации об этих файлах 0:19:50.847,0:19:54.119 и это то, что вы будете использовать довольно часто, 0:19:54.119,0:19:59.980 потому что, эта дополнительная информация, часто, довольно удобна 0:19:59.980,0:20:04.798 давайте посмотрим что представляет некоторая из этой дополнительной информации 0:20:04.798,0:20:10.280 ага, начнём с того, что d в начале некоторых из этих строк, 0:20:10.280,0:20:12.120 означает что это что-то является директорией 0:20:12.120,0:20:15.850 так _data здесь, к примеру, является директорией 0:20:15.850,0:20:19.685 а 404.html не является директорией, это файл 0:20:19.685,0:20:27.000 следующие буквы после этого показывают права доступа к тому файлу 0:20:27.000,0:20:31.440 Так, как вы уже видели раньше я могу не иметь доступа открыть данный файл, 0:20:31.440,0:20:33.584 или я могу не иметь доступа перейти в данную директорию 0:20:33.584,0:20:37.320 и это всё продиктовано правами доступа к данному файлу или директории 0:20:37.320,0:20:44.725 Способ прочтения этого - первая группа из трёх прав доступа установленна для владельца ("owner") файла 0:20:44.725,0:20:49.120 Все эти файлы которые вы здесь видите принадлежат мне 0:20:49.120,0:20:54.145 Вторая группа их трёх символов - права доступа для группы владеющей этими файлами 0:20:54.145,0:20:57.602 В этом случае все эти файлы также принадлежать группе Джона 0:20:57.602,0:21:03.205 И последняя группа их трёх - права доступа для всех остальных 0:21:03.205,0:21:06.910 то-есть всех кроме пользователя или группы владеющей этим файлом 0:21:06.910,0:21:08.650 Эта директория возможно немного скучная, 0:21:08.650,0:21:11.840 потому что всё принадлежит мне 0:21:11.840,0:21:16.648 Но если мы сделаем что-нибудь вроде cd / и ls -l 0:21:16.648,0:21:19.946 вы увидите что всё принадлежит root ("суперпользователь") 0:21:19.946,0:21:22.800 мы вернёмся кто му что такое root пользователь 0:21:22.800,0:21:25.287 Но здесь вы видите некоторые права доступа к файла немного более интересные 0:21:25.287,0:21:31.760 Группы из трёх представляют из себя права считывает, изменять и запускать 0:21:31.760,0:21:34.871 Что это означает отличается для файлов и директорий 0:21:34.871,0:21:37.180 Для файлов это довольно просто 0:21:37.180,0:21:40.900 если у вас есть право считывать файл - вы можете считать содержимое файла 0:21:40.900,0:21:45.870 если у вас есть право изменять файл - вы можете добавить к этому файлу 0:21:45.870,0:21:47.650 или полностью заменить его 0:21:47.650,0:21:50.370 И если у вас установлен запустить, X бит, у файла, 0:21:50.370,0:21:52.540 тогда вы можете запустить этот файл на выполнение 0:21:52.540,0:21:57.130 Так, если мы введём ls -l /bin, 0:21:57.130,0:21:57.840 это ужасно, 0:21:57.840,0:21:59.730 и /usr/bin - вы увидите 0:21:59.730,0:22:02.210 что у них у всех бит "запустить" выставлен 0:22:02.210,0:22:05.190 даже для людей которые не владеют этим файлом 0:22:05.190,0:22:07.320 И это потому что программа echo, на пример, 0:22:07.320,0:22:09.830 мы хотим что бы все на этом компьютере могли её запустить 0:22:09.830,0:22:13.200 Нет причин чтобы сказать "только некоторые пользователи могут запускать echo" 0:22:13.200,0:22:16.214 Это не имеет никакого смысла 0:22:16.214,0:22:19.955 Для директорий, однако, эти права доступа немного отличаются 0:22:19.955,0:22:23.790 Так, "считывать" означает - имеете ли вы право видеть 0:22:23.790,0:22:26.320 какие файлы находятся внутри этой директории 0:22:26.320,0:22:28.770 то есть, думайте о считывании списка, для директории 0:22:28.770,0:22:30.680 имеете ли вы право листать её содержимое 0:22:30.680,0:22:34.700 изменять - для директории, это имеете ли вы право переименовывать, 0:22:34.700,0:22:38.347 создавать или удалять файлы в этой директории 0:22:38.347,0:22:42.850 то есть, это всё ещё как бы "изменять", но заметьте что это означает что 0:22:42.850,0:22:48.557 если вы имеете право "изменять" файл, но не имеете права "изменять" директорию, 0:22:48.557,0:22:50.300 вы не можете удалить этот файл. 0:22:50.300,0:22:52.495 Вы можете сделать его пустым, но вы не можете удалить его 0:22:52.495,0:22:56.260 потому что, это бы потребовало "изменить" саму директорию 0:22:56.260,0:23:00.580 и в заключении, "запустить" на директориях, часто сбивает людей с толку 0:23:00.580,0:23:03.866 "запустить" на директориях - это то, что известно как "поиск" 0:23:03.866,0:23:09.464 и это не особо полезно как имя, но что это значит, имеете ли вы право 0:23:09.464,0:23:11.608 войти в эту директорию 0:23:11.608,0:23:15.320 Если вы хотите получить доступ к файлу, если вы хотите открыть его, или считать его, 0:23:15.320,0:23:20.070 изменить его, всё что вы хотите сделать, в общем, cd - перейти в это директорию 0:23:20.070,0:23:25.150 вы должны иметь права "запустить" и на всех родительских директориях этой директории, 0:23:25.150,0:23:27.150 и на самой этой директории 0:23:27.150,0:23:31.677 Так, например, для меня, получить доступ к файлу внутри /user/bin 0:23:31.677,0:23:35.110 как /user/bin/echo - я должен иметь право "запустить" на корневой директории root, 0:23:35.110,0:23:36.972 я должен иметь право "запустить" на user, 0:23:36.972,0:23:39.306 и я должен иметь право "запустить" на bin 0:23:39.306,0:23:43.615 если я не имею всех тех "запустить" битов - я не буду иметь права доступа к тому файлу, 0:23:43.615,0:23:48.820 поскольку у меня не будет права войти в директории по пути 0:23:48.820,0:23:56.810 есть несколько битов, которые вы можете встретить эссы или тии, вы можете видеть эллы 0:23:56.810,0:23:58.922 их мы можем обсудить на кафедре если вам интересно 0:23:58.922,0:24:03.404 они в основном, не будут относится к тому что вы делаете в этом классе, 0:24:03.404,0:24:08.910 но о них хорошо бы знать, так, если вам интересно, поищите об них сами 0:24:08.910,0:24:11.040 или спросите у нас на кафедре 0:24:11.040,0:24:13.730 Существуют некоторые другие программы о которых хорошо бы знать 0:24:13.730,0:24:18.090 о, простите, ещё одну вещь я должен упомянуть: если у вас просто тире - у вас нет этого права доступа 0:24:18.090,0:24:22.560 так, если это, к примеру: r-x - это означает у вас есть права "считывать" и "запускать", 0:24:22.560,0:24:25.610 но у вас нет права "изменять" 0:24:25.610,0:24:29.236 Существуют некоторые полезные программы, чтобы познакомится с ними сейчас, 0:24:29.236,0:24:32.150 одна из них команда move, или mv 0:24:32.150,0:24:37.939 Так если я cd назад, в мой missing-semester, тут mv позволяет мне переименовать файл 0:24:37.939,0:24:43.530 и переименовать здесь берёт два пути - берёт старый путь и новый путь 0:24:43.530,0:24:47.271 Это означает, что move, позволяет вам как переименовывать файлы, 0:24:47.271,0:24:50.503 если вы измените имя файла, но не директорию, 0:24:50.503,0:24:53.292 или позволяет вам переместить файл в совершенно другую директорию 0:24:53.292,0:24:58.363 это просто, вы задаёте путь к текущему файлу, и путь куда вы хотите тот файл поместить 0:24:58.363,0:25:01.820 И это может поменять его местоположение и его имя 0:25:01.820,0:25:05.747 Так, например, я могу mv файл dotfiles.md стать foo.mv 0:25:05.747,0:25:07.630 Бесполезно. Правильно? 0:25:07.630,0:25:11.554 И также, я могу mv его обратно 0:25:14.494,0:25:20.244 Так же существует команда cp или copy, очень похоже - вы копируете файл 0:25:20.244,0:25:22.434 cp также принимает два аргумента. 0:25:22.434,0:25:24.690 Оно берёт путь откуда вы хотите копировать, 0:25:24.690,0:25:26.180 и путь куда вы хотите копировать 0:25:26.180,0:25:27.850 И это полные пути ("full paths") 0:25:27.850,0:25:29.810 Так я могу использовать это, например, 0:25:29.810,0:25:36.574 чтобы сказать: "я хочу скопировать файл dotfiles.md в, конечно, ../food.md" 0:25:36.574,0:25:40.520 и теперь, если я сделаю ls .. , то я увижу там есть файл food.md 0:25:40.520,0:25:41.700 в той директории 0:25:41.700,0:25:46.660 Так, cp тоже принимает два пути, не обязательно находится в той же директории 0:25:46.660,0:25:50.660 и также, там есть команда rm, которая позволяет удалить файл 0:25:50.660,0:25:55.220 и там также вы можете задать путь, в этом случае я удаляю ../food.md 0:25:55.220,0:26:00.879 вы должны быть в курсе что для удаления, особенно в Lunix, удаление по умолчанию не рекурсивно 0:26:00.879,0:26:04.540 Там, вы не можете удалить директорию используя rm 0:26:04.540,0:26:08.417 Вы можете послать флаг -r , который позволит вам произвести рекурсивное удаление, 0:26:08.417,0:26:12.193 и задать путь который вы хотите удалить, и это удалит всё под ним 0:26:12.193,0:26:17.288 Существует, также, команда rmdir , которая позволяет вам удалять директорию, 0:26:17.288,0:26:20.755 но она только позволяет вам удалить эту директорию, если она пустая 0:26:20.755,0:26:23.400 Таким образом, идея здесь как бы безопасного механизма для вас, 0:26:23.400,0:26:27.500 так что вы случайно не выбросите кучу своих файлов 0:26:27.500,0:26:29.379 И последняя маленькая команда, которую удобно использовать, 0:26:29.379,0:26:32.210 это mkdir - которая создаёт новую директорию 0:26:32.210,0:26:35.373 И как мы говорили до этого, вы не хотите сделать что-то вроде этого, 0:26:35.373,0:26:37.600 потому что, это создаст две директории для вас, 0:26:37.600,0:26:39.957 одна будет называться "my" а другая "photos" 0:26:39.957,0:26:42.447 Если вы действительно хотите создать такую директорию, 0:26:42.447,0:26:48.213 вы либо избежите пробел, или возьмёте строку в кавычки 0:26:49.653,0:26:52.260 Если вы когда либо захотите больше информации о том, 0:26:52.260,0:26:55.916 как любая команда, в принципе, работает на этих платформах 0:26:55.916,0:26:58.526 существует действительно удобная команда для этого тоже 0:26:58.526,0:27:02.469 Существует команда называемая man (manual pages - руководство, мануал) 0:27:02.469,0:27:06.386 Эта программа берёт как аргумент название другой программы, 0:27:06.386,0:27:08.360 и выдаёт её "руководство к эксплуатации" 0:27:08.360,0:27:10.939 Так, на пример, мы можем ввести man ls 0:27:10.939,0:27:14.230 и это показывает нам мануал к ls 0:27:14.230,0:27:18.681 Вы заметите что в случае ls - это довольно похоже на то что мы получили с ls --help 0:27:18.681,0:27:22.580 но здесь немного удобнее ориентироваться, немного удобнее читать 0:27:22.580,0:27:28.288 Обычно ближе к концу вы найдёте примеры, информацию о том кто это написал, 0:27:28.288,0:27:31.439 и где вы можете найти больше информации, и типа такого 0:27:31.439,0:27:35.151 Одна вещь может запутать, иногда, по крайней мере до последней версии, 0:27:35.151,0:27:37.815 где они добавили это дерево внизу, которое говорит "нажми q чтобы выйти" 0:27:37.815,0:27:42.223 Раньше они не упоминали этого: вы нажимаете на q чтобы выйти из этой программы 0:27:42.223,0:27:46.140 Может быть очень сложно выйти, если вы не знаете этого 0:27:46.934,0:27:50.655 Удобный шорткат здесь - ctrl l 0:27:50.655,0:27:55.441 который позволяет вам очистить терминал и перейти на верх 0:27:55.441,0:27:58.510 Так мы только говорили о программах изолированно, 0:27:58.510,0:28:02.362 но основная мощность shell проявляется 0:28:02.362,0:28:05.490 когда вы начинаете комбинировать различные программы 0:28:05.490,0:28:06.380 Правильно? 0:28:06.380,0:28:10.239 Так вместо выполнения cd , выполнения ls , и т.д. , 0:28:10.239,0:28:12.339 вы возможно хотите объединить несколько программ вместе, 0:28:12.339,0:28:14.060 вы возможно хотите взаимодействовать с файлами, 0:28:14.060,0:28:16.280 и оперировать файлами между программами 0:28:16.280,0:28:18.699 И способ как мы можем это сделать: 0:28:18.699,0:28:22.169 использовать нотацию потока, которую даёт нам shell 0:28:22.169,0:28:24.380 Каждая программа, по умолчанию, имеет, 0:28:24.380,0:28:27.490 я немного упрощу, и скажу: два первичных потока 0:28:27.490,0:28:31.130 Она имеет поток ввода, и поток вывода 0:28:31.130,0:28:33.380 По умолчанию, поток ввода - это ваша клавиатура 0:28:33.380,0:28:35.323 В общем-то поток ввода это ваш терминал, 0:28:35.323,0:28:36.610 и то что вы печатаете на терминале, 0:28:36.610,0:28:38.679 окажется к конце концов в программе 0:28:38.679,0:28:42.460 И она так же имеет поток вывода по умолчанию, который, что либо программа выводит, 0:28:42.460,0:28:44.120 будет выведено в этот поток 0:28:44.120,0:28:46.104 И по умолчанию, это тоже ваш терминал 0:28:46.104,0:28:49.608 Поэтому, когда я ввожу echo hello, это выводится назад на мой терминал 0:28:49.608,0:28:54.570 Но shell даёт вам способ переназначить эти потоки 0:28:54.570,0:28:58.370 Поменять, куда ввод и вывод программы указывают 0:28:58.370,0:29:05.752 Этот способ, наиболее простой способ: использование знаков угловых скобок 0:29:05.752,0:29:07.720 так что вы можете ввести что-нибудь как это, 0:29:07.720,0:29:10.650 или вы можете ввести что-нибудь как это 0:29:10.650,0:29:17.717 Левая угловая скобка указывает переназначить ввод этой программы на содержимое этого файла 0:29:17.717,0:29:26.477 И закрывающая угловая скобка означает переназначить вывод предыдущей программы в этот файл 0:29:26.477,0:29:29.339 Так, давайте посмотрим на пример того, как это будет выглядеть 0:29:29.339,0:29:34.100 если я введу echo hallo , я могу сказать, я хочу сохранить тот контент 0:29:34.100,0:29:36.210 в файле с именем hello.txt 0:29:36.210,0:29:38.764 И потому что я задал, это относительный путь ("relative path"), правильно?, 0:29:38.764,0:29:42.473 это создаст файл в текущей директории, с названием hello.txt 0:29:42.473,0:29:46.401 и по крайней мере в теории, его содержимое должно быть словом "hello" 0:29:46.401,0:29:50.279 Так, если я запущу это, заметьте что ничего не выведено на мой экран 0:29:50.279,0:29:53.380 В предыдущий раз когда я выполнял echo hello это вывело hello 0:29:53.380,0:29:56.894 Теперь это hello ушло в файл под названием hello.txt 0:29:56.894,0:29:59.681 и я могу проверит это используя программу называемую cat 0:29:59.681,0:30:03.158 Так, cat выводит содержимое файла 0:30:03.158,0:30:07.899 Так, я могу ввести cat hello.txt, и вот он показывает мне hello 0:30:07.899,0:30:12.614 Но cat также поддерживает этот тип переназначений 0:30:12.614,0:30:16.790 Так я могу сказать cat, который по умолчанию только выводит свой ввод, 0:30:16.790,0:30:18.906 просто дублирует что введено на выводе, 0:30:18.906,0:30:23.231 я могу сказать: я хочу что бы ты взял свой ввод, из hello.txt 0:30:23.231,0:30:27.551 Что случится в этом случае, это shell откроет hello.txt 0:30:27.551,0:30:31.312 возьмёт его содержимое и сделает его вводом cat, 0:30:31.312,0:30:34.110 и тогда cat просто выведет это в свой вывод, 0:30:34.110,0:30:37.190 который, поскольку я его не переназначил, будет просто моим терминалом 0:30:37.190,0:30:40.655 То есть это просто выведет hello на экран 0:30:40.655,0:30:43.029 И я могу использовать их обоих одновременно 0:30:43.029,0:30:45.140 Так, например, если я хочу скопировать какой-нибудь файл, 0:30:45.140,0:30:47.560 и я не хочу использовать cp команду по какой-то причине, 0:30:47.560,0:30:50.830 я могу сделать это: 0:30:50.830,0:30:56.589 и в этом случае, я ничего не говорю программе cat, я просто говорю "далай свою нормальное дело" 0:30:56.589,0:30:59.567 правильно, программа cat ничего не знает об этом переназначении 0:30:59.567,0:31:03.171 Но я говорю shell использовать hello.txt как ввод для cat, 0:31:03.171,0:31:07.719 и записывать всё что cat выводит в hello.txt 0:31:07.719,0:31:09.640 Опять это ничего не выводит на экран 0:31:09.640,0:31:14.435 Но если я cat hello.txt - я получу вывод, как и следовало ожидать, 0:31:14.435,0:31:18.710 что есть копия оригинального файла 0:31:18.710,0:31:25.398 Существуют так же двойные закрывающие скобки, что добавляет, вместо просто перезаписывания 0:31:25.398,0:31:30.299 Так, вы заметите, если я сделаю cat hello.txt в hello2.txt опять 0:31:30.299,0:31:33.740 и тогда я cat hello2.txt - он всё ещё содержит hello, 0:31:33.740,0:31:35.455 несмотря на то что это уже содержало hello 0:31:35.455,0:31:38.630 Если я переключу это, взамен, на двойные закрывающие скобки, 0:31:38.630,0:31:39.754 что означает добавить 0:31:39.754,0:31:43.985 И если я теперь cat этот файл - в нём hello повторяется дважды 0:31:44.785,0:31:46.550 Это довольно простые, 0:31:46.550,0:31:49.376 они просто способы взаимодействия с файлами, 0:31:49.376,0:31:51.970 но когда это становится действительно интересно - это дополнительный оператор 0:31:51.970,0:31:54.256 который вам даёт shell, называется pipe ("труба") символ 0:31:54.256,0:31:59.305 Так | - вертикальная черта, и pipe значит: - 0:31:59.305,0:32:07.440 "возьми вывод программы с лева и сделай это вводом программы справа" 0:32:07.440,0:32:09.010 Правильно? 0:32:09.010,0:32:14.398 Так, как это выглядит, хорошо, давайте возьмём примет ls / 0:32:14.398,0:32:16.480 или ls -l / 0:32:16.480,0:32:21.288 это выводит кучу вещей. Давайте скажем я хочу только последнюю линию этого вывода 0:32:21.288,0:32:23.860 Хорошо, существует команда под названием tail ("хвост") 0:32:23.860,0:32:27.960 И tail выводит строки с конца своего ввода 0:32:27.960,0:32:32.400 И я могу ввести -n1 - так это флаг n 0:32:32.400,0:32:36.640 вы так же можете использовать --lines, если хотите использовать её как более длинную опцию 0:32:36.640,0:32:39.691 но в этом случае, это тоже самое как вывод последней линии 0:32:39.691,0:32:48.830 и я могу связать это вместе - так я могу сказать ls -l / | tail -n1 0:32:48.830,0:32:53.682 и заметьте что здесь ls не знает об tail, и tail не знает об ls 0:32:53.682,0:32:57.849 это разные программы и никогда не были запрограммированы быть совместимыми друг с другом 0:32:57.849,0:33:01.106 всё что они умеют делать - это читать из ввода и выводить в вывод 0:33:01.106,0:33:04.030 а pipe, как раз, связывает их вместе 0:33:04.030,0:33:08.527 И в этом конкретном случае, я говорю: "я хочу вывод из ls быть вводом в tail, 0:33:08.527,0:33:12.222 и я хочу вывод от tail просто на мой терминал" потому что я не перенаправил его 0:33:12.222,0:33:15.889 Я мог бы так же перенаправить это, ну скажем, я хочу этот вывод в ls.txt 0:33:15.889,0:33:20.396 и в этом случае если я cat ls.txt, я получу соответствующий вывод 0:33:20.396,0:33:23.115 И оказывается, вы можете делать реально чёткие вещи с этим 0:33:23.115,0:33:26.555 мы покроем это гораздо больше на лекции по обработке данных ("data wrangling") 0:33:26.555,0:33:29.190 это будет через 4 дня, или около того 0:33:29.190,0:33:32.580 о разных интересных вещах которые вы можете делать, кода начнёте 0:33:32.580,0:33:35.470 строить более продвинутые конвейеры ("pipelies") 0:33:35.470,0:33:42.822 один, дать вам один пример, мы можем сделать что-то вроде curl --head silent google com 0:33:44.972,0:33:47.170 так, чтобы просто показать вам как это выглядит 0:33:47.170,0:33:51.417 это даёт мне все HTTP заголовки для доступа к google.com 0:33:51.417,0:34:02.738 и я могу послать это в grep --ignore case, или просто -i, если хочу, content-length 0:34:02.738,0:34:05.250 так это выведет мне заголовок content-length ("длинна содержимого") 0:34:05.250,0:34:07.140 grep это программа о которой мы поговорим позже 0:34:07.140,0:34:11.382 она позволит вам искать во вводе по заданному ключевому слову 0:34:11.382,0:34:14.490 мы можем пропустить это через, скажем, команду cut 0:34:14.490,0:34:19.850 которая принимает дилимитер - выставленный как пробел, 0:34:19.850,0:34:21.540 и я хочу второе поле 0:34:21.540,0:34:23.770 и это выводит только content-length ("длинна содержимого") 0:34:23.770,0:34:28.300 это, как бы глупый пример, правда, он просто позволяет вам вытащить длину содержимого 0:34:28.300,0:34:30.640 в байтах, с google.com, из командной строки 0:34:30.640,0:34:35.570 это не очень полезная вещь, но вы можете видеть как сцепляя это, вы можете 0:34:35.570,0:34:39.790 достигнуть кучу действительно интересных эффектов от манипуляций с текстом 0:34:39.790,0:34:42.770 И оказывается, что pipes не только для текстовых данных, 0:34:42.770,0:34:44.906 вы можете делать это так же с изображениями, 0:34:44.906,0:34:45.650 у вас может быть программа, 0:34:45.650,0:34:50.643 которая манипулирует с бинарным изображением на входе и выводит бинарное изображение 0:34:50.643,0:34:52.647 и вы можете сцепить их вместе таким образом 0:34:52.647,0:34:55.464 И позже мы поговорим о некоторых такого рода примерах тоже 0:34:55.464,0:34:57.996 вы можете это делать даже для видео - если хотите. 0:34:57.996,0:35:00.460 Вы можете транслировать, это, например, прекрасный способ 0:35:00.460,0:35:04.820 если у вас дома есть Chromecast, вы так можете транслировать видео файл, 0:35:04.820,0:35:09.628 если поставить последней программой в ваш pipe программу отправки Chromecast 0:35:09.628,0:35:12.400 Так, вы транслируете в неё видео файл и она транслирует, 0:35:12.400,0:35:14.459 или HTTP на ваш Chromecast 0:35:17.900,0:35:21.480 Мы будем много говорить об этом на лекции по обработке данных ("data wrangling"), но 0:35:21.480,0:35:25.380 есть ещё одна вещь, о которой я хочу рассказать вам как бы: 0:35:25.380,0:35:30.310 как использовать терминал более интересным и более мощным способом, 0:35:30.310,0:35:31.780 чем тот к которому вы могли привыкнуть. 0:35:31.780,0:35:38.446 Возможно даже будет интересным для тех из вас, кто уже чувствует себя с терминалом комфортно. 0:35:38.446,0:35:43.440 Но, сперва нам нужно покрыть важную тему относящеюся к Linux системам, и Mac OS 0:35:43.440,0:35:47.238 системам в особенности, это понятие root пользователя 0:35:47.238,0:35:50.340 root пользователь это что то вроде администратора в Windows 0:35:50.340,0:35:52.821 и имеет нулевой идентификационный номер 0:35:52.821,0:35:58.223 root пользователь особенный, потому что ему позволено делать на вашей систему всё что он захочет 0:35:58.223,0:36:01.136 даже если файл закрытые для всех для считывания, 0:36:01.136,0:36:02.796 или если закрыт для всех для изменений, 0:36:02.796,0:36:04.626 root всё равно имеет доступ к этому файлу 0:36:04.626,0:36:08.699 root это как бы супер юзер - они могут делать всё что захотят 0:36:08.699,0:36:12.907 и чаще всего вы на будете оперировать как супер юзер 0:36:12.907,0:36:16.755 вы не будете root, вы будете пользователем как Джон, или какое угодно ваше имя 0:36:16.755,0:36:18.993 и это будет пользователь которым вы действуете 0:36:18.993,0:36:22.765 Потому что, если бы оперировали своим компьютером как пользователь root всё время - 0:36:22.765,0:36:25.970 если вы запустите не ту программу, она может разрушить ващ компьютер 0:36:25.970,0:36:28.580 И вы не хотите этого! Правильно? 0:36:28.580,0:36:32.632 Но время от времени вы хотите сделать что либо, что требует, что бы вы были root 0:36:32.632,0:36:34.271 Обычно, в таки случаях, 0:36:34.271,0:36:38.221 вы будете пользоваться программой под названием sudo, 0:36:38.221,0:36:43.125 или делать как su - и su в этом случае "супер юзер" 0:36:43.125,0:36:47.450 Так, это способ выполнить следующее как супер юзер 0:36:47.450,0:36:52.532 Обычно, как sudo работает: вы вводите sudo и затем команду как обычно на вашем терминале, 0:36:52.532,0:36:59.330 и он выполнит вашу команду так, как если бы вы были root, а не ваш пользователь 0:36:59.330,0:37:01.460 Где вам может это понадобится? 0:37:01.460,0:37:06.280 Хорошо, на вашем компьютере существует много файловых систем, 0:37:06.280,0:37:09.310 но в особенности есть одна под названием sys fs 0:37:09.310,0:37:13.905 Если вы cd в /sys - это целый новый мир: 0:37:13.905,0:37:17.973 эта файловая система не файлы на вашем компьютере, 0:37:17.973,0:37:20.775 а различные параметры ядра ("kernel") 0:37:20.775,0:37:24.736 Так, ядро ("kernel") - это в общем-то, ядро вашего компьютера 0:37:24.736,0:37:28.830 Это ваш способ получить доступ к различным параметрам ядра, 0:37:28.830,0:37:31.870 через что-то, что выглядит как файловая система 0:37:31.870,0:37:35.570 Вы здесь увидите, что если я cd в class, на пример, 0:37:35.570,0:37:38.910 это имеет директории для различных типов устройств 0:37:38.910,0:37:40.416 с которыми я могу взаимодействовать, 0:37:40.416,0:37:43.490 или различные ключи к которым я могу получить доступ 0:37:43.490,0:37:47.680 или всякого рода странные рычажки, внутри 0:37:47.680,0:37:51.160 И поскольку они представлены как файлы - это означает что мы можем использовать 0:37:51.160,0:37:54.575 все те инструменты, которые мы пока использовали, чтобы манипулировать ими 0:37:54.575,0:37:59.241 Один такой пример, если вы пойдёте в /sys/class/backlight 0:37:59.241,0:38:03.430 так, это backlight директория позволяет вам конфигурировать подсветку на вашем лаптопе, 0:38:03.430,0:38:04.943 если она у вас есть 0:38:04.943,0:38:07.855 Так, я могу cd в intel_baklight, это intel лаптоп, 0:38:07.855,0:38:10.990 здесь внутри вы увидите файл под названием brightness ("яркость") 0:38:10.990,0:38:15.385 Я могу cat brightness - это текущая яркость моего экрана 0:38:15.385,0:38:18.369 Но не только это, я могу это также изменить, 0:38:18.369,0:38:21.115 чтобы изменить яркость моего экрана 0:38:21.115,0:38:23.477 Так, вы можете подумать что я могу, 0:38:23.477,0:38:25.317 давайте посмотрим какая здесь максимальная яркость 0:38:25.317,0:38:28.598 ОК, так это сейчас выставлено на максимум 0:38:28.598,0:38:31.359 Вы можете представить, что я могу сделать что-то вроде 0:38:31.359,0:38:37.431 Если я введу echo, сделаем половину или около того, echo 500 > brightness 0:38:37.431,0:38:39.840 Если я введу - это говорит - "в доступе отказано" 0:38:39.840,0:38:43.550 Я не имею права менять яркость, потому что, для того, чтобы, 0:38:43.550,0:38:45.850 в общем для того чтобы поменять что-то в ядре, 0:38:45.850,0:38:47.187 вам нужно быть администратором 0:38:47.187,0:38:51.930 И вы можете представить, что способ это разрешить, это ввести sudo echo 500 0:38:51.930,0:38:54.040 Но я опять получил ошибку - "в доступе отказано" 0:38:54.040,0:38:55.779 Но почему? 0:38:55.779,0:38:59.770 Это потому что, как я уже упоминал ранее, эти перенаправления ввода и вывода - 0:38:59.770,0:39:02.490 не есть что то - о чём знают программы 0:39:02.490,0:39:07.983 когда мы перенаправили ls в tail, tail не знала о ls, и ls не знал о tail 0:39:07.983,0:39:10.744 pipe и перенаправление было задано shell 0:39:10.744,0:39:13.059 Так, в этом случае, что происходит, 0:39:13.059,0:39:17.151 я говорю моей shell выполнить программу sudo 0:39:17.151,0:39:22.723 с аргументами echo и 500, и пошли вывод в файл под названием brightness 0:39:22.723,0:39:28.570 Но shell открывает файл brightness, а не sudo 0:39:28.570,0:39:32.070 Так, в этом случае, shell, которая запущена как я, 0:39:32.070,0:39:33.983 пытается открыть файл brightness на запись, 0:39:33.983,0:39:35.599 и она не имеет права этого делать 0:39:35.599,0:39:37.976 И поэтому я получил ошибку "в доступе отказано" 0:39:37.976,0:39:41.689 Вы могли видеть это, если вы, как бы, ищите что либо, 0:39:41.689,0:39:42.799 вышли на Stack Overflow 0:39:42.799,0:39:44.409 и там сказано: просто запусти эту команду 0:39:44.409,0:39:46.830 и вы увидите что это далаем что-то вроде: 0:39:46.830,0:39:48.340 они дали вам инструкции вроде: 0:39:48.340,0:39:58.267 1 > /sys/net/ipv4_forward - например 0:39:58.267,0:40:01.520 это что то вы могли видеть, если вы устанавливаете firewall 0:40:01.520,0:40:04.240 И эта команда должна работать, 0:40:04.240,0:40:05.930 потому что этот маленький символ фунта ("phond symbol"), 0:40:05.930,0:40:07.830 указывает - запускать это как root 0:40:07.830,0:40:09.640 Это что-то, что очень редко разъяснено, 0:40:09.640,0:40:11.760 но это то, что # означает 0:40:11.760,0:40:14.110 Вы увидите на моей командной строке знак доллара, 0:40:14.110,0:40:16.943 и доллар указывает: вы сейчас не root 0:40:16.943,0:40:19.190 Так, вопрос - как мне обойти это? 0:40:19.190,0:40:22.270 Я могу переключиться в терминал root. 0:40:22.270,0:40:25.220 Так один способ сделает это: запустить sudo su. 0:40:25.220,0:40:28.837 sudo su - говорит: "запусти следующею команду как root" 0:40:28.837,0:40:32.507 и su - это сложная команда, 0:40:32.507,0:40:36.131 которая фактически даёт вам shell как супер юзер 0:40:36.131,0:40:40.610 Так, если я введу это, введу пароль, тогда вы сразу увидите 0:40:40.610,0:40:43.509 что имя пользователя в начале изменился с jon на root 0:40:43.509,0:40:46.241 И командная строка изменилась с $ на # 0:40:46.241,0:40:51.193 Если я теперь войду в этот файл, если я введу echo 500 > brightness 0:40:51.193,0:40:53.528 мой экран стал немного темнее, но вы не можете это видеть 0:40:53.528,0:40:55.380 просто поверье мне 0:40:55.380,0:40:57.483 И теперь, я не получил ошибки - 0:40:57.483,0:41:00.610 это потому что shell теперь запущена как root 0:41:00.610,0:41:02.239 а не как Jon 0:41:02.239,0:41:05.104 И пользователь root имеет право открыть этот файл 0:41:05.104,0:41:09.480 Но, учитывая наши знания которые мы теперь имеем о терминале 0:41:09.480,0:41:12.929 для нас существует способ делать это не прибегая к root shell 0:41:12.929,0:41:17.240 И это выглядит следующим образом: 0:41:17.900,0:41:21.929 это, я думаю, восстановит 1060 0:41:21.929,0:41:24.500 Так, вы видите отличия? 0:41:24.500,0:41:28.680 Здесь я говорю моей shell запустить команду echo 1060 0:41:28.680,0:41:30.150 которая выполнит echo 1060 0:41:30.150,0:41:32.849 И я говорю ей запустить команду sudo tee brightness 0:41:32.849,0:41:37.596 И я говору "послать вывод от echo в sudo tee" 0:41:37.596,0:41:40.755 Чтобы это понять, вам нужно знать что делает команда tee 0:41:40.755,0:41:44.189 Команда tee принимает ввод и пишет его в файл, 0:41:44.189,0:41:46.657 но также в стандартный вывод 0:41:46.657,0:41:48.870 Так tee это удобный способ если у вас есть, 0:41:48.870,0:41:53.650 скажем, журнал, в который вы хотите сохранить, 0:41:53.650,0:41:55.779 но вы так же хотите видеть это 0:41:55.779,0:41:58.600 Тогда вы можете pipe это через tee, дать ему имя файла, 0:41:58.600,0:42:02.325 и это запишет ввод в файл и на ваш экран 0:42:02.325,0:42:05.312 И здесь я пользуюсь этой программой: 0:42:05.312,0:42:11.015 я говорю: "запусти tee как root и пусть tee пишет в файл brightness" 0:42:11.015,0:42:12.970 И так в этом случае программа tee, 0:42:12.970,0:42:14.767 которая открывает файл brightness, 0:42:14.767,0:42:17.577 запущена как root и имеет право это делать 0:42:17.577,0:42:20.700 Если я запущу это сейчас, вы снова не можете видеть, 0:42:20.700,0:42:23.420 но яркость включилась на лаптопе 0:42:23.420,0:42:24.510 И я не получил никаких ошибок, 0:42:24.510,0:42:26.674 и мне не понадобилось переходить в root shell 0:42:26.674,0:42:27.930 и запускать команды оттуда 0:42:27.930,0:42:30.720 Что часто может быть в некотором роде опасным 0:42:30.720,0:42:32.786 Если вы хотите исследовать эту файловую систему немного больше 0:42:32.786,0:42:35.761 здесь есть много чего интересного 0:42:35.761,0:42:38.990 Если вы просто начнёте осматриваться вокруг, 0:42:38.990,0:42:41.151 вы можете найти забавные вещи всех сортов 0:42:41.151,0:42:44.478 Так, к примеру, мы заметили что есть забавная команда brightness 0:42:44.478,0:42:47.786 Мне интересно, какие ещё яркости я могу задать 0:42:47.786,0:42:49.510 Так я могу использовать команду find, 0:42:49.510,0:42:52.241 которую мы также обсудим на следующей лекции, 0:42:52.241,0:42:58.546 Я буду искать каждый файл, чьё имя немного похоже на brightness 0:42:58.546,0:43:00.460 в текущей директории 0:43:00.460,0:43:01.700 Это бесполезно 0:43:01.700,0:43:07.650 Может быть они не файлы. Я ошибся в слове brightness? 0:43:07.650,0:43:09.500 Да, почему это так себя ведёт? 0:43:14.960,0:43:20.190 О, по-видимому не хочет найти мне brightness. Как хорошо. 0:43:20.190,0:43:24.277 К счастью для вас - я уже знаю одну, кстати. 0:43:24.277,0:43:29.787 Существует субдиректория под названием leds, и leds тоже имеет brightness 0:43:29.787,0:43:31.959 Какого рода leds здесь есть? У-уу - много всего! 0:43:31.959,0:43:35.430 Например яркость scroll lock индикатора 0:43:35.430,0:43:39.230 В наше время большинство из вас наверное уже не знает что такое светодиодный индикатор scroll lock, 0:43:39.230,0:43:41.300 и ещё менее вероятно что такое сам scroll lock 0:43:41.300,0:43:45.733 Вы могли видеть кнопку на своей клавиатуре с надписью "Scroll Lock" 0:43:45.733,0:43:48.412 На самом деле никто больше не знает что это значит, 0:43:48.412,0:43:50.261 никто в действительности ни для чего её не использует, 0:43:50.261,0:43:54.672 это в основном "мёртвая" кнопка, и "мёртвый" индикатор 0:43:54.672,0:43:56.230 Что если бы вы захотели настроить его 0:43:56.230,0:43:57.880 так, что каждый раз когда вы получаете е-мейл 0:43:57.880,0:43:59.531 ваш scroll lock загорается? 0:43:59.531,0:44:01.712 Потому что нет другой причины чтобы он загорался 0:44:01.712,0:44:05.792 Хорошо, если мы посадим вас в эту конкретную директорию, 0:44:05.792,0:44:07.310 в которой есть место для яркости 0:44:07.310,0:44:08.310 и оно выставлено в ноль, 0:44:08.310,0:44:11.720 что будет если я впишу сюда единицу 0:44:13.210,0:44:16.879 Возможно вам не нужно писать случайные числа в случайные файлы 0:44:16.879,0:44:19.500 в этой директории, потому что вы влияете на директорию ядра, 0:44:19.500,0:44:21.050 как бы, поищите что эти файлы делают. 0:44:21.050,0:44:26.326 В этом конкретном случае, я ношу защитные очки - я поискал сам перед этим 0:44:26.326,0:44:31.497 Так вы не можете сейчас сказать, но на моей клавиатуре индикатор scroll lock теперь светится 0:44:31.497,0:44:35.492 Так, если сейчас я напишу программу которая как бы проверяла е-мейл и всё такое, 0:44:35.492,0:44:37.487 я бы мог в конце концов выполнять программу 0:44:37.487,0:44:39.388 которая бы эхо в этот файл 0:44:39.388,0:44:43.694 и теперь у меня есть способ для моего светодиодного индикатора на моей клавиатуре 0:44:43.694,0:44:45.810 показывать когда я получил новый е-мейл 0:44:46.796,0:44:53.616 На этом месте вы должны знать примерно как обращаться с терминалом и shell, 0:44:53.616,0:44:56.825 и знать достаточно, чтобы выполнять эти простые задания 0:44:56.825,0:44:58.860 По крайней мере, теоретически, 0:44:58.860,0:45:02.370 вам не обязательно больше использовать указать-и-щёлкать интерфейс 0:45:02.370,0:45:03.699 чтобы искать файлы 0:45:03.699,0:45:05.859 Ещё один оставшийся трюк, который вам может понадобится - 0:45:05.859,0:45:08.049 это возможность открыть файл 0:45:08.049,0:45:13.100 до сих пор я только давал вам способы найти файл, 0:45:13.100,0:45:19.748 но одна вещь о которой вы должны знать: xdg-open 0:45:19.748,0:45:22.372 это возможно работает только на Linux, 0:45:22.372,0:45:24.314 на Mac OS я думаю это называется просто open 0:45:24.314,0:45:26.379 на Windows - кто его знает? 0:45:26.379,0:45:31.657 xdg-open вы даёте имя файла - и он открывается в соответствующей программе 0:45:31.657,0:45:35.579 так если вы откроете, если вы введёте xdg-open и HTML файл 0:45:35.579,0:45:38.500 который откроет ваш браузер и откроет этот файл 0:45:38.500,0:45:40.049 И когда у вас будет эта программа, 0:45:40.049,0:45:43.769 в теории - вам не никогда не нужно больше открывать какое-то поисковое окно 0:45:43.769,0:45:45.739 вы можете по другим причинам, 0:45:45.739,0:45:47.333 но в теории вы можете со всем справиться 0:45:47.333,0:45:49.949 используя инструменты с которыми мы сегодня познакомились 0:45:49.949,0:45:53.522 Это всё может выглядеть относительно просто для некоторых из вас, 0:45:53.522,0:45:56.139 но как я уже упомянул это как бы ознакомительный период 0:45:56.139,0:45:57.969 Теперь мы все знаем как работает shell 0:45:57.969,0:46:00.524 и многое из того что мы будем делать на будущих лекциях - 0:46:00.524,0:46:04.647 это использовать эти знания для действительно интересных вещей 0:46:04.647,0:46:06.039 используя shell 0:46:06.039,0:46:10.193 вроде изучения интерфейса - интерфейса который мы будем использовать, 0:46:10.193,0:46:12.640 поэтому важно чтобы мы все это знали 0:46:13.430,0:46:16.259 Мы будем много говорить на следующей лекции 0:46:16.259,0:46:17.849 о том как автоматизировать такие задачи 0:46:17.849,0:46:20.719 Как писать скрипты которые выполняют для вас несколько программ 0:46:20.719,0:46:25.150 И как делать вещи как условные выражения и циклы и прочее, в вашем терминале 0:46:25.150,0:46:28.227 И делать такие вещи как выполнять программу пока не вывалится 0:46:28.227,0:46:30.699 Что может пригодится в классах где вы хотите выполнять что-либо пока 0:46:30.699,0:46:33.390 ваш набор тестов не запорится, к примеру 0:46:33.390,0:46:37.335 Так это тема лекции следующей недели, у вас есть вопрос? 0:46:37.335,0:46:41.397 (aудитория) Да, просто в связи с тем что вы демонстрировали - это вспомогательная директория 0:46:41.397,0:46:48.830 которая предположительно будет работать только если вы выполняете это в Linux, а не в субсистеме Linux ? 0:46:48.830,0:46:54.285 Это хороший вопрос! Я не знаю если субсистема Windows для Linix 0:46:54.285,0:46:56.676 предоставит файловую систему sis. 0:46:56.676,0:47:01.148 Если да - то возможно только в очень малом количестве. 0:47:01.748,0:47:08.479 Оно может. Потому что... Я не знаю, проверьте 0:47:08.479,0:47:12.710 Одно вы увидите - конспекты этой лекции уже онлайн, 0:47:12.710,0:47:16.224 и в самом низу файла - куча упражнений. 0:47:16.224,0:47:18.018 Некоторые из них относительно просты, 0:47:18.018,0:47:19.390 некоторые из них немного сложнее 0:47:19.390,0:47:23.307 И что мы рекомендуем вам сделать, это выполнить их, 0:47:23.307,0:47:25.921 если вы уже это знаете, это пойдёт довольно быстро, 0:47:25.921,0:47:28.471 если нет - это может научить вам много чему 0:47:28.471,0:47:30.888 что вы не знали что не знали 0:47:30.888,0:47:34.204 И на кафедре, сразу после этой лекции, 0:47:34.204,0:47:35.694 мы будем счастливы 0:47:35.694,0:47:36.840 провести вас через всех них, 0:47:36.840,0:47:38.558 или другие команды о которых вы узнаете в процессе 0:47:38.558,0:47:40.530 и захотите узнать как использовать их более эффективно 0:47:40.530,0:47:42.506 И тогда на следующей лекции, 0:47:42.506,0:47:44.260 которая будет завтра, 0:47:44.260,0:47:45.630 мы просто будем считать что 0:47:45.630,0:47:48.357 вы знаете вещи вроде тех которым вас научат упражнения 0:47:48.357,0:47:52.111 На сайте есть так же е-мейл адрес, 0:47:52.111,0:47:53.540 куда вы можете послать нам вопросы 0:47:53.540,0:47:58.050 Если вы подумаете об чём-то поздно ночью 0:47:58.050,0:48:04.480 Есть ли вопросы перед там как мы закончим сегодня? Нет? Нет? 0:48:04.480,0:48:10.370 Отлично, мы будем на кафедре на девятом этаже здания "ворота" ("gates") здания 32 0:48:10.370,0:48:12.150 примерно через 5 минут 0:48:13.340,0:48:15.830 Увижу вас там