Lecture 1: Course Overview + The Shell (2020)
-
0:02 - 0:05好的,感谢大家的到来
-
0:05 - 0:08这门课叫做《计算机科学教育中缺失的一课》
-
0:08 - 0:11至少,我们选择这么叫这门课
-
0:11 - 0:13如果你不是为了这门课坐在这, 那你是走错教室了。
-
0:14 - 0:18我们将在这里待大约一个小时,来和大家谈谈这门课的内容
-
0:18 - 0:23而且我想首先和你讲讲为什么我们开展这门课
-
0:23 - 0:31这门课源于Anish和Jose和我在MIT的许多课程担任助教时所做的观察
-
0:31 - 0:35我们作为计算机科学家都知道
-
0:35 - 0:39计算机在处理重复任务和自动化方面非常出色
-
0:39 - 0:41但我们经常没能意识到
-
0:41 - 0:45其实有大量的工具可以让我们自己的学习过程更好
-
0:46 - 0:48我们可以更高效地使用我们的电脑
-
0:48 - 0:52因为我们可以让电脑成为我们的工具
-
0:52 - 0:55而不只是用来开发网页或是软件那些
-
0:57 - 0:59这门课就是试图解决这个问题,
-
0:59 - 1:03试着向大家展示一些工具
-
1:03 - 1:08这些工具可以在日常工作、研究和学习中发挥重要的作用
-
1:09 - 1:15这门课程将教授大家
-
1:15 - 1:18如何充分利用你已经了解的工具
-
1:18 - 1:22同时也会介绍一些以前你不知道的工具
-
1:22 - 1:24以及如何结合那些工具
-
1:24 - 1:29使你变得更强大
-
1:30 - 1:35这门课将分为11节1小时的讲座,
-
1:35 - 1:38每个讲座都将讲一个特定的主题
-
1:38 - 1:41我们的网站上把课程的主题都列出来了
-
1:41 - 1:45以及每个讲座的日期
-
1:45 - 1:47他们大多数是彼此独立的
-
1:47 - 1:50所以你可以选择参加你感兴趣的讲座
-
1:50 - 1:55但我们会假定你一直在跟进,这样当我们到后面的讲座时
-
1:55 - 1:59我将不会从头到尾再教你bash了
-
2:01 - 2:07我们也将把每一节课程的笔记和视频发布到网上
-
2:07 - 2:11我们还没确定发布时间,但这将会在讲座结束之后
-
2:12 - 2:14很明显视频只能在讲座结束之后上传了
-
2:14 - 2:19这门课由本人John、坐在那边的Annesh来负责
-
2:19 - 2:21还有Jose,他虽然现在不在这
-
2:21 - 2:23但是会主讲明天的课程
-
2:24 - 2:29请注意,我们将在这11个讲座中讲很多内容
-
2:29 - 2:32所以我们会相对讲的快一些
-
2:32 - 2:37如果有如何地方跟不上,请一定要打断我们
-
2:37 - 2:40或者你希望我们可以多花点时间讲解某些东西
-
2:40 - 2:43尽管提问打断我们,让我们知道
-
2:43 - 2:51每一节课之后我们将在30号楼(计算机学院的中心)9楼有答疑时间
-
2:51 - 2:55如果你来9楼的等候室,那个门楼那里
-
2:55 - 3:00你可以来试试我们准备的每节课后的练习
-
3:00 - 3:03或者问问课上我们讲的内容
-
3:03 - 3:07或者其他关于高效利用你的电脑的方面
-
3:09 - 3:13由于我们时间有限
-
3:13 - 3:16我们不会讲所有的工具和细节
-
3:16 - 3:21我们只会聚焦于那些有趣的工具,以及使用他们的有趣方法
-
3:21 - 3:25我们不一定非要深入探讨关于它们是如何运作的细节
-
3:25 - 3:27或者更精巧的用例
-
3:27 - 3:30但如果你对这些有疑问,也请来问问我们
-
3:30 - 3:33这里面许多工具我们都使用了很多年
-
3:34 - 3:37我们也许能教你怎么用这些工具做一些有趣的东西
-
3:37 - 3:40总之,充分利用这次上课的机会
-
3:41 - 3:45这节课我不想讲得特别快
-
3:45 - 3:50这节课上, 我会讲一些基础知识
-
3:50 - 3:53在后面的课程中,我们会假定你都掌握
-
3:54 - 3:56比如如何使用shell和终端
-
3:56 - 3:59对于那些不熟悉这些工具的人,我将在讲座中进行解释
-
3:59 - 4:03然后之后我们会很快讲到更高级的工具,以及如何使用它们
-
4:03 - 4:07你可以从课堂笔记中看到我们将要讲的主题
-
4:08 - 4:10那么,现在开始今天的讲座
-
4:10 - 4:12我们今天讲到shell
-
4:13 - 4:18当你熟悉的图形界面无法实现你想要的功能时
-
4:18 - 4:23shell将成为你和电脑交互的主要方式之一
-
4:24 - 4:28图形界面的功能是十分局限的
-
4:28 - 4:32因为你只能使用图形界面上的按钮、滑块和输入框
-
4:33 - 4:37而这些文本工具通常可以可以互相组合起来
-
4:37 - 4:42可以使用许多不同的组合或编程方式实现自动化
-
4:42 - 4:47我们将专注于这些基于命令行或者文本的工具
-
4:47 - 4:51shell就是实现这些工作的主要工具之一
-
4:51 - 4:53对于那些不熟悉shell的人
-
4:53 - 4:57大多数平台都提供了某种形式的shell
-
4:57 - 4:59在Windows上,通常是PowerShell
-
4:59 - 5:02但也有其它Shell可用
-
5:02 - 5:05在Linux上,你可以找到许多终端(Terminal)
-
5:05 - 5:08终端是能显示Shell的窗口
-
5:08 - 5:10你也能找到许多不同类型的Shell
-
5:10 - 5:14其中最常见的Shell是BASH(the Bourne Again SHell)
-
5:15 - 5:16因为BASH是最常见的Shell
-
5:16 - 5:20所以它将会在我们的讲座中重点讲解
-
5:20 - 5:22如果你使用Mac os,你可能也有BASH
-
5:22 - 5:25但是打开终端的时候可能出现一个较旧的版本
-
5:25 - 5:29如果你想跟随我们的课程学习,请随意选择平台
-
5:29 - 5:33但是我们的教学是基于Linux的
-
5:33 - 5:36尽管这些工具在所有平台都能使用
-
5:37 - 5:41如果你不知道怎么安装终端和Shell
-
5:42 - 5:45我们很乐意在办公时间为你展示
-
5:45 - 5:48或者简单地在Google上搜索
-
5:48 - 5:52“你的平台+终端”。 你就能找到教程
-
5:55 - 5:58现在,当你打开终端
-
5:58 - 6:00你会看到一个类似这个的界面
-
6:00 - 6:04通常只有一行在顶部
-
6:04 - 6:06这就是所谓的Shell提示符
-
6:06 - 6:08你可以看到我的Shell提示符是这样的
-
6:08 - 6:11上面有我的用户名,机器的名称
-
6:11 - 6:15当前的路径(我们稍后会讨论路径)
-
6:16 - 6:19还有闪烁的光标等待我的输入
-
6:20 - 6:23这就是Shell提示符,你可以告诉Shell你想让它做什么
-
6:25 - 6:27你也可以配置Shell提示符
-
6:27 - 6:30当你在机器上打开它时,它可能不会完全像这样
-
6:30 - 6:34如果你配置了一些东西,它可能会像这样
-
6:34 - 6:36或者呈现出各种不同的样子
-
6:37 - 6:41我们不会在这个讲座上太多地讨论自定义你的Shell
-
6:41 - 6:45在这里我们只会讲怎么使用Shell做有用的事情
-
6:47 - 6:51这是你与计算机进行文本界面交互的主要方式
-
6:51 - 6:54在Shell提示符后面,你可以输入命令
-
6:54 - 6:57命令通常是相对简单的东西
-
6:58 - 7:01通常是像使用参数启动程序之类的事情
-
7:01 - 7:03这是什么样子的呢?
-
7:03 - 7:05我们可以执行一个date程序
-
7:05 - 7:07输入date,然后按下回车键
-
7:07 - 7:09然后它就会显示日期与时间
-
7:10 - 7:12你也可以在运行程序的时候加上参数
-
7:12 - 7:16这是改变程序行为的一种方式
-
7:17 - 7:19例如,有一个程序叫“echo”
-
7:19 - 7:22echo会直接输出你给它的参数
-
7:22 - 7:27参数就是附加在命令后面以空格分割的东西
-
7:27 - 7:29那么,我们输入 Hello
-
7:29 - 7:31程序就会把hello输出
-
7:31 - 7:32这也许并不令人意外
-
7:33 - 7:35这就是参数的基础使用
-
7:35 - 7:39你可能注意到参数是由空格分隔的
-
7:40 - 7:43你可能会想,那我该怎么输入由多个单词组成的参数呢?
-
7:43 - 7:44你可以用引号把参数包起来
-
7:44 - 7:48这样你就可以做 echo "Hello World" 这样的事情
-
7:49 - 7:51现在echo接收到一个字符串参数
-
7:51 - 7:54包含空格的 "Hello World"
-
7:55 - 7:57你也可以用单引号做这件事
-
7:57 - 7:59单引号和双引号的区别
-
7:59 - 8:02我们会在讲到Bash脚本的时候再讨论
-
8:03 - 8:05你也可以转义单个字符
-
8:06 - 8:11例如 Hello\ World,这样也是可以的
-
8:11 - 8:14后面我们会讲到如何转义
-
8:14 - 8:19和解析各种参数和变量的规则
-
8:20 - 8:22希望你不会遇到太多问题
-
8:22 - 8:26至少要记住空格分隔参数就好
-
8:26 - 8:29例如,如果你想创建一个名为 my photos 的目录
-
8:29 - 8:33你不能只输入 "mkdir my photos"
-
8:33 - 8:36这样会创建两个目录,一个叫 my 另一个叫 photos
-
8:36 - 8:37这可能不是你想要的
-
8:39 - 8:43现在你可能会问的一个问题是
-
8:43 - 8:45当我输入 date 或者 echo 的时候
-
8:45 - 8:48Shell如何知道这些程序是什么
-
8:48 - 8:51Shell怎么知道这些程序要做什么呢?
-
8:52 - 8:57答案是,有一些内置程序,是你的计算机中自带的
-
8:57 - 9:02你的机器可能自带终端
-
9:02 - 9:05或者可能自带Windows资源管理器
-
9:05 - 9:07或者可能自带某种浏览器
-
9:07 - 9:11它还会附带一系列面向命令行的程序
-
9:11 - 9:13这些程序存储在你的文件系统中
-
9:14 - 9:18并且Shell有确定程序存储位置的方法
-
9:18 - 9:21简而言之,搜索程序的方法
-
9:21 - 9:27它通过一种名为环境变量的东西来实现这一点
-
9:27 - 9:31环境变量是一种变量,就像编程语言中的变量一样
-
9:32 - 9:35事实证明,Shell,特别是Bash(the Bourne Again SHell)
-
9:35 - 9:37真的是一种编程语言
-
9:37 - 9:42这里的提示符不仅能运行带有参数的程序
-
9:42 - 9:47你还可以做 while循环、for循环、条件判断……
-
9:47 - 9:51不仅如此,你甚至可以在Shell中定义函数、变量
-
9:51 - 9:55我们将在下一节课中讲解这些内容,也就是Shell 脚本
-
9:57 - 10:00现在,我们只看看这个特定的环境变量
-
10:00 - 10:04环境变量是在启动Shell时设置的
-
10:04 - 10:06不需要每次启动Shell都要设置的东西
-
10:06 - 10:08有一堆这样的变量已经设置好了
-
10:08 - 10:09例如你的主目录在哪里
-
10:09 - 10:11你的用户名是什么
-
10:11 - 10:16要查看搜索路径,有一个重要的变量,即路径变量
-
10:16 - 10:19如果我输入 echo $PATH
-
10:19 - 10:23它会显示路径变量的列表
-
10:23 - 10:26Shell就是在这些路径里搜索程序的
-
10:26 - 10:30你可能会注意到这是一个由冒号 : 分隔的列表
-
10:30 - 10:32它可能有点长并且难以阅读
-
10:32 - 10:37但是本质是,每当你输入程序名时
-
10:37 - 10:41Bash就会在这个路径列表中搜索
-
10:41 - 10:44并在每个目录中查找
-
10:44 - 10:48与你输入的名称相同的程序或文件
-
10:49 - 10:51因此,当我尝试运行 date 或者 echo 时
-
10:51 - 10:53它将逐个遍历路径列表
-
10:53 - 10:56直到在某个路径找到叫 date 或者 echo 的程序
-
10:56 - 10:58然后运行对应的程序
-
10:58 - 11:00如果我们想知道实际运行的是哪个程序
-
11:00 - 11:02可以通过一个叫 which 的命令
-
11:02 - 11:04我输入 which echo
-
11:05 - 11:08它会告诉我,如果我想运行一个叫 echo 的程序
-
11:08 - 11:10我会运行这一个
-
11:10 - 11:14现在我们停下来来谈谈路径是什么
-
11:14 - 11:19路径是一种描述计算机上文件位置的方式
-
11:19 - 11:24在 Linux 和 Mac OS上,路径是由斜杠分隔的,正斜杠 /
-
11:25 - 11:30你会看到这是根目录
-
11:30 - 11:35斜杠在路径的开头,表示这是文件系统的顶部
-
11:35 - 11:39然后进入到名为 usr 的目录
-
11:39 - 11:42然后进入到名为 bin 的目录
-
11:42 - 11:44然后查找名为 echo 的文件
-
11:44 - 11:48在 Windows上,路径是由反斜杠 \ 分隔的
-
11:49 - 11:54在 Linux 和 Mac OS 中,所有内容都属于根命名空间
-
11:54 - 11:57所有的绝对路径都以斜杠开头
-
11:58 - 12:01在 Windows 下,每个分区都有一个根目录
-
12:02 - 12:06你可能会看到类似于 C:\ D:\
-
12:06 - 12:14所以在Windows中,每个驱动器都有独立的文件系统路径层次结构。
-
12:14 - 12:17在 Linux 和 Mac OS 中,它们都挂载到了同一个命名空间下
-
12:18 - 12:21你可能已经注意到我说了绝对路径这个词
-
12:21 - 12:23你可能不知道这是什么意思
-
12:24 - 12:30绝对路径是能完全确定文件位置的路径
-
12:30 - 12:34在这种情况下,这个路径能完全确定 echo 程序的位置
-
12:34 - 12:38它提供了指向该文件的完整路径
-
12:38 - 12:41但也存在相对路径的概念
-
12:42 - 12:46相对路径是相对于当前位置的路径
-
12:48 - 12:54确定当前位置的方法是输入pwd(print working directory)
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) | |
![]() |
mightnire edited Chinese, Simplified subtitles for Lecture 1: Course Overview + The Shell (2020) |