14  计算机基础知识

14.1 引言

在当今数字化时代,计算机技术已成为金融和经济领域不可或缺的工具。无论是进行市场分析、风险评估还是交易执行,掌握基本的计算机知识对于金融和经济专业的学生至关重要。计算机本应该成为大家工作、学习的得力助手,但对于基础计算机知识、运行逻辑缺乏了解,会严重阻碍大家编写代码完成数据分析的工作。本章旨在提供一些基础的计算机知识说明,主要目的是帮助大家理解Stata代码运行背后的逻辑,从而帮助学生更加有效地处理数据、分析信息。我相信,了解这些知识不仅对于学好任何一门编程语言有价值,应该对于大家未来的学习、生活、工作都有帮助。

如下几点提请读者注意:

第一、本章中关于计算机的的一些说法并不严谨,如果对这部分知识有兴趣的同学,可以参考任意《计算机组成原理》的课程或者教材; 第二、本章内容定位也不是初学者的入门指南,而是提供一些操作上的指引,很多地方的介绍并不足够细致,鉴于本教程的读者计算机知识参差不齐,如果对于某些知识点、操作方法感兴趣、或者想要清楚理解背后的原理,读者需自行搜索学习相关的计算机知识; 第三、本章中的例子基于的操作系统分别是Windows10 22H2版本和macOS Big Sur 11.6.5版本,并不能保证在其他类型或版本的操作系统中完全适用,读者可能会发现有些操作在自己计算机上的操作与本教程的内容有细微或者巨大差异,请自行检索如何在自己操作系统上进行处理。

本章的安排如下:小节 14.2 主要介绍了计算机的基础个概念,小节 14.3 介绍了计算机的硬件,小节 14.4 介绍了计算机的软件,小节 14.5 介绍了计算机中的文件和文件夹系统。 小节 14.6 介绍了二进制、编码的基本概念,小节 14.7 介绍了一些最基本的命令行工具。 另外本章的附录中还给大家列举了一些计算机软件、硬件、编码的科普视频,供大家课后学习了解

则列出了一些我认为大家应该掌握的概念,包括文件和文件夹的概念、系统变量、文件的编码与乱码等等;小节 14.7 则介绍了如何利用终端和命令行工具进行一些简单的操作。

本章的附录还列出了

14.2 计算机系统概述

14.2.1 计算机的基本组成

计算机就是由一系列逻辑电路构成的复杂机器,可以接受用户的数据输入,然后通过实现编写好的程序对数据进行处理,最后将数据结果输出给用户。

目前大家使用的计算机是由硬件系统和软件系统两大部分组成。硬件系统是构成计算机各个功能部件的集合,是看的见、摸得着的是实实在在存在的物体,是计算机完成各项工作的物质基础。软件系统是指与操作相关的程序以及所有相关的文档和数据的集合。其中程序是用程序语言编写的适合计算机执行的语句指令序列。硬件系统和软件系统二者是相互依赖,缺一不可,共同构成一个完整的计算机系统。图 14.1 给出了典型的计算机系统架构。

图 14.1: 典型的计算机系统构成

现代的计算机大都绕不开“冯诺依曼”体系结构。 1945年,冯·诺依曼提出了电子计算机系统制造的三个基本原则,即采用二进制逻辑、程序存储执行以及电子计算机系统由五个部分组成(运算器、控制器、存储器、输入设备、输出设备,其中运算器与控制器又共同组成为中央处理器CPU),这套理论被称为冯·诺依曼体系结构。 冯诺依曼体系结构

下面这个视频向大家生动地介绍了计算机的软硬件结构和工作流程:

14.3 计算机硬件基础

从外观来看,计算机特别是台式计算机通常由键盘/鼠标等输入设备、显示器打印机等输出设备、和主机构成。键盘鼠标显示器的功能此处不再赘述。主机是整个计算机的核心,其中最为重要的硬件包括:主板、CPU、内存、硬盘。

14.3.1 主板

打开主机后,可以看到主机中的很多硬件设备,而这些硬件都需要插在一块称为主板的电路板上,通过主板相互联接和通信。主板上的硬件主要包括:中央处理器(CPU)、内存(RAM)显卡、硬盘、风扇、电源。主板理是各个硬件设备的载体和相互联系的通道,所有硬件都需要与主板连接。

14.3.2 中央处理器

