命令行学生资料

命令行是一种不使用 GUI 控制计算机的方式。在本单元,我们将学习与计算机互动的基本命令。

重点小结

  • 学生可以通过命令在计算机中四处移动。
  • 学生将可以创建、移动、复制和删除文件和文件夹。

什么是命令行?

大多数情况下,用户会使用图形界面 (GUI) 与计算机互动。GUI 通常借助鼠标或触摸操作来操作图标、按钮、滚动条等。

命令行是进入计算机的备用视图。有时称为“shell”、“终端”、“bash”或“文本接口”,命令行为:

  • 一种与用户输入命令的计算机程序互动的方式。例如:
open README.txt
  • 无需鼠标即可浏览和操作计算机。
  • 创建、读取、更新、操作和删除文件和目录的非图形方式。例如:
mv README.txt readme.txt

GUI 和命令行看到的是同一项内容!它们是与计算机互动的不同方式。

我们何时使用命令行?

开发者通常更喜欢使用命令行界面:

  • 它们提供了一种更简洁的程序或操作系统控制方式。为什么?因为一切都是在同一个窗口中进行,并且与练习使用鼠标寻找和操控东西相比,这样操作更为轻松。
  • 它们可轻松显示用于控制命令的选项。为什么?GUI 中的菜单提供的选项非常少。命令行中有数百个命令,如果为命令添加几个字符,它可以执行许多不同的操作。例如
  • ls 个基本列表文件
  • ls -a 列出所有文件,包括通常处于隐藏状态的文件
  • ls -l一个长列表,显示每个文件的相关信息
  • ls -R 递归,列出目录的内容
  • ls -la列出所有文件
  • 您可以通过这些过滤器轻松地以复杂的方式一次性处理大量文件。
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • 它们提供了一种编程操作系统(shell 程序)编程方法。例如,上面的示例是一个非常简单的 shell 程序,旨在修改文件名以 .png 结尾的图片。

命令行的实际运用

命令行命令的组成部分

所有命令均包含三个部分:

  • 命令(或实用程序)始终排在最前面。
  • 您可以视需要使用标记,具体取决于您使用的实用程序。标志始终以 -(减号)开头。
  • 参数是命令可操作的内容或必要的信息。通常是文件名。

背景信息与目的

命令行是一种无需鼠标或 GUI(图形界面)即可控制计算机的方式。在 Apple 计算机开始构建具有可点击图标和文件夹的计算机之前,只能通过命令行与计算机互动。

作为开发者,我们之所以使用命令行是因为 GUI 比 GUI 速度更快、功能也更强大,而且再也不必浪费时间去四处点击查看了。通过命令行,您可以执行与计算机之间的几乎任何交互。

由于终端接口简单得多,因此,当您需要通过网络链接远程连接到计算机时,GUI 具有很大的优势。开发者经常这样做,比如在旅行时。

在本节课中,我们将学习与计算机进行交互的基本命令:创建文件和目录、移动文件夹、更改目录以及列出文件夹的内容。

学习目标

学生将可以

  • 使用终端浏览文件和文件夹
  • 列出文件夹的内容
  • 通过命令行创建文件和文件夹
  • 移动文件和文件夹
  • 复制文件和文件夹
  • 删除文件和文件夹

开始使用

访问终端

版块构图和用途

终端向操作系统提供一个命令行界面 (CLI)。您可以借助此选项直接向计算机提供文本说明。

为此,我们需要根据您使用的系统启动您的终端。

终端启动后,将从您计算机的主目录(您命名的计算机)启动。主目录由波浪号 ~ 表示。

在终端中讨论世界时,目录文件夹相同(我们有时可能会直接称之为目录)。

更改目录

版块构图和用途

为了在终端中与我们的计算机对话并告知其所需执行的操作,我们需要说一种通用语言。命令行能够理解以 bash 脚本语言编写的命令。命令是英文单词的首字母缩写或缩写。

当您在终端中导航时,有必要知道您身在何处(这也会直接转换为现实世界 - 如果您想去某个地方),首先需要知道您当前所在的位置。

# See your current location - abbreviation for 'print working directory'
pwd

列出可用的文件和目录

