命令行是一种不使用 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 脚本语言编写的命令。命令是英文单词的首字母缩写或缩写。
打印工作目录 (pwd
)
当您在终端中导航时,有必要知道您身在何处(这也会直接转换为现实世界 - 如果您想去某个地方),首先需要知道您当前所在的位置。
# 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/
(末尾的 /
是可选的,但可让您知道目的地是目录)。
这样,自动补全功能不仅能节省工作的时间,还能在工作时提供有价值的信息。如果标签页按钮没有自动补全,那么您可能遇到了以下三个非常常见的问题之一:
- 无法从当前工作目录访问您要导航到的目录。
- 有两个目录具有类似的起始名称(例如
Documents
和Downloads
),而您尚未提供足够信息来让自动补全功能知道您希望哪一个。再按一次tab
可查看可匹配您输入的目录的目录列表。然后,再输入一些内容(足够多地确保只有一个匹配项),然后再次按tab
键。 - 您已经在单词的前半部分添加了拼写错误。
您越早养成使用标签页自动补全命令的习惯,就越可能处理命令似乎无法运行的令人沮丧的情况。
父级目录和子级目录
目录和文件可以彼此具有子项和父关系。如果 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_b
和 file_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'”。
移动和复制
移动文件和目录
版块构图和用途
我们可以在命令行中移动文件或文件夹,但需要指定以下三项内容:
- 我们使用
mv
命令 - Move 的缩写。 - 移动此移动命令,找到您要移动的文件或文件夹的名称。
- 根据目标文件的名称,将该文件移动到目标位置。
例如,如果您的文件结构如下所示:
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
重命名文件的命令。这意味着,如果您将文件移动到不存在的目录,或拼错了目的地,文件本身将被重命名而不是移动。
迷你挑战
- 创建 5 个文本 (.txt) 文件。
- 创建一个新目录。
- 将您创建的 5 个文件移至文件夹中。
- 创建文件夹并将此新文件夹移至其他文件夹。
复制文件和目录
版块构图和用途
构建 Web 应用时,我们可能需要复制文件(如果我们构建的是两个类似的网页,则可能不想从头开始),并且 cp
(复制)命令的语法与 mv
语法非常相似。
复制文件
复制命令包含三个部分:
- 命令
cp
- copy 的缩写 - 要复制的文件的名称
- 副本的名称(如果保留在同一文件夹中)或位置和名称(如果移至其他文件夹)。
# 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/
拥有大量同名文件可能会令人困惑,因此请仅在确定确实需要时才使用此方法。
复制目录
复制文件夹或目录稍微复杂一些,因为您可能不仅想复制文件夹,还想复制文件夹中的所有内容。
cp -R
命令(copy recursive 的缩写)- 用于空文件夹和非空文件夹- 来源名称(要移动的文件夹或文件)
- 副本的名称(如果保留在同一文件夹中)或位置和名称(如果移至其他文件夹)。
警告:指定副本的名称时,如果之前未创建文件或文件夹,系统会在创建副本时创建文件或文件夹。如果文件是在运行复制命令之前创建的,则会覆盖文件中之前的所有内容,因此请务必小心!
# 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
组件称为标志。标志始终以短划线开头,并与命令结合使用,以提供有关如何执行相应命令的更具体的说明。
迷你挑战
- 创建名为
my_original.txt
的文件 - 在同一文件夹中创建一个名为
my_original.txt
的新名称的副本。 - 创建一个新目录。
- 为该目录创建副本,但使用其他名称命名。
- 复制您在第 2 步中复制的文件,然后将其放入复制的目录(在第 4 步中)中。
移除文件和文件夹
版块构图和用途
我们可以在命令行中删除文件和文件夹,但操作是永久性的。
移除文件
要移除文件,可以使用命令 rm
(remove 的缩写),后跟文件名。
# 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
命令与回收站或电子邮件的已删除部分不同,它们无法被轻松恢复。通过这种方式删除文件时,请务必格外小心。
迷你挑战
- 创建 4 个文件。
- 删除其中的 2 个文件。
- 创建一个文件夹。
- 再创建一个文件夹,然后在其中创建一个文件。
- 删除这两个目录。
在您从 GitHub 下载的学生代码库中的以下文件夹中可以找到此实验的代码:command-line/labs/around-the-world
背景
您的学期即将来临,您就要开始规划欧洲旅行了...
短期内,你会在生活三个月后认真生活,确保自己充分利用每周末的行程。
幸运的是,您并没有从零开始学业,您的朋友已经为您提供了他们在学业中最喜欢的一些活动。抱歉,部分文件出错了...
不必担忧,您可以借助命令行的魔力立即修复它们!
任务
确保每个城市都位于正确的国家/地区,且每个城市文件夹中都有正确的纪念碑。请小心点,否则你最终还是会在阿姆斯特丹寻找埃菲尔铁塔的!
如果您对此感到信心十足,请隐藏 GUI,并直接从命令行接受此挑战。在执行所有这些操作时,您应留在通用的文件夹中,这意味着在引用文件夹和文件时使用绝对路径!
确定一切无误后,您在接下来的几个月中便可自管系统的位置。集思广益,集思广益,集思广益,集思广益,发掘新的城市、国家/地区和古迹,并将其添加到您的文件树中!
恭喜!您已正式学习如何使用计算机。想要更进一步?让我们的扩展程序吧...
扩展程序
- 再次合并所有文件,然后进入你选择的城市。重新整理文件,同时留在城市。
- 试试下面链接的一种有趣的命令行游戏
Terminus Game
Advanced Game(准备好进入 Google 模式) - 是《星球大战》的超级粉丝?请尝试在命令行中运行
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 技能。编写并运行执行以下操作的脚本:
主要任务
- 向您上面创建的文件添加命令,以转到您要创建的文件夹中。(我们使用哪个命令来更改目录?)
- 为新文件夹的名称加注日期标签。例如,程序应该创建一个名为 "
2017-12-07my_super_cool_folder
" 的文件夹。
- 输出“我当前的目录是:" 后跟您的工作目录,”是此目录中的所有内容的列表!" 后接当前目录的内容。
- 确定如何为您的 bash 脚本输入一个输入,然后基于该输入字符串创建文件。本实验中前面链接的教程在“变量”部分提供了一些很好的示例供您参考。
- 向用户索要姓名,然后输出“您好,很高兴见到您,请在此处输入他们的姓名”
- 请尝试让您的用户获取更多信息,并为其创建自定义消息。
背景信息
命令行(或终端)与计算机操作系统 (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
可将光标移到某个字词上
最佳做法摘要
- 使用
cd
、cd ..
或cd <folder name>
在终端上导航。 - 使用
ls
查看文件夹的内容。 - 使用
touch
创建文件;使用mkdir
创建文件夹。 - 使用
mv <item to move> <destination>
移动文件和文件夹。 - 使用
cp <item to copy> <destination>
复制文件和文件夹。 - 使用
rm <item to remove>
删除文件和文件夹。
问题 1
您会使用什么来标识当前的工作目录?
pwd
ls
cd
mkdir
touch
问题 2
如何从当前工作目录向上移动两层?
mv ~
cd ../..
mv up/up
cd ^(2)
问题 3
您将使用哪个命令重命名文件?
mv
cd
ls
python
rename
问题 4
命令 mv script.py
为何会抛出错误?
- 因为“
script.py
'”是无效文件名。 - 因为
mv
命令后面不得跟任何其他信息。 - 这是一个复杂的问题;不会产生错误。
- 因为移动文件至少需要两个参数 - 目标和目的地
问题 5
cd ~
命令会做什么?
- 将您的工作目录更改为主目录。
- 重复以上命令。
- 使用算法确定当前最有用的命令。
- 抛出错误。
问题 6
以下哪一项不是使用标签页自动补全文件名的理由?
- 因为它可以节省时间。
- 因为它有助于消除拼写错误。
- 因为它需要更少的处理能力。
问题 7
如果新开发者尝试创建名为“my script.py
”的文件,为什么命令 touch my script.py
不起作用?
- 因为
touch
无法创建新文件。 - 因为
.py
不是有效的文件扩展名。 - 因为这样会创建两个文件,一个名为 "
my
,一个名为script.py
,而不只是一个。 - 因为无法通过命令行创建新文件。
问题 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
用于更改目录的终端命令为:
move
mkdir
pwd
cd
问题 2
如果要导航到当前工作目录的父文件夹,应运行什么命令?
cd up
cd .
cd ..
cd ~
问题 3
使用哪个命令来创建文件?
touch
mkdir
create
pwd
问题 4
以下哪个命令将创建名为 index.html
和 style.css
的两个文件?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
问题 5
您使用哪个命令重命名文件或文件夹?
rename
move
mv
rm
问题 6
rm
和 cp
命令需要针对文件夹执行哪些标志?
-f
-r
-x
-d
问题 7
如需将 projects
移至 ~/Documents
并将其重命名为 Projects
,哪个命令必须留空?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
问题 8
以下命令有何作用?
rm -r projects
- 删除名为
projects
的文件 - 删除名为“
projects
”的文件夹 - 重命名
projects
文件 - 在当前目录中搜索
projects
问题 1
用于更改目录的终端命令为:
用于更改目录的终端命令是 cd
。该命令本身是“change directory”的缩写。
问题 2
如果要导航到当前工作目录的父文件夹,应运行什么命令?
转到父文件夹的命令为 cd ..
问题 3
使用哪个命令来创建文件?
用于创建文件的命令是 touch
问题 4
以下哪个命令将创建名为 index.html
和 style.css
的两个文件?
命令 touch index.html style.css
会创建两个文件。无需使用英文逗号分隔,也可以创建任意数量的文件,各文件之间用空格分隔。
问题 5
您使用哪个命令重命名文件或文件夹?
尽管它是“搬迁”的首字母缩写,并且可用于移动文件或文件夹,mv
也可用于重命名文件和文件夹。
问题 6
rm
和 cp
命令需要针对文件夹执行哪些标志?
rm
和 cp
命令需要使用 -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
或递归标志调用的。如果没有该标志,此命令只能删除具有该名称的文件。