Central processing unit,简称CPU,是计算机的大脑,通过安装在主板上,它可以与主板上的其他组件(内存、硬盘等)进行数据存取、运算和通信,CPU的主要功能就是执行指令和数据运算,用户在计算机上执行的任何操作都会以指令的方式发送给处理器进行执行和运算处理。处理器在持续运行的时候会产生大量的热量,因此处理器通常都有风扇作为冷却降温的设备来附注散热。CPU的执行速度非常快,是计算机中速度最快的设备。

14.3.3 存储设备

内存(RAM)负责临时存储数据,而外存(如机械硬盘和固态硬盘)则用于长期存储。在处理大量金融数据时,足够的内存和快速的存储设备是提高效率的关键。

14.3.3.1 内存

Random access memory,简称RAM,随机存取存储器通常又被称为内部存储器,简称内存。内存用于临时存储CPU中的运算数据以及与硬盘等外部存储设备的交换数据,需要注意的是,当计算机断电时,内存中所有的数据都会全部丢失1(而硬盘可以保证断电后数据仍然存在)。内存的形状通常是长条状,目前市面上常见的内存条中,单根内存条的存储空间通常在4GB到32GB之间。 所有的软件、程序都是运行在计算机的内存中的,这也是为什么RAM又被成为运行存储器(简称运存)的原因,因此内存的大小以及内存的读取读写速度都会直接影响计算机中运行程序的多少、运行程序的速度。如果同时打开的程序、软件太多,或者内存容量过低,会导致电脑运行卡顿。

14.3.3.2 硬盘

为了在计算机断电后长期储存数据,我们还需要一种不同于内存的存储设备——硬盘。硬盘的全称是硬盘驱动器,Hard-disk Driver,硬盘可以分为HDD(机械硬盘)和SSD(固态硬盘)两类,机械硬盘内部有机械磁头和磁盘组成,而SSD则使用闪存颗粒作为存储介质,固态硬盘的读写速度相对更快(相比机械硬盘而言)。硬盘的任务就是长期存储计算机的所有数据,以保证这些存储的数据能够在下次开机时仍然可用。硬盘的优点有两个,除了能够长期存储数据外,另一个优点是成本低、存储空间大,目前市面上主流的机械硬盘都在1TB以上,固态硬盘也都在500GB以上。但缺点是读写速度太慢。

14.3.3.3 存储设备总结

  • 计算机的文件、包括操作系统本身都是一般都是安装在硬盘中的
  • 当计算机通电之后,会从硬盘上读取文件(包括操作系统),放到内存中执行
  • 文件、软件的运行是在内存中,存放是在硬盘中

14.3.4 其他

  • 电源通常位于机箱的角落位置,为整个计算机主机的运行供电。
  • 风扇则用于对整个机箱降温。
  • 显卡是用于处理图形、运行3D软件以及大型游戏,并通过显卡接口和连接线与显示器连接,将图形输出到显示器中予以展示。显卡分为集成显卡和独立显卡两种,集成显卡是将显卡的功能集成在CPU中,然后共享部分内存作为显存使用,图形处理能力相对较低;独立显卡是单独一块硬件,通常插在主板上,有单独的显存空间,图形处理能力更强。

14.3.5 获取本机的CPU、内存与硬盘信息

那么如何知道我们电脑上的CPU信息、内存容量和硬盘容量的信息呢?在windows系统下,查看CPU和内存可以通过查看系统信息的方式获取: 首先打开一个资源管理器窗口,右击侧边栏中的“此电脑”或者“我的电脑”,然后点击“属性”,windows 10和windows 11操作系统可以通过“设置”——“系统”——“系统信息”的方式查看 硬盘则可以通过“磁盘管理器”查看。

总结
  1. CPU、内存和硬盘是计算机最为核心的硬件。
  2. 三种硬件的在速度和空间大小上存在显著差异:
    • 速度:CPU运算 \gg 内存读写 \gg 硬盘读写
    • 存储空间:CPU \ll 内存 \ll 硬盘
    • 断电后内存数据消失,硬盘数据可以保存
  3. 程序的运行都是在内存中,CPU不直接从硬盘读写数据,而是将内存作为中介。

14.4 计算机软件基础

14.4.1 系统软件——操作系统

操作系统是管理和协调计算机硬件与应用软件的软件。Windows、macOS和Linux是最常见的操作系统,它们各有优势,学生应根据自己的需求和偏好选择。

14.4.2 应用软件