工作目录中,您可能会看到多个文件。通常,我们依靠图标等视觉提示来判断可用内容,但如果单纯猜测文件和文件夹的位置,就很难在计算机中导航。在命令行中,我们将使用特定命令来列出可以从任何指定工作目录/任意指定位置访问的内容。

要查看当前目录中的哪些文件或文件夹,请使用 ls 命令(列表缩写)来查看这些内容的列表视图。

# See files and folders in current location - abbreviation for 'list'
ls

更改工作目录

如果您需要访问未出现在列表中的文件或目录,则可能需要更改您的工作目录以便更轻松地访问。

指示命令行将您移动到新目录(也称为文件夹)的语法是cd(在同一行上)后跟新文件夹的路径。

如果您导航到自己当前所在的目录中的某个目录(例如工作目录子文件夹),请使用 cd 命令,后跟该文件夹的名称。

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

您也可以从主 ~ 目录开始导航。

# Add a `~/` to begin from the home directory.
cd ~/Downloads

如果您更改了目录,但需要改回主目录,请使用 ~ 直接返回主目录,或使用 .. 向上导航一级。

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

请注意,cd .. 仅上移(返回)一层,因此,到目前为止,您更改了三次三次(下三层),要返回至主屏幕,则需使用三次cd ..,但只需要使用一次cd ~

迷你挑战

  • 使用 ls 查看当前目录中的目录。
  • 返回主目录,然后使用 ls 查看主文件夹的内容。
  • 选择主目录中的其中一个文件夹的名称,并导航到这个新文件夹。
  • 使用 list 命令可以查看包含哪些内容。

提示:使用 tab 自动补全

使用 cd 命令更改目录时,单个拼写错误会导致该命令无法正确执行。不过,使用 tab 键会自动填充当前目录中任何可用目录的名称。因此,您无需输入 cd Documents,只需输入 cd Do,然后按 tab 键,终端便会自动填充命令 cd Documents/(末尾的 / 是可选的,但可让您知道目的地是目录)。

这样,自动补全功能不仅能节省工作的时间,还能在工作时提供有价值的信息。如果标签页按钮没有自动补全,那么您可能遇到了以下三个非常常见的问题之一:

  1. 无法从当前工作目录访问您要导航到的目录。
  2. 有两个目录具有类似的起始名称(例如 DocumentsDownloads),而您尚未提供足够信息来让自动补全功能知道您希望哪一个。再按一次 tab 可查看可匹配您输入的目录的目录列表。然后,再输入一些内容(足够多地确保只有一个匹配项),然后再次按 tab 键。
  3. 您已经在单词的前半部分添加了拼写错误。

您越早养成使用标签页自动补全命令的习惯,就越可能处理命令似乎无法运行的令人沮丧的情况。

父级目录和子级目录

目录和文件可以彼此具有子项关系。如果 directory_b 位于 directory_a 内,则 directory_b 称为 directory_a 的子项。然后,directory_a 被称为 directory_b 的父级。如果第三项 my_file 位于 directory_b 内,则将其视为 directory_b 的子项和 directory_a孙项

这些关系通常以文本图示显示在论坛中,如下所示:

directory_a/
  directory_b/
    my_file

请注意,目录名称以 / 结尾,而文件名不是。这种分层整理通常称为文件系统的树结构

同级

如果同一级别有多个文件或文件夹,这些文件或文件夹称为“同级”。示例:如果 file_bfile_c 位于 directory_a 内,它们就是同级关系。

该文本图将如下所示:

directory_a/
  file_b
  file_c

请注意,由于 file_b 和 file_c 是同级项,因此它们的缩进量相同。

文件路径

下面是更复杂的文本示意图,其中包含父级-子级和同级关系。

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

在此示例中,new_york_city/ 是目录名称,但它还有一个路径,其中详细介绍了如何转到那里:~/north_america/united_states/new_york/new_york_city/

如需将目录更改为 new_york_city/,,您可以使用名称在步骤中导航,也可以在一个命令中使用路径一路导航到该目录。

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

导航命令摘要

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

迷你挑战

  • 使用 pwd 可找出您当前所在的文件夹。
  • 切换到其他目录并确认您的新位置。
  • 请重试,然后导航到其他文件夹。使用您的新命令查看位置,以及此目录中的文件。

制作文件和目录

版块构图和用途

作为开发者,我们需要使用代码创建文件。为确保文件井然有序,我们需要创建存储文件的文件夹 / 目录

