面向新接触计算机的同学的计算机基础知识科普(一)
本文最后更新于 2024年10月12日 晚上
文件系统
文件就是字节序列,仅此而已。每个 IO 设备,包括磁盘、键盘、显示器、甚至网络,都可以看成是文件。
你手上的笔记本电脑,本质上就是一个文件系统,由文件和管理文件的工具组成。
因此我们将从 “文件” 这个基本概念,开始我们的计算机基础知识科普。
路径
每一个文件都被放在计算机中一个特定的地方,而 “路径” 用来描述这个地方具体在哪里。
“路径” 二字的中文意思会影响你对它的理解。总之,用 “坐标” 的中文意思来理解 “路径” 这个计算机概念会更合适。
下文中 “路径” 都指计算机概念里的 ”路径“。
做个类比,有人问我 “梅园宿舍” 在哪里,我会说 “九龙湖校区东北角”,这里 “九龙湖校区东北角” 就是 “梅园宿舍” 的路径。
但是,假设现在我在 “梅园快递中心”,又有人问我 “梅园宿舍” 在哪里,我更可能会说 “顺着两江东路往南走,在前面的路口左拐”,这里 “顺着两江东路往南走,在前面的路口左拐” 也是 “梅园宿舍” 的路径。
在计算机中,文件的路径有两种,分别是 “相对路径” 和 **”绝对路径”**,对应我们刚刚梅园宿舍的例子。
很显然,绝对路径不管你身在何方,都不会变化,而相对路径可能会随着你所在位置的变化而变化。
“九龙湖校区东北角” 是 “梅园宿舍” 的绝对路径。
“顺着两江东路往南走,在前面的路口左拐” 是当前位于 “梅园快递中心” 时,”梅园宿舍” 的相对路径。
终端
影视作品中的计算机高手们,似乎都在使用一个黑色的框框操作计算机。这个黑色的框框,我们称之为 **”终端 (Terminal)”**。
作为一个计算机专业的学生,你也有必要学会高手们的玩法。
当然,使用终端不仅仅是为了帅,而是切切实实的有很多好处:
熟练以后使用终端进行操作比使用图形化界面操作要快很多。
由于制作图形化界面的成本太高,你会接触到很多只能通过终端使用的软件。
下图是一个终端:
打开终端
打开终端的办法挺多的,常用的有以下几种:
- 按下 “Win徽标” + “r” 键先打开 “运行”,输入 “PowerShell”,按下回车。
- 在桌面或者一个文件夹的空白部分右键,选择 “在终端中打开”(Windows11 操作系统才可以这样做)。
- 在 Windows 搜索框中输入 “PowerShell”,选择 “Windows PowerShell” 并打开。
工作目录
工作目录也叫工作路径,它就是你在计算机系统中的位置。
目录本质是一个文件夹。
在上面的例子中,我的工作目录是 “梅园快递中心”,”梅园宿舍” 的相对路径是 “顺着两江东路往南走,在前面的路口左拐”。
只要没有特别说明,”相对路径” 都指相对于工作目录的路径。
终端会显示工作目录,例如上图,最后一行是:
1 |
|
其中:
- “PS” 是 “PowerShell” 的简写。
- “C:\Users\huany” 是工作目录/工作路径。(”huany” 是我电脑的用户名,你的电脑用户名可能是其它的)
- ‘>’ 是一个提示符,作用是分割前后的内容。
用上文中第二种方法打开终端时,初始工作目录就是桌面或者对应的文件夹,用其它两种方法打开时,初始工作目录被称为用户目录。
切换工作目录
我们用 cd
命令来切换工作目录,以下图为例:
例如,在上图靠上的文件夹,用第二种方式打开终端,我们当前的工作目录是 C:\Users\huany\Desktop\英语四级真题
。(这个目录对应了电脑桌面上的 “英语四级真题文件夹”)
现在希望把工作目录切换到 2021 这个文件夹下。
这个文件夹的相对路径是 2021
,绝对路径是 C:\Users\huany\Desktop\英语四级真题\2021
。
在终端中输入以下两行命令中的任意一行都可以改变工作目录。
命令输入完成后按下回车执行这条命令。
1 |
|
如果我们此时的工作目录在另外的地方,又该怎么办?
假设我们在桌面打开了终端,此时的工作目录是 C:\Users\huany\Desktop
。
尝试上面的两行命令:
第一个命令执行失败了,出现了红色的文字,提示发生错误。
第二个命令能够正常执行。
一般来说,终端中的红色文字出现时表明程序执行发生了错误,阅读这部分文字可以知道错误是什么。
第一条命令使用的是之前的相对路径,但由于我们的工作目录发生了改变,所以这个相对路径不再正确,自然无法执行成功。
第二条命令使用了绝对路径,绝对路径不会随工作目录而改变,所以能够执行成功。
工作目录是 C:\Users\huany\Desktop
时,C:\Users\huany\Desktop\英语四级真题\2021
文件夹的相对路径是:英语四级真题\2021
,所以使用以下命令就可以完成切换。
1 |
|
此时我们的工作目录是 C:\Users\huany\Desktop\英语四级真题\2021
,我们想查看 2022 年的真题,又该怎么切换工作目录过去呢?
用绝对路径:这个不难吧。
用相对路径:
此时有一个问题,从
C:\Users\huany\Desktop\英语四级真题
到C:\Users\huany\Desktop\英语四级真题\2021
时,后者是前者的一个子文件夹,直接用文件夹名字表示相对路径就行了, 那么,应该如何表示父文件夹的相对路径呢?我们用
..
表示父文件夹的相对路径,例如,工作目录是C:\Users\huany\Desktop\英语四级真题\2021
时,C:\Users\huany\Desktop\英语四级真题
的相对路径表示为..
。执行
cd ..
可以切换回C:\Users\huany\Desktop\英语四级真题
:再执行一个
cd
命令就可以切换到C:\Users\huany\Desktop\英语四级真题\2022
了。我们也可以一步到位:
cd 命令的格式
1 |
|
在这条命令中,如果路径中含有空格,需要把路径用双引号括起来。
路径的格式
- 绝对路径:
[盘符]:\[第一级目录]\[第二级目录]\[第三级目录]\[文件名(filename)]
- 相对路径:
[第一级目录]\[第二级目录]\[文件名(filename)]
- 用
..
表示父文件夹。
- 用
文件和目录
一个路径,它所描述的对象要么是一个目录(文件夹),要么是一个文件。
还是以上面的图片为例,路径 C:\Users\huany\Desktop\英语四级真题\2021
的对象是一个目录(文件夹),路径 C:\Users\huany\Desktop\英语四级真题\2021\3.jpg
的对象是一个文件。
显然,由于工作目录必须是一个目录(文件夹),所以 cd
命令的第二个路径参数只能是 “文件夹” 的路径。
文件的拓展名
文件名(filename)由文件名(base name)和拓展名两部分,以 C:\Users\huany\Desktop\英语四级真题\2021\3.jpg
为例,它的文件名(filename)是 3.jpg
,文件名(base name)是 3
,拓展名是 .jpg
。
用终端打开文件
在终端中输入文件的路径,就可以直接打开这个文件。
如果没有特别说明,”路径” 既可以是绝对路径,也可以是相对路径。
系统路径
在网上的部分教程中,这个概念和 “环境变量” 是混为一谈的,实际上,“系统路径” 是 “环境变量” 之一,但对于不是程序员的人来说,唯一会用到的 “环境变量” 就是 “系统路径” 了。
我们知道用终端可以打开文件,而软件是文件的一种,同样可以用终端打开。
我电脑上,软件 “计算器” 所在的路径是 C:\Windows\System32\calc.exe
,难道我每次打开计算器,都需要把这么长一段路径输入进去吗?
答案是否定的:
只需要输入 calc
就可以打开 C:\Windows\System32\calc.exe
这个文件,我们发现两件事情:
- 没有输入文件拓展名:直接打开
.bat
和.exe
为拓展名的文件时,文件名(filename)不需要包含拓展名,只需要输入文件名(base name)。 - 只输入了文件名(filename),没有输入路径:该文件所在的目录(文件夹)被加入了 “系统路径”。
当输入一个文件名(filename/base name)时,操作系统会根据以下规则尝试寻找这个文件:
- 将该文件名直接作为相对路径查找对应文件。
- 按顺序在每一个系统路径项下查找拥有该文件名(filename/base name)的文件。
注意,如果输入的子串中包含目录,例如 System32/calc.exe
,那么它不会被识别为文件名,自然也不会在系统路径中查找。
请看下面的例子:
bin
文件夹的路径被加入了系统路径,但 123
文件夹中的文件不能通过 123/文件名
的方式在其它地方访问。而 g++.exe
可以在任何地方输入 g++.exe
打开。
如何添加系统路径
快捷键 Win+R,输入”system.cpl” 后回车。
会打开系统配置界面,然后点击高级,再点击环境变量。
打开环境变量之后,上方为当前的用户变量,下方为系统全局变量。我们选中用户变量的 Path 变量,点击编辑。
点击新建按钮,可以增加新的系统路径。
一路点击确定,完成添加。
完成添加后,需要重新启动终端,才能使系统路径在终端中生效。
*点击上图中下方的系统变量 Path,可以看到有一项是 C:\Windows\System32
*。
实践:用终端来编译并运行你的 C++ 程序
不会还有人不知道 C++ 代码要先编译成可执行文件才能运行吧。
不会吧不会吧
MSVC
C++ 课老师第一节课喊你下载的十多个GB的 Visual Studio 自带了一个 C++ 的编译器,它的名字是 MSVC,你在 Visual Studio 中运行 C++ 代码的时候就是用它编译的。
MinGW 套件
由于一些原因,你不应该在除了 Visual Studio 之外的地方使用 MSVC,相信打开 Visual Studio 的用时也让你苦不堪言。
所以你应该下载一个 MinGW 套件,这里面含有一个名叫 g++ 的软件,可以用来编译 C++ 代码。
尝试编译
将下载的压缩包解压为一个文件夹,这个文件夹中有一个子文件夹 bin
,bin
文件夹下有一个 g++.exe
,g++.exe
就是编译 C++ 代码的直接工具。
首先我们在桌面上写一份代码,将它保存为 hello.cpp
。
你可以打开记事本把下面的代码复制进去,然后保存到桌面。
注意,记事本保存的文件拓展名可能是 .txt
,你需要看看上面的教程,把拓展名改为 .cpp
。
也有可能保存的时候可以自己写拓展名,你将文件名(filename)输入为 hello.cpp
即可。
1 |
|
在桌面打开终端(或者打开终端后将工作目录切换到桌面),我们可以用以下格式的命令来使用 g++ 编译 C++ 文件:
[g++.exe 的路径] -o [可执行文件路径] [源代码(.cpp)文件的路径]
。
第一个内容是程序名,后面的三个内容被成为这个程序的参数。程序名和参数,参数和参数之间用空格分开,所以如果参数中包含空格,必须用双引号引起来。
例如,我的 g++
在以下文件夹中,路径是:C:\Users\huany\Desktop\C++ 环境配置入门\mingw-w64-gcc-9.3-stable-r32\bin\g++.exe
。
我的源代码放在桌面上,路径是:C:\Users\huany\Desktop\hello.cpp
。
可执行文件是编译后生成的文件,按照习惯,它应该放在源文件所在的目录下,文件名(base name)和源代码文件相同,因此它的路径是 C:\Users\huany\Desktop\hello.exe
。
因此,我们执行以下编译命令:
1 |
|
特别的,如果执行的程序的路径被双引号引起来了,必须在命令前面加上字符 &
。
执行完这个命令后,桌面上生成了一个文件 hello.exe
,我们现在可以用终端执行这个文件了。
通过输入相对路径的方法执行一个文件时,需要在路径前面加上 ./
。
运用你的知识来简化命令
使用相对路径
为了确保你真的执行成功了,请在每次编译生成 hello.exe
并执行它后将它从桌面上删除。
编译一个程序,真的要输入这么长的命令吗,答案是否定的,我们首先可以使用相对路径来减少输入内容,执行这个命令:
终端的原则是 “No News is Good News”,如果你执行完一个命令后什么都没输出,那么它大概率执行成功了。
省略 .exe 拓展名
我们提到一个文件的拓展名是 .exe
时,可以省略拓展名只写文件名:
使用系统路径
将 g++.exe
的目录 C:\Users\huany\Desktop\C++ 环境配置入门\mingw-w64-gcc-9.3-stable-r32\bin
加入系统路径,我们就可以像使用计算器一样使用 g++ 了。