金融和经济领域常用的应用软件包括Excel、SPSS和Stata等,这些软件可以帮助学生进行数据分析、统计计算和图表制作。

14.5 文件和文件夹管理

在金融和经济领域,有效的文件和文件夹管理是至关重要的。它不仅有助于保持工作的组织性,还能确保数据的安全性和可访问性。以下是文件和文件夹管理的关键概念和实践:

14.5.1 文件系统基础

文件系统是计算机用来存储和组织计算机文件以及它们的数据的一种系统。它允许用户和软件访问和存储数据。在金融和经济领域,文件通常包含重要的数据和分析结果,因此理解文件系统的原理对于保护这些信息至关重要。

  • 文件和文件夹的概念:文件是存储在计算机上的基本信息单元,可以是文本文档、电子表格、演示文稿或任何其他类型的数据。文件夹(也称为目录)用于组织和管理文件,它们可以包含其他文件夹和文件,形成树状的层次结构。最上层的目录称为根目录,根目录下可以有子目录,每一级目录(包括根目录)内斗可以有文件。
  • 文件名称:文件名称由两部分构成——主体部分和扩展名。两部分之间以点号隔开。例如文件名例子.docx中,主文件名就是例子,而扩展名是.docx
  • 文件类型和扩展名:文件类型指示文件的内容和用途,而扩展名是文件名的一部分,用于标识文件的格式,或者说为了让操作系统知道用什么软件打开它。正确使用扩展名能够让我们让我们使用电脑拥有更好的体验。例如,看到扩展名是.docx的文件你就会下意识的认为是一个Word文档,看到扩展名是.xlsx的文件就会下意识的认为是Excel电子表格。
说明:关于扩展名

了解扩展名有助于快速确定文件的类型、分类管理。操作系统中通常基于扩展名将文件与特定软件关联起来。在windows10操作系统中,双击文件后会根据这些默认关联规则用特定的软件打开对应的文件,例如双击.txt文件会在记事本软件打开该文件、双击.docx文件(通常)会在word软件打开该文件、双击.do文件会在Stata的代码编辑器中打开该Stata代码文件,双击.dta文件会在Stata窗口中打开对应的数据文件(上面这些要求在windows10系统中妥善安装了office软件、Stata软件)。

需要指出的是,扩展名与文件的关联更多是一种约定俗成并不是强制的。事实上完全可以人为修改文件扩展名和修改扩展名关联的软件。 例如,我们可以将文本文件的后缀名.txt改成.do(例如把文件abc.txt改成abc.do),这样就可以得到一个Stata中的代码文件(在Stata中,代码文件的缀名.do,但这个文件本质上是一个文本文件)。 当你双击.do文件的时候会在Stata的代码编辑器中打开,如果你用记事本打开这个.do的文件,你会发现内容是一样的(只是在不同的软件中打开而已)。 我们也可以用记事本打开.docx文件,但这样打开的文件会是乱码,在不了解的情况下,我们并不推荐更改文件类型与的默认打开软件之间的关联。

尽量不要在文件名的主体部分出现扩展名或者说不要叠用扩展名,尤其是不要在一个文件中出现两个扩展名,例如例子.xlsx.docx是一个非常让人困惑的文件名,尽管这是合法的命名方式,而且系统会将之识别为docx文件,应当避免这样。尤其是操作系统中通常会默认隐藏“已知文件类型的扩展名”(推荐大家在操作系统中取消这一默认设置)。例如上面的例子.xlsx.docx就会显示为例子.xlsx,你会觉得这是一个excel文件,但是系统看来实际是一个word文档文件。

14.5.2 如何定位一个文件?

为了定位硬盘中的某一个文件,我们需要路径和文件名连个要素,缺一不可。路径是指从磁盘的根目录一直到文件所在层级的文件夹位置的一些列文件夹序列,文件名就是上一小节中介绍的文件名,包括主体和扩展名两部分。例如C:\Program Files\Stata17\StataMP-64.exe就定位了路径C:\Program Files\Stata17下的StataMP-64.exe文件。

在同一个目录下,不能有两个同名的文件,否则会导致文件逻辑的混乱,操作系统也不会允许这种操作。但是不同路径下,可以保存相同文件名的文件。例如你可以将StataMP-64.exe复制到C:\Users\<YourUserName>\Documents\路径下。

因此,当我们从硬盘中读取文件或者想硬盘中写入文件时,必须要指定文件名以及文件所在的路径