在创建文件和文件夹之前,请注意在终端中的位置。

# See your current location.
pwd

要创建文件,请使用命令 touch ,后跟文件名。

# `touch` creates a new file.
touch style.css

创建文件时,请添加文件扩展名来指定文件类型。文件类型示例:

  • .js 创建为 JavaScript 文件
  • .html 创建 HTML 文件
  • .css 会创建 CSS 文件
  • .md 会创建一个 Markdown 文件

文件名不应包含空格。

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

制作多个文件

您可以一次创建多个文件,只需在每个名称之间添加空格即可。

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

创建目录

要创建目录/文件夹,请使用命令 mkdir (这是“make directory'”的缩写),后跟文件夹的名称。

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

创建多个目录

您可以一次创建多个文件夹,只需在每个名称之间添加空格即可。

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

迷你挑战

  • 创建新文件。
  • 在一个命令中创建几个文件。
  • 创建一个新目录。
  • 再创建几个新目录。为此,请仅使用一条命令。
  • 根据您熟悉的目录导航和创建文件和文件夹的方法,在桌面设备上使用文件和文件夹构建一个“family_tree'”。

移动和复制

移动文件和目录

版块构图和用途

我们可以在命令行中移动文件或文件夹,但需要指定以下三项内容:

  1. 我们使用 mv 命令 - Move 的缩写。
  2. 移动此移动命令,找到您要移动的文件或文件夹的名称。
  3. 根据目标文件的名称,将该文件移动到目标位置。

例如,如果您的文件结构如下所示:

my_child_folder/
my_parent_folder/

您会发现,它整理得井井有条,当它们应该是父母和孩子时,它们是兄弟姐妹。使用以下命令:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

最终的结构将如下所示。

my_parent_folder/
  my_child_folder/

下面是 mv 命令的一些其他变体:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

警告mv 恰好也是使用语法 mv old_name new_name 重命名文件的命令。这意味着,如果您将文件移动到不存在的目录,或拼错了目的地,文件本身将被重命名而不是移动。

迷你挑战

  1. 创建 5 个文本 (.txt) 文件。
  2. 创建一个新目录。
  3. 将您创建的 5 个文件移至文件夹中。
  4. 创建文件夹并将此新文件夹移至其他文件夹。

复制文件和目录

版块构图和用途

构建 Web 应用时,我们可能需要复制文件(如果我们构建的是两个类似的网页,则可能不想从头开始),并且 cp(复制)命令的语法与 mv 语法非常相似。

复制文件

复制命令包含三个部分:

  1. 命令 cp - copy 的缩写
  2. 要复制的文件的名称
  3. 副本的名称(如果保留在同一文件夹中)或位置和名称(如果移至其他文件夹)。
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

如果您想让副本保留与原广告素材相同的名称,可以指定副本的文件名而不指定文件名。

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

拥有大量同名文件可能会令人困惑,因此请仅在确定确实需要时才使用此方法。

复制目录

复制文件夹或目录稍微复杂一些,因为您可能不仅想复制文件夹,还想复制文件夹中的所有内容。

  1. cp -R 命令(copy recursive 的缩写)- 用于空文件夹和非空文件夹
  2. 来源名称(要移动的文件夹或文件)
  3. 副本的名称(如果保留在同一文件夹中)或位置和名称(如果移至其他文件夹)。

警告:指定副本的名称时,如果之前未创建文件或文件夹,系统会在创建副本时创建文件或文件夹。如果文件是在运行复制命令之前创建的,则会覆盖文件中之前的所有内容,因此请务必小心!

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

注意:cp -R-R 组件称为标志。标志始终以短划线开头,并与命令结合使用,以提供有关如何执行相应命令的更具体的说明。

迷你挑战

  1. 创建名为 my_original.txt 的文件
  2. 在同一文件夹中创建一个名为 my_original.txt 的新名称的副本。
  3. 创建一个新目录。
  4. 为该目录创建副本,但使用其他名称命名。
  5. 复制您在第 2 步中复制的文件,然后将其放入复制的目录(在第 4 步中)中。

移除文件和文件夹

版块构图和用途

我们可以在命令行中删除文件和文件夹,但操作是永久性的。

移除文件

要移除文件,可以使用命令 rmremove 的缩写),后跟文件名。

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

