[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.57,0:00:04.65,Default,,0000,0000,0000,,好的,感谢大家的到来 Dialogue: 0,0:00:04.65,0:00:08.37,Default,,0000,0000,0000,,这门课叫做《计算机科学教育中缺失的一课》 Dialogue: 0,0:00:08.37,0:00:10.55,Default,,0000,0000,0000,,至少,我们选择这么叫这门课 Dialogue: 0,0:00:10.59,0:00:13.45,Default,,0000,0000,0000,,如果你不是为了这门课坐在这, 那你是走错教室了。 Dialogue: 0,0:00:13.62,0:00:17.56,Default,,0000,0000,0000,,我们将在这里待大约一个小时,来和大家谈谈这门课的内容 Dialogue: 0,0:00:18.46,0:00:23.05,Default,,0000,0000,0000,,而且我想首先和你讲讲为什么我们开展这门课 Dialogue: 0,0:00:23.33,0:00:30.73,Default,,0000,0000,0000,,这门课源于Anish和Jose和我在MIT的许多课程担任助教时所做的观察 Dialogue: 0,0:00:31.20,0:00:34.74,Default,,0000,0000,0000,,我们作为计算机科学家都知道 Dialogue: 0,0:00:34.74,0:00:38.61,Default,,0000,0000,0000,,计算机在处理重复任务和自动化方面非常出色 Dialogue: 0,0:00:38.64,0:00:40.83,Default,,0000,0000,0000,,但我们经常没能意识到 Dialogue: 0,0:00:40.83,0:00:44.92,Default,,0000,0000,0000,,其实有大量的工具可以让我们自己的学习过程更好 Dialogue: 0,0:00:45.50,0:00:48.37,Default,,0000,0000,0000,,我们可以更高效地使用我们的电脑 Dialogue: 0,0:00:48.37,0:00:51.99,Default,,0000,0000,0000,,因为我们可以让电脑成为我们的工具 Dialogue: 0,0:00:51.74,0:00:55.36,Default,,0000,0000,0000,,而不只是用来开发网页或是软件那些 Dialogue: 0,0:00:57.26,0:00:59.28,Default,,0000,0000,0000,,这门课就是试图解决这个问题, Dialogue: 0,0:00:59.28,0:01:02.58,Default,,0000,0000,0000,,试着向大家展示一些工具 Dialogue: 0,0:01:02.58,0:01:07.75,Default,,0000,0000,0000,,这些工具可以在日常工作、研究和学习中发挥重要的作用 Dialogue: 0,0:01:09.04,0:01:14.87,Default,,0000,0000,0000,,这门课程将教授大家 Dialogue: 0,0:01:14.91,0:01:18.20,Default,,0000,0000,0000,,如何充分利用你已经了解的工具 Dialogue: 0,0:01:18.20,0:01:21.85,Default,,0000,0000,0000,,同时也会介绍一些以前你不知道的工具 Dialogue: 0,0:01:21.85,0:01:23.52,Default,,0000,0000,0000,,以及如何结合那些工具 Dialogue: 0,0:01:23.52,0:01:28.94,Default,,0000,0000,0000,,使你变得更强大 Dialogue: 0,0:01:29.97,0:01:34.63,Default,,0000,0000,0000,,这门课将分为11节1小时的讲座, Dialogue: 0,0:01:34.63,0:01:38.02,Default,,0000,0000,0000,,每个讲座都将讲一个特定的主题 Dialogue: 0,0:01:38.40,0:01:41.44,Default,,0000,0000,0000,,我们的网站上把课程的主题都列出来了 Dialogue: 0,0:01:41.44,0:01:44.99,Default,,0000,0000,0000,,以及每个讲座的日期 Dialogue: 0,0:01:44.99,0:01:47.21,Default,,0000,0000,0000,,他们大多数是彼此独立的 Dialogue: 0,0:01:47.21,0:01:50.45,Default,,0000,0000,0000,,所以你可以选择参加你感兴趣的讲座 Dialogue: 0,0:01:50.45,0:01:55.10,Default,,0000,0000,0000,,但我们会假定你一直在跟进,这样当我们到后面的讲座时 Dialogue: 0,0:01:55.11,0:01:58.58,Default,,0000,0000,0000,,我将不会从头到尾再教你bash了 Dialogue: 0,0:02:00.97,0:02:07.26,Default,,0000,0000,0000,,我们也将把每一节课程的笔记和视频发布到网上 Dialogue: 0,0:02:07.48,0:02:11.30,Default,,0000,0000,0000,,我们还没确定发布时间,但这将会在讲座结束之后 Dialogue: 0,0:02:11.84,0:02:13.78,Default,,0000,0000,0000,,很明显视频只能在讲座结束之后上传了 Dialogue: 0,0:02:14.41,0:02:18.66,Default,,0000,0000,0000,,这门课由本人John、坐在那边的Annesh来负责 Dialogue: 0,0:02:18.66,0:02:20.85,Default,,0000,0000,0000,,还有Jose,他虽然现在不在这 Dialogue: 0,0:02:20.85,0:02:23.29,Default,,0000,0000,0000,,但是会主讲明天的课程 Dialogue: 0,0:02:23.72,0:02:28.70,Default,,0000,0000,0000,,请注意,我们将在这11个讲座中讲很多内容 Dialogue: 0,0:02:29.18,0:02:32.43,Default,,0000,0000,0000,,所以我们会相对讲的快一些 Dialogue: 0,0:02:32.43,0:02:37.08,Default,,0000,0000,0000,,如果有如何地方跟不上,请一定要打断我们 Dialogue: 0,0:02:37.08,0:02:39.81,Default,,0000,0000,0000,,或者你希望我们可以多花点时间讲解某些东西 Dialogue: 0,0:02:39.81,0:02:43.24,Default,,0000,0000,0000,,尽管提问打断我们,让我们知道 Dialogue: 0,0:02:43.24,0:02:51.11,Default,,0000,0000,0000,,每一节课之后我们将在30号楼(计算机学院的中心)9楼有答疑时间 Dialogue: 0,0:02:51.11,0:02:55.14,Default,,0000,0000,0000,,如果你来9楼的等候室,那个门楼那里 Dialogue: 0,0:02:55.14,0:02:59.75,Default,,0000,0000,0000,,你可以来试试我们准备的每节课后的练习 Dialogue: 0,0:02:59.75,0:03:03.44,Default,,0000,0000,0000,,或者问问课上我们讲的内容 Dialogue: 0,0:03:03.44,0:03:07.10,Default,,0000,0000,0000,,或者其他关于高效利用你的电脑的方面 Dialogue: 0,0:03:09.06,0:03:12.74,Default,,0000,0000,0000,,由于我们时间有限 Dialogue: 0,0:03:12.74,0:03:16.08,Default,,0000,0000,0000,,我们不会讲所有的工具和细节 Dialogue: 0,0:03:16.08,0:03:21.43,Default,,0000,0000,0000,,我们只会聚焦于那些有趣的工具,以及使用他们的有趣方法 Dialogue: 0,0:03:21.43,0:03:25.11,Default,,0000,0000,0000,,我们不一定非要深入探讨关于它们是如何运作的细节 Dialogue: 0,0:03:25.11,0:03:26.60,Default,,0000,0000,0000,,或者更精巧的用例 Dialogue: 0,0:03:26.60,0:03:30.05,Default,,0000,0000,0000,,但如果你对这些有疑问,也请来问问我们 Dialogue: 0,0:03:30.05,0:03:33.01,Default,,0000,0000,0000,,这里面许多工具我们都使用了很多年 Dialogue: 0,0:03:33.69,0:03:36.68,Default,,0000,0000,0000,,我们也许能教你怎么用这些工具做一些有趣的东西 Dialogue: 0,0:03:37.36,0:03:39.96,Default,,0000,0000,0000,,总之,充分利用这次上课的机会 Dialogue: 0,0:03:40.99,0:03:44.80,Default,,0000,0000,0000,,这节课我不想讲得特别快 Dialogue: 0,0:03:45.10,0:03:50.33,Default,,0000,0000,0000,,这节课上, 我会讲一些基础知识 Dialogue: 0,0:03:50.36,0:03:53.34,Default,,0000,0000,0000,,在后面的课程中,我们会假定你都掌握 Dialogue: 0,0:03:53.50,0:03:55.65,Default,,0000,0000,0000,,比如如何使用shell和终端 Dialogue: 0,0:03:55.65,0:03:58.85,Default,,0000,0000,0000,,对于那些不熟悉这些工具的人,我将在讲座中进行解释 Dialogue: 0,0:03:58.93,0:04:03.19,Default,,0000,0000,0000,,然后之后我们会很快讲到更高级的工具,以及如何使用它们 Dialogue: 0,0:04:03.19,0:04:06.99,Default,,0000,0000,0000,,你可以从课堂笔记中看到我们将要讲的主题 Dialogue: 0,0:04:08.18,0:04:10.49,Default,,0000,0000,0000,,那么,现在开始今天的讲座 Dialogue: 0,0:04:10.49,0:04:12.36,Default,,0000,0000,0000,,我们今天讲到shell Dialogue: 0,0:04:12.67,0:04:17.59,Default,,0000,0000,0000,,当你熟悉的图形界面无法实现你想要的功能时 Dialogue: 0,0:04:17.59,0:04:23.20,Default,,0000,0000,0000,,shell将成为你和电脑交互的主要方式之一 Dialogue: 0,0:04:24.47,0:04:27.92,Default,,0000,0000,0000,,图形界面的功能是十分局限的 Dialogue: 0,0:04:27.92,0:04:32.18,Default,,0000,0000,0000,,因为你只能使用图形界面上的按钮、滑块和输入框 Dialogue: 0,0:04:32.87,0:04:37.29,Default,,0000,0000,0000,,而这些文本工具通常可以可以互相组合起来 Dialogue: 0,0:04:37.29,0:04:42.08,Default,,0000,0000,0000,,可以使用许多不同的组合或编程方式实现自动化 Dialogue: 0,0:04:42.39,0:04:46.78,Default,,0000,0000,0000,,我们将专注于这些基于命令行或者文本的工具 Dialogue: 0,0:04:47.28,0:04:51.28,Default,,0000,0000,0000,,shell就是实现这些工作的主要工具之一 Dialogue: 0,0:04:51.28,0:04:53.35,Default,,0000,0000,0000,,对于那些不熟悉shell的人 Dialogue: 0,0:04:53.35,0:04:56.53,Default,,0000,0000,0000,,大多数平台都提供了某种形式的shell Dialogue: 0,0:04:56.53,0:04:58.84,Default,,0000,0000,0000,,在Windows上,通常是PowerShell Dialogue: 0,0:04:59.04,0:05:01.52,Default,,0000,0000,0000,,但也有其它Shell可用 Dialogue: 0,0:05:01.97,0:05:04.76,Default,,0000,0000,0000,,在Linux上,你可以找到许多终端(Terminal) Dialogue: 0,0:05:04.94,0:05:07.82,Default,,0000,0000,0000,,终端是能显示Shell的窗口 Dialogue: 0,0:05:07.82,0:05:10.24,Default,,0000,0000,0000,,你也能找到许多不同类型的Shell Dialogue: 0,0:05:10.40,0:05:14.40,Default,,0000,0000,0000,,其中最常见的Shell是BASH(the Bourne Again SHell) Dialogue: 0,0:05:14.85,0:05:16.42,Default,,0000,0000,0000,,因为BASH是最常见的Shell Dialogue: 0,0:05:16.42,0:05:19.55,Default,,0000,0000,0000,,所以它将会在我们的讲座中重点讲解 Dialogue: 0,0:05:19.64,0:05:22.46,Default,,0000,0000,0000,,如果你使用Mac os,你可能也有BASH Dialogue: 0,0:05:22.46,0:05:25.27,Default,,0000,0000,0000,,但是打开终端的时候可能出现一个较旧的版本 Dialogue: 0,0:05:25.41,0:05:28.90,Default,,0000,0000,0000,,如果你想跟随我们的课程学习,请随意选择平台 Dialogue: 0,0:05:28.90,0:05:32.90,Default,,0000,0000,0000,,但是我们的教学是基于Linux的 Dialogue: 0,0:05:32.90,0:05:35.54,Default,,0000,0000,0000,,尽管这些工具在所有平台都能使用 Dialogue: 0,0:05:37.41,0:05:41.41,Default,,0000,0000,0000,,如果你不知道怎么安装终端和Shell Dialogue: 0,0:05:41.70,0:05:44.52,Default,,0000,0000,0000,,我们很乐意在办公时间为你展示 Dialogue: 0,0:05:44.52,0:05:47.77,Default,,0000,0000,0000,,或者简单地在Google上搜索 Dialogue: 0,0:05:47.77,0:05:52.11,Default,,0000,0000,0000,,“你的平台+终端”。 你就能找到教程 Dialogue: 0,0:05:55.14,0:05:57.78,Default,,0000,0000,0000,,现在,当你打开终端 Dialogue: 0,0:05:57.78,0:06:00.28,Default,,0000,0000,0000,,你会看到一个类似这个的界面 Dialogue: 0,0:06:00.28,0:06:04.04,Default,,0000,0000,0000,,通常只有一行在顶部 Dialogue: 0,0:06:04.04,0:06:06.02,Default,,0000,0000,0000,,这就是所谓的Shell提示符 Dialogue: 0,0:06:06.02,0:06:08.46,Default,,0000,0000,0000,,你可以看到我的Shell提示符是这样的 Dialogue: 0,0:06:08.46,0:06:11.23,Default,,0000,0000,0000,,上面有我的用户名,机器的名称 Dialogue: 0,0:06:11.23,0:06:15.23,Default,,0000,0000,0000,,当前的路径(我们稍后会讨论路径) Dialogue: 0,0:06:15.78,0:06:19.44,Default,,0000,0000,0000,,还有闪烁的光标等待我的输入 Dialogue: 0,0:06:19.70,0:06:22.69,Default,,0000,0000,0000,,这就是Shell提示符,你可以告诉Shell你想让它做什么 Dialogue: 0,0:06:24.95,0:06:27.16,Default,,0000,0000,0000,,你也可以配置Shell提示符 Dialogue: 0,0:06:27.17,0:06:30.02,Default,,0000,0000,0000,,当你在机器上打开它时,它可能不会完全像这样 Dialogue: 0,0:06:30.18,0:06:33.84,Default,,0000,0000,0000,,如果你配置了一些东西,它可能会像这样 Dialogue: 0,0:06:33.84,0:06:35.86,Default,,0000,0000,0000,,或者呈现出各种不同的样子 Dialogue: 0,0:06:37.23,0:06:41.23,Default,,0000,0000,0000,,我们不会在这个讲座上太多地讨论自定义你的Shell Dialogue: 0,0:06:41.48,0:06:45.48,Default,,0000,0000,0000,,在这里我们只会讲怎么使用Shell做有用的事情 Dialogue: 0,0:06:47.44,0:06:51.39,Default,,0000,0000,0000,,这是你与计算机进行文本界面交互的主要方式 Dialogue: 0,0:06:51.39,0:06:54.27,Default,,0000,0000,0000,,在Shell提示符后面,你可以输入命令 Dialogue: 0,0:06:54.27,0:06:57.14,Default,,0000,0000,0000,,命令通常是相对简单的东西 Dialogue: 0,0:06:57.62,0:07:01.43,Default,,0000,0000,0000,,通常是像使用参数启动程序之类的事情 Dialogue: 0,0:07:01.44,0:07:02.50,Default,,0000,0000,0000,,这是什么样子的呢? Dialogue: 0,0:07:02.50,0:07:04.83,Default,,0000,0000,0000,,我们可以执行一个date程序 Dialogue: 0,0:07:04.83,0:07:06.75,Default,,0000,0000,0000,,输入date,然后按下回车键 Dialogue: 0,0:07:06.75,0:07:09.06,Default,,0000,0000,0000,,然后它就会显示日期与时间 Dialogue: 0,0:07:09.80,0:07:12.30,Default,,0000,0000,0000,,你也可以在运行程序的时候加上参数 Dialogue: 0,0:07:12.30,0:07:16.30,Default,,0000,0000,0000,,这是改变程序行为的一种方式 Dialogue: 0,0:07:16.71,0:07:18.80,Default,,0000,0000,0000,,例如,有一个程序叫“echo” Dialogue: 0,0:07:18.80,0:07:22.41,Default,,0000,0000,0000,,echo会直接输出你给它的参数 Dialogue: 0,0:07:22.41,0:07:26.81,Default,,0000,0000,0000,,参数就是附加在命令后面以空格分割的东西 Dialogue: 0,0:07:26.81,0:07:28.77,Default,,0000,0000,0000,,那么,我们输入 Hello Dialogue: 0,0:07:28.77,0:07:30.55,Default,,0000,0000,0000,,程序就会把hello输出 Dialogue: 0,0:07:31.36,0:07:32.50,Default,,0000,0000,0000,,这也许并不令人意外 Dialogue: 0,0:07:32.71,0:07:35.25,Default,,0000,0000,0000,,这就是参数的基础使用 Dialogue: 0,0:07:35.43,0:07:39.18,Default,,0000,0000,0000,,你可能注意到参数是由空格分隔的 Dialogue: 0,0:07:39.52,0:07:42.54,Default,,0000,0000,0000,,你可能会想,那我该怎么输入由多个单词组成的参数呢? Dialogue: 0,0:07:42.91,0:07:44.20,Default,,0000,0000,0000,,你可以用引号把参数包起来 Dialogue: 0,0:07:44.20,0:07:47.56,Default,,0000,0000,0000,,这样你就可以做 echo "Hello World" 这样的事情 Dialogue: 0,0:07:48.72,0:07:51.50,Default,,0000,0000,0000,,现在echo接收到一个字符串参数 Dialogue: 0,0:07:51.50,0:07:54.27,Default,,0000,0000,0000,,包含空格的 "Hello World" Dialogue: 0,0:07:54.99,0:07:57.13,Default,,0000,0000,0000,,你也可以用单引号做这件事 Dialogue: 0,0:07:57.13,0:07:59.25,Default,,0000,0000,0000,,单引号和双引号的区别 Dialogue: 0,0:07:59.33,0:08:01.74,Default,,0000,0000,0000,,我们会在讲到Bash脚本的时候再讨论 Dialogue: 0,0:08:03.36,0:08:04.98,Default,,0000,0000,0000,,你也可以转义单个字符 Dialogue: 0,0:08:05.94,0:08:10.98,Default,,0000,0000,0000,,例如 Hello\ World,这样也是可以的 Dialogue: 0,0:08:11.20,0:08:13.84,Default,,0000,0000,0000,,后面我们会讲到如何转义 Dialogue: 0,0:08:13.84,0:08:19.33,Default,,0000,0000,0000,,和解析各种参数和变量的规则 Dialogue: 0,0:08:19.55,0:08:22.38,Default,,0000,0000,0000,,希望你不会遇到太多问题 Dialogue: 0,0:08:22.38,0:08:25.77,Default,,0000,0000,0000,,至少要记住空格分隔参数就好 Dialogue: 0,0:08:25.94,0:08:29.42,Default,,0000,0000,0000,,例如,如果你想创建一个名为 my photos 的目录 Dialogue: 0,0:08:29.50,0:08:32.62,Default,,0000,0000,0000,,你不能只输入 "mkdir my photos" Dialogue: 0,0:08:32.62,0:08:35.83,Default,,0000,0000,0000,,这样会创建两个目录,一个叫 my 另一个叫 photos Dialogue: 0,0:08:35.83,0:08:37.36,Default,,0000,0000,0000,,这可能不是你想要的 Dialogue: 0,0:08:39.12,0:08:42.54,Default,,0000,0000,0000,,现在你可能会问的一个问题是 Dialogue: 0,0:08:42.54,0:08:45.32,Default,,0000,0000,0000,,当我输入 date 或者 echo 的时候 Dialogue: 0,0:08:45.32,0:08:48.18,Default,,0000,0000,0000,,Shell如何知道这些程序是什么 Dialogue: 0,0:08:48.18,0:08:51.15,Default,,0000,0000,0000,,Shell怎么知道这些程序要做什么呢? Dialogue: 0,0:08:52.36,0:08:57.14,Default,,0000,0000,0000,,答案是,有一些内置程序,是你的计算机中自带的 Dialogue: 0,0:08:57.35,0:09:01.54,Default,,0000,0000,0000,,你的机器可能自带终端 Dialogue: 0,0:09:01.54,0:09:04.90,Default,,0000,0000,0000,,或者可能自带Windows资源管理器 Dialogue: 0,0:09:04.90,0:09:07.19,Default,,0000,0000,0000,,或者可能自带某种浏览器 Dialogue: 0,0:09:07.19,0:09:10.63,Default,,0000,0000,0000,,它还会附带一系列面向命令行的程序 Dialogue: 0,0:09:10.63,0:09:13.29,Default,,0000,0000,0000,,这些程序存储在你的文件系统中 Dialogue: 0,0:09:13.63,0:09:18.30,Default,,0000,0000,0000,,并且Shell有确定程序存储位置的方法 Dialogue: 0,0:09:18.30,0:09:20.77,Default,,0000,0000,0000,,简而言之,搜索程序的方法 Dialogue: 0,0:09:21.19,0:09:26.99,Default,,0000,0000,0000,,它通过一种名为环境变量的东西来实现这一点 Dialogue: 0,0:09:27.41,0:09:31.41,Default,,0000,0000,0000,,环境变量是一种变量,就像编程语言中的变量一样 Dialogue: 0,0:09:31.86,0:09:35.20,Default,,0000,0000,0000,,事实证明,Shell,特别是Bash(the Bourne Again SHell) Dialogue: 0,0:09:35.20,0:09:37.31,Default,,0000,0000,0000,,真的是一种编程语言 Dialogue: 0,0:09:37.31,0:09:42.35,Default,,0000,0000,0000,,这里的提示符不仅能运行带有参数的程序 Dialogue: 0,0:09:42.35,0:09:46.66,Default,,0000,0000,0000,,你还可以做 while循环、for循环、条件判断…… Dialogue: 0,0:09:46.66,0:09:51.30,Default,,0000,0000,0000,,不仅如此,你甚至可以在Shell中定义函数、变量 Dialogue: 0,0:09:51.30,0:09:54.79,Default,,0000,0000,0000,,我们将在下一节课中讲解这些内容,也就是Shell 脚本 Dialogue: 0,0:09:56.89,0:09:59.88,Default,,0000,0000,0000,,现在,我们只看看这个特定的环境变量 Dialogue: 0,0:09:59.89,0:10:03.54,Default,,0000,0000,0000,,环境变量是在启动Shell时设置的 Dialogue: 0,0:10:03.54,0:10:06.40,Default,,0000,0000,0000,,不需要每次启动Shell都要设置的东西 Dialogue: 0,0:10:06.40,0:10:07.80,Default,,0000,0000,0000,,有一堆这样的变量已经设置好了 Dialogue: 0,0:10:07.80,0:10:09.39,Default,,0000,0000,0000,,例如你的主目录在哪里 Dialogue: 0,0:10:09.39,0:10:10.58,Default,,0000,0000,0000,,你的用户名是什么 Dialogue: 0,0:10:10.58,0:10:15.56,Default,,0000,0000,0000,,要查看搜索路径,有一个重要的变量,即路径变量 Dialogue: 0,0:10:15.94,0:10:18.82,Default,,0000,0000,0000,,如果我输入 echo $PATH Dialogue: 0,0:10:18.83,0:10:22.90,Default,,0000,0000,0000,,它会显示路径变量的列表 Dialogue: 0,0:10:22.90,0:10:25.52,Default,,0000,0000,0000,,Shell就是在这些路径里搜索程序的 Dialogue: 0,0:10:25.98,0:10:29.78,Default,,0000,0000,0000,,你可能会注意到这是一个由冒号 : 分隔的列表 Dialogue: 0,0:10:29.78,0:10:31.100,Default,,0000,0000,0000,,它可能有点长并且难以阅读 Dialogue: 0,0:10:32.35,0:10:36.56,Default,,0000,0000,0000,,但是本质是,每当你输入程序名时 Dialogue: 0,0:10:36.56,0:10:40.58,Default,,0000,0000,0000,,Bash就会在这个路径列表中搜索 Dialogue: 0,0:10:40.58,0:10:44.17,Default,,0000,0000,0000,,并在每个目录中查找 Dialogue: 0,0:10:44.17,0:10:47.93,Default,,0000,0000,0000,,与你输入的名称相同的程序或文件 Dialogue: 0,0:10:48.76,0:10:50.93,Default,,0000,0000,0000,,因此,当我尝试运行 date 或者 echo 时 Dialogue: 0,0:10:50.93,0:10:52.82,Default,,0000,0000,0000,,它将逐个遍历路径列表 Dialogue: 0,0:10:52.82,0:10:55.95,Default,,0000,0000,0000,,直到在某个路径找到叫 date 或者 echo 的程序 Dialogue: 0,0:10:55.95,0:10:57.80,Default,,0000,0000,0000,,然后运行对应的程序 Dialogue: 0,0:10:57.77,0:11:00.28,Default,,0000,0000,0000,,如果我们想知道实际运行的是哪个程序 Dialogue: 0,0:11:00.28,0:11:02.11,Default,,0000,0000,0000,,可以通过一个叫 which 的命令 Dialogue: 0,0:11:02.23,0:11:04.40,Default,,0000,0000,0000,,我输入 which echo Dialogue: 0,0:11:04.58,0:11:08.44,Default,,0000,0000,0000,,它会告诉我,如果我想运行一个叫 echo 的程序 Dialogue: 0,0:11:08.44,0:11:09.68,Default,,0000,0000,0000,,我会运行这一个 Dialogue: 0,0:11:10.37,0:11:14.37,Default,,0000,0000,0000,,现在我们停下来来谈谈路径是什么 Dialogue: 0,0:11:14.37,0:11:18.62,Default,,0000,0000,0000,,路径是一种描述计算机上文件位置的方式 Dialogue: 0,0:11:19.13,0:11:24.28,Default,,0000,0000,0000,,在 Linux 和 Mac OS上,路径是由斜杠分隔的,正斜杠 / Dialogue: 0,0:11:24.62,0:11:29.58,Default,,0000,0000,0000,,你会看到这是根目录 Dialogue: 0,0:11:29.81,0:11:34.61,Default,,0000,0000,0000,,斜杠在路径的开头,表示这是文件系统的顶部 Dialogue: 0,0:11:34.70,0:11:38.70,Default,,0000,0000,0000,,然后进入到名为 usr 的目录 Dialogue: 0,0:11:38.70,0:11:41.62,Default,,0000,0000,0000,,然后进入到名为 bin 的目录 Dialogue: 0,0:11:41.62,0:11:43.69,Default,,0000,0000,0000,,然后查找名为 echo 的文件 Dialogue: 0,0:11:44.33,0:11:48.38,Default,,0000,0000,0000,,在 Windows上,路径是由反斜杠 \ 分隔的 Dialogue: 0,0:11:48.75,0:11:53.56,Default,,0000,0000,0000,,在 Linux 和 Mac OS 中,所有内容都属于根命名空间 Dialogue: 0,0:11:53.56,0:11:57.38,Default,,0000,0000,0000,,所有的绝对路径都以斜杠开头 Dialogue: 0,0:11:57.80,0:12:01.35,Default,,0000,0000,0000,,在 Windows 下,每个分区都有一个根目录 Dialogue: 0,0:12:01.79,0:12:05.79,Default,,0000,0000,0000,,你可能会看到类似于 C:\ D:\ Dialogue: 0,0:12:06.40,0:12:13.84,Default,,0000,0000,0000,,所以在Windows中,每个驱动器都有独立的文件系统路径层次结构。 Dialogue: 0,0:12:13.84,0:12:16.70,Default,,0000,0000,0000,,在 Linux 和 Mac OS 中,它们都挂载到了同一个命名空间下 Dialogue: 0,0:12:17.64,0:12:20.80,Default,,0000,0000,0000,,你可能已经注意到我说了绝对路径这个词 Dialogue: 0,0:12:20.82,0:12:23.12,Default,,0000,0000,0000,,你可能不知道这是什么意思 Dialogue: 0,0:12:23.60,0:12:29.54,Default,,0000,0000,0000,,绝对路径是能完全确定文件位置的路径 Dialogue: 0,0:12:29.86,0:12:34.02,Default,,0000,0000,0000,,在这种情况下,这个路径能完全确定 echo 程序的位置 Dialogue: 0,0:12:34.03,0:12:37.57,Default,,0000,0000,0000,,它提供了指向该文件的完整路径 Dialogue: 0,0:12:37.80,0:12:41.44,Default,,0000,0000,0000,,但也存在相对路径的概念 Dialogue: 0,0:12:42.43,0:12:46.43,Default,,0000,0000,0000,,相对路径是相对于当前位置的路径 Dialogue: 0,0:12:48.41,0:12:54.50,Default,,0000,0000,0000,,确定当前位置的方法是输入pwd(print working directory)