14.5.3 windows操作系统下的文件和文件夹

大多数同学的电脑操作系统仍然是windows系列,windows操作系统中对于磁盘的管理的有一个“分区”的概念,你可以将自己电上的硬盘划分成一个或者多个分区,并给每个分区分配一个盘符(硬盘通常从C盘开始,A盘和B盘则留给了软驱,目前市面上已经淘汰这种存储介质)。 在windows中,文件系统采用层次化的目录结构,类似于一棵树。根目录通常是C盘即C:\,此外还可能有一些其他的盘符,例如D盘和E盘,即D:\E:\,他们也被称为根目录。根目录下可以存放文件、也可以新建子目录,子目录内可以进一步新建文件或者新建子目录,由此构成树形结构。

windows下C盘内有一些重要的文件夹,理解他们的功能对于你理解软件的文件处理会有一定帮助。

  • C:\Windows 这个是Windows系统所在的目录,包含了操作系统的核心文件,如系统文件、驱动程序和系统配置。
  • C:\Program FilesC:\Program Files (x86) 存放安装的应用程序的目录。这两个目录里安装的文件通常操作系统中的所有用户都可以调用2,将程序安装在这两个路径下通常需要管理员权限3
  • C:\Users:用户文件和配置文件,通常是 C:\Users。每个用户都有一个独立的子文件夹,以其用户名命名。如果你的用户名是Zhangsan,那么将会有一个目录C:\Users\Zhangsan,用于存放用户Zhangsan相关的文件;很多同学的电脑用户名可能是Administrator,对应的用户目录就是C:\Users\Administrator
  • C:\Users\<YourUserName>\Desktop:用户桌面对应的目录。
  • C:\Users\<YourUserName>\Docuemnts: 用户文档对应的目录。
  • C:\Users\<YourUserName>\AppData\Local\Temp:用户的临时存储目录,很多软件生成的临时文件会存放在这个目录下,包括Stata运行时也会在这个目录下生成文件,我们在后文介绍
  • C:\Users\<YourUserName>\AppData\Roaming:用户的程序安装或者运行的目录,没有管理员权限的程序很多时候会安装在这个目录下。
技巧:windows下快速获取文件所在路径和文件名

如前面所述,如果要准确描述电脑硬盘中的一个文件,我们需要提供它所在的完整路径和文件名称,此处向大家介绍获取路径和文件名的方法。

首先,关于获取文件所在路径,你可以在打开文件所在文件夹后,单击地址栏,此时就会默认选中该路径,右击后点选复制(或者按下快捷键ctrl+C),就可以将路径复制到剪贴板,如下图的Panel A所示;也可以在当前目录先选择一个文件,鼠标右击后单击属性,在弹出的属性窗口中也会显示出文件所在的路径,如下图的Panel B所示,路径的内容是可以选中和复制的。

Panel A. 地址栏快速复制路径

Panel B. 属性显示路径
图 14.2: 快速获取文件所在路径

其次,如果需要获取文件名,在文件名称短、名称简单的情况下,直接输入即可,如果文件名较长、涉及一些特殊字符、或者单纯为了避免手动输入错误,可以借用“重命名”的功能实现快速复制:选中你要获取名称的文件,先后点击两次(不是双击)或者选中后按下快捷键F2、或者是右击然后点选“Rename(重命名)”,此时会默认选中文件名(但是没有包含扩展名),你可以全选所有文件名或者按下快捷键Ctrl+A,然后右击后点选“复制”或者按下快捷键Ctrl+C,就可以将文件名复制到粘贴板,如下图所示。

快速获取文件名

本讲义中也提供了对于苹果操作系统中文件系统的说明,如果你使用的是苹果操作系统(macOS),可以查看本文章附录中的 小节 14.9.1 一节。

14.5.4 路径应该选择/还是\

在不同的操作系统中,对于文件夹或者目录的表示是不同的,例如在windows操作系统中,是以反斜杠\表示路径,但也支持用斜杠/表示路径,例如上面的C:\Program Files\Stata17\StataMP-64.exe也可以写成C:/Program Files/Stata17/StataMP-64.exe。但在macOS和Linux操作系统中,只能用斜杠/表示路径,例如/Users/<YourUserName>/Desktop/abc.txt

本教程的内容中,将会优先使用斜杠/来表示目录(文件夹),也推荐大家这么做。当然,如果你只在windows电脑上使用,而且确信你的合作者(合作编辑或者使用相同的代码文件的人)中也全部使用windows操作系统,你可以放心使用反斜杠\表示目录。