移除空目录

如需移除空的 directory,可以使用命令 rmdir - 缩写为 remove directory - 后跟文件夹的名称。

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

移除非空目录

如需移除不为空的文件夹,我们必须在 rm 命令后添加标记 -R递归的缩写),告知计算机删除文件夹中的内容。作为快捷方式,有些开发者会使用 -Rf 标记来强制移除所有内容(否则,您可能会收到关于删除部分子文件或文件夹的提示)。

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

警告:使用 rm 命令与回收站或电子邮件的已删除部分不同,它们无法被轻松恢复。通过这种方式删除文件时,请务必格外小心。

迷你挑战

  1. 创建 4 个文件。
  2. 删除其中的 2 个文件。
  3. 创建一个文件夹。
  4. 再创建一个文件夹,然后在其中创建一个文件。
  5. 删除这两个目录。

在您从 GitHub 下载的学生代码库中的以下文件夹中可以找到此实验的代码:command-line/labs/around-the-world

背景

您的学期即将来临,您就要开始规划欧洲旅行了...

短期内,你会在生活三个月后认真生活,确保自己充分利用每周末的行程。

幸运的是,您并没有从零开始学业,您的朋友已经为您提供了他们在学业中最喜欢的一些活动。抱歉,部分文件出错了...

不必担忧,您可以借助命令行的魔力立即修复它们!

任务

确保每个城市都位于正确的国家/地区,且每个城市文件夹中都有正确的纪念碑。请小心点,否则你最终还是会在阿姆斯特丹寻找埃菲尔铁塔的!

如果您对此感到信心十足,请隐藏 GUI,并直接从命令行接受此挑战。在执行所有这些操作时,您应留在通用的文件夹中,这意味着在引用文件夹和文件时使用绝对路径!

确定一切无误后,您在接下来的几个月中便可自管系统的位置。集思广益,集思广益,集思广益,集思广益,发掘新的城市、国家/地区和古迹,并将其添加到您的文件树中!

恭喜!您已正式学习如何使用计算机。想要更进一步?让我们的扩展程序吧...

扩展程序

  1. 再次合并所有文件,然后进入你选择的城市。重新整理文件,同时留在城市
  2. 试试下面链接的一种有趣的命令行游戏
    Terminus Game
    Advanced Game(准备好进入 Google 模式)
  3. 是《星球大战》的超级粉丝?请尝试在命令行中运行 telnet towel.blinkenlights.nl,然后按 Enter 键...(请注意,在最新版本的 MacOS 中,系统在默认情况下不再安装 telnet 命令;在这种情况下,您可以改用 nc towel.blinkenlights.nl 23 命令。)

在您从 GitHub 下载的学生代码库中的以下文件夹中可以找到此实验的代码:command-line/labs/bashing-away-repetition

准备好用每日命令行处理大量的重复事务了吗?太棒了!

背景

如果程序员不喜欢某一个内容,那就重复一遍。作为计算机科学家,我们的任务是尽可能让计算机完成更多工作。编写 bash 脚本有助于我们提高命令行的使用效率。

首先,什么是 bash 脚本?

GREAT 问题。幸运的是,我们的朋友 Ryan Chadwick 在此处的命令行教程中提供了答案。

通过 Bash 脚本,我们可以定义一系列操作,计算机无需自行输入命令就可以执行。如果某个任务经常执行,或者任务很重复,那么脚本是非常有用的工具。

没有重复?是我在说的。

教程

首先,为了能够运行您的脚本,您需要为计算机授予权限。为此,请运行以下命令:

chmod 755 myScript.sh

好了,该编写您的第一个程序了。转到 myScript.sh(查看您能否从命令行打开文件)。在文件末尾添加以下内容:

echo "Hello World"

现在运行以下命令:

./myScript.sh

。** TA DA ** 您应该会看到终端中显示“Hello World”。

庆典

您在 bash 脚本中编写的所有内容都会像您在终端中输入的内容一样运行。在跳转到附加信息之前,我们再看一个示例。首先为您的脚本创建一个文件,该文件可命名为任意名称,但扩展名应为 .sh接下来,务必输入脚本的运行权限,方法是:依次输入 chmod 755 和终端中的脚本名称,然后按 Enter 键。每次启动新的 bash 脚本时,都应该确保完成这两个步骤。

