>> [音乐播放]
>> 道格·劳埃德：OK。
因此，让我们来谈谈如何 使用Linux命令行。
现在，CS50 IDE，或 事实上，即使是CS50家电，
如果你熟悉或 你服用CS50的是旧版本，
是一个基于云的机 它运行Ubuntu的，
这是众多风格中的一种 的Linux操作系统。
Linux操作系统是 程序员的青睐，
因为它只是转凉，对吗？
>> 许多现代的Linux发行版 具有图形用户界面，
我们也呼吁图形用户界面，G-U-I，至 便于鼠标导航，
你可能熟悉， 如果你是一个Windows或Mac用户，
在你的鼠标移动， 上的图标双击，等等。
不过尽管如此，作为一个程序员， 并且即使IDE
包含能力 做一些图形用户
的东西，点击， 拖，和所有，
你仍然在使用 终端窗口相当频繁。
你可以做很多的 同样的任务，你可以
做一个鼠标与键盘命令。
我们要谈一点点 一些这些命令是什么
现在是正确的。
>> 现在，可以使用这些命令 在任何基于Unix的操作系统
系统，该系统包括Linux中， 还包括的Mac OS。
如果你打开​​终端在Mac上， 您可以使用这些精确的命令。
Windows还具有命令 提示，但一些命令
略有不同，所以 它实际上并没有正常工作，
因为Windows是不是 基于Unix的系统。
>> 因此，让我们来看看一些 这些Linux的命令。
第一个，你会 可能使用了很多的LS。
这是一个小写的L，其次是 小写的s，这是短期的名单。
什么list命令的作用是它 给你所有的文件的读出
而在当前目录中的文件夹。
所以你可以看到一切你可以 获得从您当前所在。
>> 所以，我已经打开了这里的CS50 IDE。
而且我要放大，在一 第二个给你仔细看看，
但这里的总体情况 什么样的IDE样子。
在左边，你可以看到，我们有 文件树，你可能
熟悉，双击，和 文件和文件夹，和所有的东西。
所以这是仍然存在 在CS50设备。
在中心的顶部就是你 要编写代码，一旦
你点击一个文件。
和底部，我们 有一个终端窗口，
这是我们可以执行 这些终端命令。
>> 我要放大，在 和头部在这里，只
告诉你，其实，我可以 点击这些文件和文件夹。
所以很明显，在那里我目前，我有 两个文件夹，名为pset0和PSET1，
和三个文件，一个叫 你好，一个叫hello.c的，
和一个叫hello.txt的。
>> 因此，让我们向下移动到终端 窗口并获得一探究竟。
所以，我们刚才也谈到，再次，关于 事实是，我们有三个文件和两个
文件夹在当前目录。
如果我输入ls，这再次 就是命令列出
当前的内容 目录下，然后我敲回车，
看看我看到的，打招呼，hello.c中， hello.txt的，pset0和PSET1。
>> pset0和PSET1是 蓝色，以表示
你，这些都是目录 我们可以导航到。
我们将学习一点 有关如何定位位
成在一分钟内的目录。
和所有其他的事情是有色黑色， 如果它是一个文本文件或源代码
文件，和绿色，如果 这是一个可执行文件。
所以很明显，这意味着，我 可以运行一个名为程序，你好。
这就是绿色的一个人也没有意思。
但基本上，键入 ls命令允许
我看一切存在 在我的当前目录中，这
符合我们在这里看到，在 的相同的图形显示。
下一个命令，你会 可能使用相当多
是CD，小写字母c，小写研发， 这是短期改变目录。
这使我们能够做什么，我是 说起一秒钟前，这
是间导航 在命令目录
线，而不是 在文件夹双击。
因此，如果我们键入CD，然后 一个目录的名称，
我们可以进入该目录。
>> 顺便说一句，知道这个名字 当前目录是永远
点，和所述目录的名称 上述一个我们现在的水平，
那就是在文件夹的名称 其中我们的文件夹，点，dot--
或者在我们的文件夹，是圆点，圆点。
如果你曾经好奇 您目录的名称，
您可以键入PWD，它代表 对于当前的工作目录。
我们将看看所有这些 现在，通过回笼到CS50 IDE。
所以，我回到我的工作区了。
我会放大，在再次上 终端，所以我们可以来看看
在IDE中走动。
所以，我要列出 我的目录内容
再次，只是为了重新研磨 我们在哪里了。
所以，如果我输入ls，这 对于列表中再次，
我看到，我能得到pset0和PSET1。
这些都是目录 我可以从这里得到。
我知道，因为IDE提供 我一个线索由着色蓝。
>> 比方说，我想 进入我的PSET1目录，
因为我工作的习题集1。
我可以输入cd--再次，简称 改变directory--空间，PSET1。
如果我敲回车，看到发生了什么。
它看起来并不像发生了不少事情。
但是，如果你看一下提示，现在 告诉我，我在〜/工作区/ PSET1。
我已经航行到PSET1 文件夹是我的工作空间内。
>> 如果我输入ls，我看到一些 不同的东西在这里，对不对？
这是不一样的 我以前看到列表。
我已经航行到PSET1。
所以现在，当我输入ls，我 得到什么样的情况下，我可以
看到来自PSET1文件夹中。
>> 现在，我要键入控制 L，这只是清除屏幕。
而且我要列出 该目录的内容
再次，只是让你可以看到。
我只是想这样对待 清除掉一些东西
你看见楼下 并且，以防止这种
从去太远超出范围。
>> 现在，我在前面提到，如果我想 导航到当前目录，
我可以输入CD的空间点。
回车。
它没有做任何事情，对不对？
我改变了目录 当前目录。
你不会总是会 发现需要一种单一的点，
但是你会偶尔为之。
>> 比方说，我想 到上一级。
我想找回 我的工作区目录。
我不能键入cd工作区， 有没有这样的文件或目录。
而对于that--的原因 如果我输入ls多了一个时间 -
是，有没有所谓的目录 工作区我的PSET1目录的内部。
我要清楚我 与对照L再次筛选。
还记得我说的 此前，虽然，我们
可以导航回用点，点。
这是父目录的名称。
所以，如果我键入cd，空格，点， 点，然后按Enter键，
现在就来看看发生了什么事。
我的命令提示符告诉我，我 早在我的〜/ workspace目录。
我搬到了一个级别， 多亏点，点。
>> 现在，让我们说，我使用的是 操作系统是基于Linux，
但并不一定 告诉我，我在哪里。
这一次发生在告诉我们， 我在〜/工作区，现在，
就在提示。
但我可能是完全 在文件夹的烂摊子丢了，
我不知道我在哪里，并 不知道，我想回去。
有两件事情我可以做。
>> 首先，我可以计算 出来我在哪里，通过键入PWD。
这是我当前的工作目录。
如果我打回车键， 告诉我，究竟我在哪里。
现在的/ home / Ubuntu是 的说法，波浪线很长的路要走，
这是你的主目录。
但它告诉我，我在 家用/ Ubuntu的/工作区，或〜/工作区。
>> 我要去导航 我PSET1目录再次，
而我要列出其中的内容。
我看到，我还有一个 目录中有，所谓的群众演员。
所以，我要cd到群众演员，和 那么我要清楚我的屏幕。
>> 所以，现在，我很远的，对不对？
如果我想要回什么 马上工作区？
有两件事情我可以做的。
我可以输入CD，点，点，斜线，点， 点，到上一级，然后
另一个层次。
但是，这是一种烦人。
>> 所以，如果我想回去 只是我的主目录，波浪线，
我可以输入光盘后，什么都没有。
镉进入。
而现在，我在波浪线。
如果我想要得到的工作空间， 我可以只键入cd工作区。
而这就是你的工作 更改目录
在CS50 IDE或任何Linux内 操作系统在命令行。
好吧。
接下来的一个可能 派上用场是MKDIR，
这是短期的做一个目录， 如果我需要创建一个新的文件夹。
如果你熟悉 在GUI操作系统，
你可能会用鼠标右键单击。
然后，当在上下文菜单 弹出，选择新建文件夹。
这可能是如何 你之前已经做到了。
但是，我们也可以创建 目录在命令行。
所以，我们又回到了IDE。
我会放大，在终端上 我列出目录的内容
再次，只是为了给我们 一个参照系。
比方说，现在，我已经 处理完问题设置0
和习题集1。
所以，我想创建一个新的目录 上班的问题设置2。
我怎么做？
>> 好了，再次，我可以用鼠标右键单击 左侧有，然后选择新建文件夹
并创建一个pset2目录。
这将工作太。
但是，我也这样做的 命令行很快，
通过键入MKDIR，space--我 键入N，但 - 空间pset2。
如果我敲回车，然后我列出 我的目录中再度内容，
我看，你看，现在 我有一个pset2文件夹。
我可以导航到 在使用CD和做
所有的工作，我需要做的pset2。
顺便说一句，我就流行过 这里真的很快到文件树。
你可以看到，同样，在 图形文件浏览器，
我们可以看到，pset2目录 还建立有。
我可以找到它， 使用GUI为好。
下一次，这就是 可能会派上用场
是CP，这是短期的副本。
复制，不像其他所有的 命令我们以前见过，
有两个参数，一个来源， 要复制的文件名，
和目的地，在那里你 要将该文件复制到。
这是很容易复制 一个文件，所以让我们做到这一点。
>> 所以，我们又回到了IDE。
我要列出内容 我与LS当前目录。
现在，让我们说，我想 使hello.txt的副本。
再次，从对文件树 左，图形界面，
在hello.txt的，我可以用鼠标右键单击， 做一个拷贝，粘贴复制。
但我可以很快做到这一点 在命令行了。
>> 比方说，我想复制 hello.txt的到hi.txt。
我可以CP，空间，hello.txt的。
这是我的源文件，所以这就是为什么 我会先选择之一。
然后我需要来命名 目标文件，hi.txt。
我敲回车。
如果我列出的内容，我 目录再次，还有的hi.txt。
我做了它的一个副本。
而事实上，如果我去了 到hi.txt，我可以
看，这将是一个确切的 重复一切的
存在于我的hello.txt的档案。
>> 这就是你如何复制文件。
但是，如果你想什么 复制整个目录？
因此，对于第二，让我们一起来看看 什么是我的pset0目录。
如果我的CD pset0并列出内容， 我有一个名为目录，样品，
和一个临时文件，scratch.sb2。
所以这是很好的了解。
因此，让我们清除屏幕， 而我要回去
我的第二个工作区目录。
>> 比方说，现在，我想 让我pset0目录的副本。
我不能说CP pset0 pset3，例如。
你得到这个奇怪的消息， 省略目录pset0。
为什么你得到的消息？
嗯，事实证明，当 你有一个目录
拥有它里面其他的东西， cp命令并没有真正
一定知道该怎么办。
>> 我们需要明确 告诉Linux的终端，
我希望你能复制 pset0目录和副本
每一个存在的文件夹内 它和每一个文件
存在它的内部。
换句话说，我需要你 递归地跳进pset0
并让一切的副本在那里。
>> 如果我要做到这一点，我能做些什么 是CP-R，递归，pset0 pset3。
回车。
现在，如果我列出 我的目录内容，
我看到有在pset3 目录，我可以工作。
如果我cd到pset3现在 然后列出的内容，你看，
还有一次是样品和scratch.sb2。
所以，这很酷。
所以，这就是你如何复制整个 目录，而不是只是一个单一的文件。
所以，如果你想复制 目录，只记得
使用-r标志，当你 正与cp命令。
好吧。
所以我复制的文件，但 我错做到了。
而现在，我想摆脱它。
我怎么做？
同样，如果你熟悉 使用GUI界面，
你可以用鼠标右键单击 而只是选择删除。
而且它会发送到 垃圾桶或回收站。
但是，在命令行中，我们 只需键入rm，对于删除，
的，然后将名 文件中，我们要摆脱。
>> 现在，RM非常小心。
它做了很多的双重检验， 确保你真正
要删除的文件。
它不想犯任何错误， 因为没有回收站在这里。
一旦我们删除一个文件，它的消失。
还有的实在没有办法恢复了。
因此，我们需要是相当 小心了，所以RM
将是非常小心我们。
>> 因此，让我们回到IDE 并摆脱那个hi.txt文件
我在一分钟前的副本。
因此，我们在IDE中。
我列出我的目录中的内容 再次，只是给我们一些背景。
我的意思是，你可以看到，有hi.txt， 我创建了一小会儿前。
现在，我想摆脱它。
我该怎么办呢？
>> 再次，只是RM。
因此，我可以键入rm hi.txt然后按Enter键。
还有的RM之中 非常小心我们
，使实际确保我们 要删除此文件。
你真的要删除 常规空文件hi.txt？
这就像一个工作 系统，如Windows或Mac，
你可能会 熟悉弹出
那个盒子说，你真的 一定要做到这一点。
>> 我敢肯定，我想这一点， 所以我会打字，yes--
或者我也可以只 键入y--然后按Enter键。
如果我列出的内容，我 目录再次，hi.txt走了。
还不错吧？
让我们按Ctrl L，只 为了摆脱这一切的东西
并让我们回到 在屏幕的顶部。
>> 现在，有一种方法，以 短路RM，所以
它不问我们这个问题。
我们真的知道我们要 摆脱该文件中，
我们甚至不希望 要问的问题。
我们该怎么做呢？
好了，我们可以指定一个 额外的标志，就像我们
与CP我们是在哪里 可以添加-r标志，
以递归复制到目录中。
还有另一个标志 对于RM，这是-f，
这是迫使RM做的正是 正是我们告诉它做的事。
>> 所以我们可以说的是，现在，我想 摆脱我的hello.txt的文件。
我不希望这样一个哪一方面。
我能做些什么？
好吧，我可以RM -f hello.txt的。
你认为什么是 要在这里出现呢？
它消失了。
甚至没有问我这个问题。
而事实上，如果我列出的内容 我的目录再次，它的消失。
这里没有撤销。
hello.txt的跑了，我是不是 甚至问我是否愿意将其删除。
如果我想摆脱什么 的整个目录？
你这样做的方式是 非常相似的复制。
如果你想删除一个 目录下，你不只是
要删除的目录，你想 删除所有在其内部。
所以你使用-r，以 递归删除一个目录。
>> 因此，让我们RM -r pset2。
我没有实际工作pset2， 这样我就可以摆脱那个目录。
我敲回车。
我是否要删除 该目录，pset2？
是的，我愿意。
如果我列出的内容 我的目录再次，它的消失。
好吧？
>> 在这个主题上还有一个变化。
所以，我会再次清屏， 把一切都在上面。
打LS。
现在，我想摆脱 我pset3目录，
我真的知道我要 摆脱我pset3目录。
我可以递归并强行 删除我的pset3目录。
>> 现在，你将是真 当你使用的rm -rf小心。
当你的程序越多，它会 你刚才做的真的很快。
而事实上，我做这一切的时候。
但它可以导致一些 灾难性的后果，
如果你不小心 删除错误的事情。
所以，我要你知道， 这是提供给你一个选择，
但应谨慎使用， 并请谨慎使用。
>> 我知道一个事实，我不工作 我的问题集3了，所以我
要摆脱所有这些文件的。
我知道我不想问 如果我想删除每一次
一个文件，所以我要去室射频pset3。
甚至没有问我，如果我 想摆脱它。
我打LS。
pset3走了。
所以，这一切的变化，你 可以用它来摆脱的文件与RM。
>> 最后一个命令行命令，这是 要对你非常有用
是的MV，这是短期的举措。
此举是基本上等同于重命名。
它是将文件从一个位置到 另，源到目的地。
让我们看到使用一招威力 得心应手的终端窗口。
>> 所以，我在我的PSET1 目录中，我注意到
事情已经有点不对劲。
我是工作在我贪婪的问题， 但我不小心把它命名为greddy。
所以，当我尝试运行它通过 check50，它并没有真正发挥作用。
我有几个选项。
我们可以做我们以前做过， 这是为了使文件的副本。
我可以复制greddy.c 到greedy.c，对不对？
回车。
我看到这两个文件都在那里。
然后我可以RM， 除去，greddy.c。
这摆脱它。
因此，将工作，我确认后， 我想摆脱它。
而且能有效地有 更名greddy.c到greedy.c。
我复制它，然后 去掉了原。
>> 但是，这是一个多步骤的过程。
当然，还有一种更好的方法。
事实上，有。
因此，让我们打控制L， 只是把这个备份，
并列出内容 我的目录了。
>> 所以我们可以说，哦，我犯了一个错误。
其实我真的想 调用该文件greddy.c。
在一举，我可以输入 移动greedy.c到greddy.c。
回车。
而现在，我没有 复制和删除，
我只是能够将其重命名。
一站式购物。
>> 现在，还有很多其他的 基本的命令行工具
你可以使用 Linux命令行。
我们将讨论很多 其中在CS50未来。
但现在，只是让你的脚 与此终端工作湿
环境，这五个命令 应该让你很远
在导航周围， 在你的IDE文件工作
或在任何基于Linux的 你使用的操作系统。
>> 如果你好奇，你想 向前看一点在一些
命令行命令 我们将使用在未来，
这里有一对夫妇列表 比较常见的。
我是道格·劳埃德。
这是CS50。