选择/并非完全基于和其他操作系统兼容的考虑,还有一个重要的原因在于,很多编程语言(包括Stata)将\视为转义符号(Escape Charater)。转移符号用于表示那些在普通文本中无法直接输入的字符,或者用于改变紧随其后的字符的含义。转义符号存在是因为在编程和文本处理中,部分符号被赋予了特定的含义,而这些符号本身无法直接显示了。例如,在 C、C++、Java、Python 等语言中:

  • \t表示换行符。
  • \n表示制表符(Tab)。
  • \\表示反斜杠本身。
  • \" 表示双引号。

因此,为了兼容性和避免与转义符号混淆,推荐大家优先使用斜杠/来表示目录(文件夹)

14.5.5 与Stata相关的文件类型

与Stata软件相关的文件类型主要有如下几类:

  • .dta:Stata的数据文件,二进制格式,读写速度比文本文件更快。
  • .do:Stata的普通代码文件,文本格式。
  • .ado:Stata的函数代码文件,通常用于函数编程。
  • .smcl:Stata格式的文本标记语言,类似markdown、HTML文件,用于显示Stata样式的日志文件、帮助文档等。
  • .mata: Stata中矩阵运算代码文件。
非常重要!显示扩展名、显示隐藏文件

在当下很多主流操作系统(Windows 10/11, macOS),会默认不显示文件的扩展名,例如文档.docx,在很多人的电脑上默认显示的只有文档。对于使用电脑日常办公来说,隐藏已知类型文件的扩展名也许是一个简洁显示的便捷方法,但对于需要编写代码进行数据处理的人来说,操作系统隐藏扩展名是非常糟糕的。

在windows10操作系统中,你可以在File Explorer(文件浏览器)中,点击 View(视图),在Shouw/hide选项卡中勾选“File extension name”来设定计算机默认显示扩展名(其他Windows操作系统或者macOS操作系统请自行在网上搜索如何显示/取消显示文件扩展名的方法)。

例如在下图的对比中,Panel A是显示了扩展名后的结果,文件fegen.adofegen.shlp可以很明确的确定是两个文件,然而一旦隐藏扩展名,这两个文件只看主文件名就是同名文件了(如Panel B所示)。

Panel A. 显示扩展名

Panel B. 隐藏扩展名
图 14.3: 显示文件扩展名和隐藏文件

对于计算机知识不太丰富的同学,为了防止发生一些你理解不了的意外情况,!!!请务必显示文件扩展名和显示隐藏文件!!!

14.6 二进制与编码

14.6.1 二进制

计算机中采用的是二进制。在我们上文提到的冯诺依曼结构中,曾指出计算机中采用的是二进制,也就是说,计算机中所有的数据(包括指令)都是以0和1的组合进行存储和运行的。

采用二进制的原因包括:

  1. 二进制的电路实现简单(电压的高低、电路是否导通等二元结构即可)。
  2. 二进制下数据的物理存储简容易实现(磁极的方向、表面的凹凸、光照有无)。
  3. 二进制的容错性高,传输和处理的过程中不容易出错
  4. 与逻辑代数(离散数学)对应
  5. 运算规则简单、运算速度快

单纯的0和1是没有太大的意义的,但可以通过多个0和1的组合得到有价值的信息。例如当我们有2个二进制位时,我们可以得到00011011四种情况,随着二进制位数的增加,我们能够表示的信息量也呈指数型增长: 1位二进制数字只能表示两种取值,2位二进制数字可以表示4种取值,\cdotsn位二进制数字可以表示2^n种取值。

14.6.2 存储容量单位换算

在计算机中,我们将一个二进制数位称为一个比特(bit),将8个比特称为一个字节(Byte),并简写为B。因此1B的存储空间就是8个二进制数位,理论上可以表示最多2^8=256中不同的结果。 在比特(B)的基础上,我们进一步定义了Kilo Byte(千字节KB),Mega Byte(兆字节MB),Giga Byte(十亿字节GB)、Tera Byte(TB)、Exa Byte(EB)和ZettaByte(ZB)等更大的单位,他们相互之间的换算关系是每一级是前一级的1024(2^{10})倍:

1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB \cdots

目前,内存的容量大多在GB数量级,而硬盘尤其是机械硬盘大多已经可以达到TB数量级。