简介挑战

现在,我们来试着编写用于创建新文件夹的脚本。我们知道使用什么命令来创建新文件夹?如果您正在思考一个以“m”开头且以“kdir”结尾的字词,那么您的操作是正确的。编写用于创建新文件夹的命令,并在新的 .sh 文件中将其命名为某个炫酷的名称,然后在终端中运行它。

如果可行,请继续进行下面列出的其他挑战。如果您仍感到困惑,不妨回顾一下世界各地的实验,并思考如何创建新的国家/地区和城市文件夹。

不要害怕使用上面链接的教程,并准备展示您的最佳 Google 技能。编写并运行执行以下操作的脚本:

主要任务

  1. 向您上面创建的文件添加命令,以转到您要创建的文件夹中。(我们使用哪个命令来更改目录?)
  • 为新文件夹的名称加注日期标签。例如,程序应该创建一个名为 "2017-12-07my_super_cool_folder" 的文件夹。
  1. 输出“我当前的目录是:" 后跟您的工作目录,”是此目录中的所有内容的列表!" 后接当前目录的内容。
  2. 确定如何为您的 bash 脚本输入一个输入,然后基于该输入字符串创建文件。本实验中前面链接的教程在“变量”部分提供了一些很好的示例供您参考。
  3. 向用户索要姓名,然后输出“您好,很高兴见到您,请在此处输入他们的姓名
  • 请尝试让您的用户获取更多信息,并为其创建自定义消息。

背景信息

命令行(或终端)与计算机操作系统 (OS) 的直接交互(图形图形界面 (GUI) 通过文本命令执行的所有操作,从导航到创建新文件,再到执行脚本)。使用 Google App Engine 时,命令行将用于打开文件并启动开发环境。

命令行的实际运用

访问终端

Mac 快捷键:

  • 使用 Command + 空格键打开全屏
  • Spotlight 搜索中输入终端
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

创建文件和文件夹

创建文件

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

创建文件夹

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

移动文件和文件夹

移动文件

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

移动文件夹

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

移动正在重命名

请注意,mv 也是用于重命名文件或文件夹的命令。

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

复制文件和文件夹

复制文件

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

复制文件夹

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

删除文件和文件夹

删除文件

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

删除文件夹

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

提示和技巧

  • 即使不需要,也可以练习使用命令行。随着时间的推移,您的回答将会越来越完善。
  • tab 键用于自动填充文件或文件夹名称(区分大小写)。
  • 如果只有一个剩余的匹配文件或文件夹,则它将自动填充。
  • 如果存在多个匹配的文件或文件夹,请按两次 Tab 键可查看其余匹配项。
  • 使用向上 / 向下箭头键可循环切换命令历史记录,这样您就不必重新键入命令了。
  • 使用命令 clear 清除终端窗口。系统会保留您之前的所有工作 - 向上滚动即可查看。
  • 使用 reset 重启终端。这不会使您之前的工作继续显示在屏幕上,但如果终端开始出现不可预知的行为,则可以解决多个问题。
  • option + arrow 可将光标移到某个字词上

最佳做法摘要

  • 使用 cdcd ..cd <folder name> 在终端上导航。
  • 使用 ls 查看文件夹的内容。
  • 使用 touch 创建文件;使用 mkdir 创建文件夹。
  • 使用 mv <item to move> <destination> 移动文件和文件夹。
  • 使用 cp <item to copy> <destination> 复制文件和文件夹。
  • 使用 rm <item to remove> 删除文件和文件夹。

问题 1

您会使用什么来标识当前的工作目录?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

问题 2

如何从当前工作目录向上移动两层?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

问题 3

您将使用哪个命令重命名文件?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

问题 4

命令 mv script.py 为何会抛出错误?

  1. 因为“script.py'”是无效文件名。
  2. 因为 mv 命令后面不得跟任何其他信息。
  3. 这是一个复杂的问题;不会产生错误。
  4. 因为移动文件至少需要两个参数 - 目标和目的地

问题 5

cd ~ 命令会做什么?

  1. 将您的工作目录更改为主目录。
  2. 重复以上命令。
  3. 使用算法确定当前最有用的命令。
  4. 抛出错误。

问题 6

