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