14.6.3 编码

明白了二进制的价值,我们还需要考虑的一个问题是,如何基于0和1设定一套规则,可以用他们来表示文字、图像和视频等。这就涉及到了文件的格式与编码。

本文中我们忽略文件格式的问题,先考虑如何从二进制到西文字母的转换(稍后我们会再谈中文的问题)。一个最直接的想法就是制定一份密码表,例如我们可以用3位二进制数字来表示英文字母,规定000表示字母a001表示b。显然这个方案下二进制位数不够,我们一共有26个英文字母,但3位二进制数只能代表8种取值,我们可以通过增加二进制位数来解决。这就是编码,也就是指定一份规则,规定好:1.用多少个二进制位数合并在一起来表示信息;2.每种二进制数字组合对应的真实信息。当然这有一个潜在的假设:需要表示的信息必须是有限的。如果我们要表示的信息有无穷多种可能,那是没有办法实现编码上的穷举的。

简单来说,编码就是一套规则体系,实现了人类能够看懂的文字和机器能够看懂的01数字序列之间的对应规则。如果你打开windows系统自带的记事本程序,选择另存为操作,你会看到在保存时有一个设定编码(Encoding)的选项:

你会看到这里有几种可供选择的编码方案,包括:ANSI,UTF8,GB18030。这些都是常见的编码方案。

编码方案中最基础也是最早大范围应用的方案是ASCII编码,对应于上图中的ANSI。 西方拉丁语系通常都是由少量字母组合成为单词、再由单词组合成句子来表示信息,再加上数字、标点符号和特殊字符等信息,就可以覆盖几乎全部的英语字符信息。大名鼎鼎的ASCII码正是这样一套基于英文字母的字符编码,它使用8位二进制数字,收录了128个西文字符,包含了基本的英文字母、阿拉伯数字、标点符号、特殊符号和一些具有特殊功能的字符,对应关系如 图 14.4 所示。

图 14.4: ASCII编码对照表

有了这张表,计算机在从硬盘上读取文件的时候,就会按照一个字节(8位二进制数字)去读取,并“翻译”成我们人类能够看懂的字母来表示。

例如Stata这个单词应占据5个字节的存储空间:01010011|01110100|01100001|01110100|01100001,而常见的软件例如“记事本”可以自动按照ASCII编码的规则,将二进制信息转换成对应的英文字母。

ok,现在你已经理解了编码的意义。回到本小节开头时我们提到的中文问题。与英文只有26个字母不同,中文中常见的汉字有几千个,如果加上生僻字,字符的数量将超过2万个。因此ASCII编码并不适合中文字符。常见的中文编码方式有:GB2312、GBK和GB18030,GB2312包含7000多个汉字和字符,GBK包含21000多个,GB18030更厉害,到了27000多个。他们都是用2个字节来表示一个汉字。4

Unicode是统一编码,它建立了一个全世界统一的码表。世界上的所有文字,在这张码表中都是唯一的。有很多种,包括UTF-8,UTF-16和UTF-32等多种实现方式,不同实现方式的区别就是占用空间的大小的差异。

UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。在储存中文字符的时候,UTF-8编码使用三个字节。

中文编码方式总结

如果都需要存储中文,使用UTF-8编码每个字符占3个字节的空间;使用GB18030编码的每个字符占2个字节的空间。 在Stata中,14以后的版本均采用Unicode编码,这才真正实现了对中文较为友好的支持。

14.7 命令行工具/终端工具

掌握一些命令行/终端的命令,可以方便理解Stata中的一些文件操作指令。

在早期的操作系统(例如DOS系统、Unix系统)或者服务器的操作系统(例如服务器版的Linux系统)中并没有图形化的操作界面,与计算机的交互是通过命令行界面完成的。它允许客户执行各种操作,例如文件管理、程序运行、系统配置等。尽管命令行的方式运行起来效率较高,在专业人员手中可以高效率完成诸多复杂任务,但是使用门槛较高,因此现代操作系统都采用了图形化界面,大家日常电脑中使用的就是这类操作系统(微软的windows系列、苹果的Macintosh系列到现在的macOS系列)。