以下哪一项不是使用标签页自动补全文件名的理由?

  1. 因为它可以节省时间。
  2. 因为它有助于消除拼写错误。
  3. 因为它需要更少的处理能力。

问题 7

如果新开发者尝试创建名为“my script.py”的文件,为什么命令 touch my script.py 不起作用?

  1. 因为touch无法创建新文件。
  2. 因为 .py 不是有效的文件扩展名。
  3. 因为这样会创建两个文件,一个名为 "my,一个名为 script.py,而不只是一个。
  4. 因为无法通过命令行创建新文件。

问题 1

您会使用什么来标识当前的工作目录?

pwd

问题 2

如何从当前工作目录向上移动两层?

使用 cd ../..,您可以向上移动两个层级(每个 .. 代表一个层级)。

问题 3

您将使用哪个命令重命名文件?

mv 用于将文件从一个位置移到另一个位置,也可用于更改文件名。

问题 4

命令 mv script.py 为何会抛出错误?

mv 命令需要两个参数,即源文件和目标文件。

问题 5

cd ~ 命令会做什么?

这会将您的工作目录更改为主目录。特殊字符 ~ 用于标识当前用户的主目录。它也可以与其他用户名结合使用:~user2 以指向其主文件夹。

问题 6

以下哪一项不是使用标签页自动补全文件名的理由?

因为它需要的处理能力较少不正确tab 需要大量的处理能力(通常可以忽略不计)才能扫描查找文件名的文件夹来自动填充,但在此过程中可以节省时间并避免拼写错误。

问题 7

如果新开发者尝试创建名为“my script.py”的文件,为什么命令 touch my script.py 不起作用?

它会创建两个文件,而不是只创建一个。touch 命令将创建新文件。终端空间中的分隔符是文件名,而不是字符。最好彻底避免使用这两种字符,但如果您必须使用,则应使用英文双引号将文件名括起来:

touch "my script.py"

问题 1

用于更改目录的终端命令为:

  1. move
  2. mkdir
  3. pwd
  4. cd

问题 2

如果要导航到当前工作目录的父文件夹,应运行什么命令?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

问题 3

使用哪个命令来创建文件?

  1. touch
  2. mkdir
  3. create
  4. pwd

问题 4

以下哪个命令将创建名为 index.htmlstyle.css 的两个文件?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

问题 5

您使用哪个命令重命名文件或文件夹?

  1. rename
  2. move
  3. mv
  4. rm

问题 6

rm cp 命令需要针对文件夹执行哪些标志?

  1. -f
  2. -r
  3. -x
  4. -d

问题 7

如需将 projects 移至 ~/Documents 并将其重命名为 Projects,哪个命令必须留空?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

问题 8

以下命令有何作用?

rm -r projects

  1. 删除名为 projects 的文件
  2. 删除名为“projects”的文件夹
  3. 重命名 projects 文件
  4. 在当前目录中搜索 projects

问题 1

用于更改目录的终端命令为:

用于更改目录的终端命令是 cd该命令本身是“change directory”的缩写。

问题 2

如果要导航到当前工作目录的父文件夹,应运行什么命令?

转到父文件夹的命令为 cd ..

问题 3

使用哪个命令来创建文件?

用于创建文件的命令是 touch

问题 4

以下哪个命令将创建名为 index.htmlstyle.css 的两个文件?

命令 touch index.html style.css 会创建两个文件。无需使用英文逗号分隔,也可以创建任意数量的文件,各文件之间用空格分隔。

问题 5

您使用哪个命令重命名文件或文件夹?

尽管它是“搬迁”的首字母缩写,并且可用于移动文件或文件夹,mv 也可用于重命名文件和文件夹

问题 6

rm cp 命令需要针对文件夹执行哪些标志?

rmcp 命令需要使用 -r 标志才能对文件夹运行,因为 -r 标志表示“recurotive”并针对其中包含的任何文件和文件夹重新运行该命令。

问题 7

如需将 projects 移至 ~/Documents 并将其重命名为 Projects,哪个命令必须留空?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

因为我们是在主目录中开始操作,所以我们需要运行 cd ~/Documents 才能让最后一个命令在正确的目录中运行。

问题 8

以下命令有何作用?

rm -r projects

此命令将删除名为 projects 的文件或文件夹,因为它是使用 -r 或递归标志调用的。如果没有该标志,此命令只能删除具有该名称的文件。