命令行基础:如何在电脑上进行操作
这篇文章最初发表在我的博客上。你也可以在推特上关注我 @AnnaJMcDougall。
毋庸置疑,命令行界面 (CLI) 比我们从小就熟悉的图形用户界面 (GUI) 更高效。问题在于,它不够直观,而且也不是我们从小就习惯的界面。本文将介绍使用 Bash(Linux 的标准 shell)通过命令行操作计算机的基础知识。如果您不理解这些术语的含义,也不用担心。重要的是,您已经启动了 Linux 系统,打开了终端(快捷键 Ctrl-Alt-T),现在可以开始查找和创建文件了。
但是,在我们开始之前,您必须明白,$在下面的代码示例中看到的“a”表示您需要将其输入到命令行中。
读完这篇文章,你不仅能够使用以下命令,而且还会知道它们的含义(惊叹!),以及可以用来帮助你节省时间的各种变体:
$pwd
$cd
$ls
我在哪里?使用命令行查找当前文件夹$pwd
首次打开终端时,默认情况下您会看到一些标识信息,后面跟着波浪号 (~) 和美元符号 ($)。
美元符号表示您正在使用命令行,并且通常用于代码片段(如本帖所示)中,以表明该代码需要输入到终端中。
波浪号也很重要,因为它表示您当前位于主目录中。这里需要补充一点:我特意使用大写字母来指代主目录,因为有一个有趣的细节:主目录与名为“home”的文件夹/目录并不相同。稍后您就会明白这一点的重要性,所以现在请务必记住这一点:
主页面 =~$
~$= 主页
那么你的主目录在哪里?试试输入以下内容:
$pwd
记住,你不需要输入美元符号 ($),因为它只用来指示你当前在 Bash 终端中。所以只需输入 'pwd' 并回车即可。
恭喜!您刚刚执行了第一个终端命令,现在您可以准确地看到您当前在计算机的哪个位置工作。您很可能会看到类似以下内容之一:
/Users/yourUserName/home/yourUserName/user/yourUserName
上面结果中的第二个例子解释了我为什么总是用大写字母来描述主目录:因为“home”并不总是指“家”本身:在这种情况下,你的主目录实际上是“home”目录下的一个文件夹!是不是有点头疼了?太好了!你离成为一名开发者越来越近了!
该命令$pwd代表“当前工作目录”,它会告诉你当前在文件夹内的位置。如果你习惯使用 Windows 图形用户界面,那么你其实已经习惯在资源管理器栏中看到类似这样的内容了:
根目录与主目录
您可能已经注意到,当您在pwd上面输入内容时,您的主目录位置并非以单词开头,而是以斜杠开头。这个斜杠代表您的根目录:如果您将整个计算机及其所有文件想象成一棵大树,那么根就是所有文件都源自的唯一位置。根位置只有一个,并且始终用点号 (.) 表示/。
就像~$always 指示您的主目录一样,/$always 指示您的根目录。
现在该学习另一个命令了,$cd它可以让我们从一个文件夹/目录移动到另一个文件夹/目录。试试看……
$ cd /
别忘了空格,也别输入美元符号 $。现在,试试回到我们可靠的老朋友,$pwd这样我们就能知道我们现在在哪了!
等等,它只显示一个问号/?怎么会这样?嗯,正如我上面解释的,这个问号/表示我们位于根目录,而根目录是我们能到达的最底层/最深处。当我们输入 `go to` 时,$cd /我们结合了两个概念:$cd`go to` 是命令,本质上是“转到…”的意思,而 ` /?` 是我们的根目录。所以我们告诉计算机的是“请转到根目录”(附注:据我所知,Bash 终端中没有与“请”对应的词,但我在这里做了个委婉的翻译)。
现在我们位于根目录,电脑里已经没有更深的目录可以探索了。了解这一点固然重要,但实际上我们大部分工作都应该在主目录中完成。所以,让我们回到主目录吧!这里你有两种选择:
$cd ~
这大概就是你所料的,对吧?它~代表你的主目录,所以如果我们用它配合cd其他命令,就可以返回主目录。而且真的有效!太棒了!
别高兴得太早,不过由于主目录非常重要,Bash 的开发者们让返回主目录变得更加容易。你只需要输入:
$cd
没错,就是这样。只需运行不带参数的命令,$cd无论你身在何处,无论你走了多远,它都会带你回到你的主目录。如果你需要记住这一点,可以这样想:如果你在参加聚会,有人叫你“离开!”,你很可能会直接回家。但如果有人说“和安德鲁以及他的朋友们一起离开,这样你就能赶上下一个聚会了!”,你就会去那里。所以,$cd带参数的命令会将你带到文件和文件夹的某个位置,而不$cd带参数的命令则会将你带到你的主目录。
那是不是意味着它$cd可以带我到我电脑上的任何文件夹?
没错,亲爱的读者,确实如此!有两种方法可以导航到另一个文件夹:“绝对路径”或“相对路径”。让我们以下面的文件夹结构为例来看一下这两种方法:
Root Directory
|__user
|__Anna (~)
|__Music
|__Downloads
|__Documents
|__CameraUploads
|__ImportantForWork
|__InternetFiles
如您所见,我的根目录是所有文件夹的起始位置,从这里分支出用户目录,然后是与我同名的文件夹(也就是我的主目录),再往下是我日常使用的所有文件。现在假设我急需找到一个对工作很重要的 HTML 文件。您可能已经猜到了,它就在我的“ImportantForWork”文件夹中。
绝对路径:根据文件夹与根目录的关系导航到该文件夹
“绝对路径”描述文件夹或文件相对于根目录的位置。
我们要访问位于“Documents”文件夹中的“ImportantForWork”文件,该文件位于“Anna”(我的主目录)中,“Anna”位于“user”文件夹中,“user”位于我的根目录中。在 Bash 中,这看起来像这样:
/user/Anna/Documents/ImportantForWork
请注意,这些命令都区分大小写。
相对路径:根据当前位置导航到文件夹
开发者的有趣之处在于,他们现在已经明白,懒惰往往意味着效率:同样地,虽然上面的方法总是有效(假设文件夹存在且位置正确),但每次想从一个地方跳转到另一个地方都要输入一遍,实在有点麻烦,尤其当文件夹距离很近时。例如,如果你刚刚打开终端,你已经在 Anna 文件夹(也就是我们的主目录~)里了,所以你已经在“ImportantForWork”文件夹附近了。那么,你为什么还要费劲地告诉电脑返回你当前所在的位置呢?谁有那闲工夫啊!
相反,我们可以告诉计算机带我们去到我们当前所在位置内的某个位置。
~$cd Documents
如您所见,波浪号表示我们位于主目录(Anna),从这里我们可以直接进入“文档”文件夹。现在我们只需要再进一步,进入最终目标文件夹,然后我们将使用它$pwd来确认是否成功。
$ cd ImportantForWork
$ pwd
现在终端应该会显示出来了/user/Anna/Documents/ImportantForWork。万岁!我们成功了!
“等一下,安娜,”我仿佛听到你愤愤不平地说,“这效率也太低了吧!”
哎呀,亲爱的读者,并非如此。让我们改进一下。首先,我们将使用$cd“allow”命令,返回我们的主页目录(Anna)。
$ cd Documents/ImportantForWork
搞定!简单。现在我们到达目的地了。
想让它更方便吗?使用“Tab”键作为自动完成工具。
当你输入足够多的字符来表示一个唯一的目录名称后,点击<tab>,你就会看到它弹出。在这个例子中,它看起来像这样:
$cd Doc <tab> / Im <tab>
通过这种方式,我们只用了 11 次按键就找到了我们的文件夹,而使用绝对路径导航时则需要 40 次按键(!)。
简单来说:如果你知道你要去的地方相对于当前位置的位置,最好使用相对路径并结合 Tab 键。
请告诉我更多出行方式!
好吧,既然你坚持,我们就再看一下文件结构:
Root Directory
|__user
|__Anna (~)
|__Music
|__Downloads
|__Documents
|__CameraUploads
|__ImportantForWork
|__InternetFiles
您可能已经注意到,您可以使用$cd文件夹名称来访问所谓的“子目录”,也就是直接继承自您当前所在目录的子目录。在上面的示例中,CameraUploads、ImportantForWork 和 InternetFiles 都是 Documents 的子目录。因此,从逻辑上讲,我们可以将 Documents 称为它们的“父目录”。
移动到父目录
无论何时身处某个文件夹,您都可以使用以下命令返回上级目录:
$cd ..
.. 表示计算机向上移动一级目录。这些运算符也可以堆叠起来,以访问祖父级目录:
$cd ../..
移动到父目录中的某个目录
假设我们已经在 ImportantForWork 文件夹中,现在想查看 CameraUploads 文件夹中我们侄子的照片。我们该怎么做呢?仔细想想,其实很简单:首先我们进入父目录,然后进入$cdCameraUploads 文件夹。
$cd ..
$cd CameraUploads
这样做可行,但和往常一样,我们可以通过将两条命令叠加起来来节省时间:
$cd ../CameraUploads
瞧!你只用一条命令就完成了上一级和下一级的操作。
最后但同样重要的是……看看里面有什么$ls!
最后一条命令非常简单明了,但它旁边的命令$cd却是你最常输入的命令之一。使用$cd`rb` 或 `cd`命令导航到你的主目录$cd ~,然后输入以下命令:
$ ls
该命令代表“列表”,当不带参数使用时(如上所示),它会显示当前工作目录(即你当前所在的目录)中的文件和文件夹。
如果你的系统比较新,可能没有任何隐藏文件,但以后——尤其是如果你打算使用 Git——肯定会有一些!`$ls` 命令不会自动显示这些文件,所以要查看它们,请键入:
$ls -a
这-a叫做“标志位”,它告诉计算机对收到的命令执行一些特殊操作。在这个例子中,它代表“全部”,所以我们告诉计算机“列出所有文件……是的,请列出所有文件,包括隐藏的文件。”
正如你从我上面的措辞中可能猜到的那样,你也可以使用$ls 参数,这意味着你可以告诉它要列出哪个文件夹,而无需实际进入该文件夹。
例如,如果我们想查看“文档”文件夹中的文件,我们可以这样做:
~$cd Documents
$ls
或者我们可以直接输入:
~$ls Documents
这将显示“文档”文件夹中的所有内容,而无需离开我们的主目录。
就是这样!你现在是天才了!
好吧,也许不是,但至少现在你可以使用 `<p>` 在文件夹之间移动$cd,使用 `<p>` 找到你当前所在的位置$pwd,并使用 `<p>` 查看文件夹内部的内容$ls,此外,你还知道如何通过使用相对路径、父目录和 `<p>`<tab>按钮来节省一些时间,这在每次击键都可能很有价值的行业中可以节省你的一些时间。