但操作系统中仍然保留有这些命令行的工具,例如windows操作系统中有命令提示符(Comand Prompt)和Powershell两个应用程序,macOS中有终端应用程序(Terminal.app)。我们可以通过命令来实现一些文件、文件夹的操作 (不同操作系统下的命令可能会有一些细微差异,但大多数命令都是非常接近的,甚至命令的名称也相通)。以下是一些常见的文件操作命令:

  • pwd:显示当前的完整路径。如果你在C:/Users/YourUserName/Desktop下,结果会显示
  • dir + folder_name:显示文件夹folder_name下的所有子文件夹和文件,如果dir后不加任何文件夹,则显示当前目录下的文件和文件夹。在macOS下对应的命令是ls
  • cd + folder_name:切换当前目录到指定的文件夹folder_name。如果不加任何文件夹,windows下保持不变,而macOS下会切换到当前用户的主目录。
  • cp source_file destination_file:复制文件。
  • mv source_file destination_file:剪切文件。

此外,通常操作系统有两个特殊的符号./../,它们分别代表当前目录和当前目录的上级目录。 如果命令是对文件或者文件夹的操作,而又没有指定具体的文件夹,操作系统通常是将其按照当前目录来进行处理。

14.8 本章要点

  • 计算机是一系列硬件和软件的组合。硬件包括中央处理器(CPU)、内存、硬盘等,软件包括操作系统和应用软件,本课程使用的软件Stata就是一种应用软件。
  • 所有的计算机软件、程序(包括操作系统)都是运行在计算机的内存中,文件则存储在计算机的硬盘上。
  • 操作系统为我们提供了文件系统,在计算机上有文件和文件夹,用于组织、管理和存放计算机上的信息。
  • 文件名分为文件名称和扩展名,扩展名通常与文件的类型有关

14.9 本章附录

14.9.1 苹果操作系统下的文件和路径

苹果电脑的操作系统macOS来源于Unix系统,对于文件系统与Windows中有一些不同。

  • 首先,在macOS系统中,没有盘符的概念,/代表根目录,所有的文件、各级子目录都在根目录(以及各级子目录下);
  • 其次,苹果操作系统中目录是用符号/而不是\表示

macOS下的目录也有一些特定含义,举例如下

  • /Applications:所有软件都默认安装在这个位置
  • /Users,用户文件和配置文件,个用户都有一个独立的子文件夹,以其用户名命名。如果你的用户名是Zhangsan,那么将会有一个目录/Users/Zhangsan,用于存放用户Zhangsan相关的文件
  • /Users/<YourUserName>/Desktop:用户桌面对应的目录。
  • /Users/<YourUserName>/Downloads:用户下载对应的目录。
  • /Users/<YourUserName>/Documents:用户文档对应的目录。

你可以通过路径下某个子目录或者文件的信息快速获取完整路径信息。例如你想要知道“Documents”(文档)目录下test.do这个文件的完整目录,你可以首先在Finder中打开这个目录,然后右击文件test.do,点选“Get Info”,在弹出的窗口中双击文件的路径,然后右击选择“Copy”,就可以把路径信息复制到剪贴板中了,接下来你可以在任何文本编辑器中选择“粘贴”,就可以获取路径信息了。如下图所示:

另外,在苹果操作系统中,我们同样推荐大家不要隐藏文件的扩展名,你可以在Finder的Preference中,点击Advanced,在对应选项卡中勾选show all filename extensions,如下图所示:

14.9.2 计算相关科普视频

下面是一些计算机硬件、操作系统相关的科普视频,对于大家理解计算机的工作原理有一定的帮助,推荐对计算机发展历史、原理感兴趣的同学查看。


  1. 这与内存存储数据的原理有关,感兴趣的同学可以观看科普视频内存如何存储数据:https://www.bilibili.com/video/BV1Jr4y1o7jX/了解。↩︎

  2. 现代的操作系统通常都是一个“多用户”操作系统,windows系统同样如此,同一个操作系统中可以有多个用户,他们的名称不同、权限可能也不同。通常情况下,windows操作系统/macOS操作系统只允许一个用户登录使用(服务器版本的windows操作系统可以多用户同时登陆)。而Linux操作则允许多个用户同时登录、同时使用。↩︎

  3. 近年来,在win7之后的windows操作系统中,对于用户权限的管理越来越清晰,一些程序可以选择安装在单个用户的目录下,只有该用户可以调用,也无需管理员权限↩︎

  4. 你可能会好奇如果中英文混排的情况下,系统如何区分是按照2个字节还是1个字节来转换二进制数字。如果高字节的高位为1(也就是高字节大于127),就表示是汉字,低字节并无明显特征。↩︎