文件系统
文件系统在任何一个计算机系统中都是核心功能之一,不同操作系统会使用不同的文件系统,这里我们通过对比Windows系统和Linux系统,来简单了解一下Linux系统中的文件结构。
目录树
计算机中的各种工具、软件程序、数据等都是以文件方式存储的。这些文件大部分存储在计算机的硬盘上,通常以树状结构组织起来,例如在Windows系统中,文件系统的目录树可能如下所示:
|
|
以下是Windows系统中一些比较重要的目录:
-
用户根目录
Windows系统的用户根目录在
C:\Users\
文件夹下,每个用户有一个文件夹,例如我的用户根目录是C:\Users\lijin
。在命令行中,用户根目录可以用~
表示。用户根目录下一般存储用户的个人文件,例如个人的文档、照片、音乐、电影等可以分类存储到用户根目录下的
Documents
、Pictures
、Music
、Videos
等文件夹下。只限当前用户使用的程序一般安装到用户根目录的
AppData
文件夹内,这个文件夹系统默认是隐藏的,用户在一般情况下不应该动这个文件夹。 -
Windows系统目录
Windows系统的系统根目录是
C:\Windows
,操作系统和系统级的软件工具都在这个目录下,用户不应该轻易动这个文件夹,否则可能会损坏系统。 -
应用程序目录
用户一般可以将程序安装到
C:\Program Files (x86)
和C:\Program Files
下,其中C:\Program Files (x86)
一般安装32位程序,C:\Program Files
安装64位程序。安装到这两个目录下的程序对于当前计算机的所有用户都是可见的。但有些商用软件可能会限制使用者,未注册的用户虽然可以看到该软件但却有可能无法运行使用。
在Linux系统中,文件系统的目录树可能如下所示:
|
|
以下是Linux系统中一些比较重要的目录:
-
用户根目录
Linux系统的用户根目录在
/home/
文件夹下,每个用户有一个文件夹,例如我的用户根目录是/home/lijin
。用户根目录下一般存储用户的个人文件,例如个人的文档、照片、音乐、电影等可以分类存储到用户根目录下的
Documents
、Pictures
、Music
、Videos
等文件夹下。只限当前用户使用的程序一般安装到用户根目录的
AppData
文件夹内,这个文件夹系统默认是隐藏的,用户在一般情况下不应该动这个文件夹。 -
Linux系统目录
Linux系统的系统根目录是
/sys
,操作系统在这个目录下,用户不应该轻易动这个文件夹,否则可能会损坏系统。 -
应用程序目录
用户一般可以将程序安装到
/opt
下。 -
库目录
系统默认的一些运行库和工具软件一般在
/usr
下,用户在一般情况下不应该动这个文件夹。
注意:
- 在Windows系统中,路径是带盘符的,例如
C:
表示磁盘C下的路径;而Linux系统中一般不用字母表示的盘符。 - 在Windows系统中,目录分隔符是反斜杠
\
;在Linux系统中,目录分隔符则是斜杠/
。
磁盘分区
对于机械硬盘而言,存储空间的起点在圆盘的外圈,磁头读取数据时也是从外圈开始寻址,位于磁盘外圈的数据访问速度较快。所以我们往往将硬盘进行分区,位于外层的分区用来安装操作系统和软件,内层的分区用来放数据文件,这样可以让系统和软件运行比较流畅。
而对于固态硬盘而言,硬盘各部位的数据访问速度都差不多,因此单就访问速度而言,固态硬盘一般没有必要进行磁盘分区。
除了区分访问速度的不同,硬盘分区的另一个作用是隔离各个分区的数据。例如将操作系统和用户的电影音乐等文件放置在不同分区,这样当需要重新安装操作系统时,只需要格式化操作系统所在的分区,用户的个人文件不会受到影响。
挂载点
在Linux系统中,存储设备需要挂载(mount)到文件目录树的某个位置,这个位置就是挂载点。例如在手动分区并安装Linux系统时,我们往往会创建home
、swap
、usr
等分区,这些分区将被自动挂载到系统根目录/
下。如果我们给计算机外接一个硬盘或U盘,则这个硬盘或U盘一般会被挂载到/mnt/
下。
需要注意的是,挂载的存储设备不一定非得是一块真实的硬盘,也可以是网络云盘、远程的计算机,甚至是本电脑上的一个虚拟的光盘文件!例如在数年前,不少计算机软件或操作系统都存储在光盘上,用户可以购买存储有某个软件的光盘,然后用电脑上的光盘驱动器读取安装软件或操作系统。然而现在许多笔记本电脑为了做得轻便,都取消了光盘驱动器,用户也基本不再购买软件光盘了,取而代之的是在网上下载安装包,而有不少安装包依旧以光盘文件的格式来存储软件,这时用户就可以通过虚拟光驱将这个“虚拟的光盘”挂载到电脑上。
软件安装与管理
我们选择使用某个操作系统的原因可能很多,但有一条原因往往是普遍的,那就是可以方便地使用这个操作系统上的一些特色软件。在安装了某个操作系统之后,我们往往还需要安装各种软件才能真正让这个操作系统发挥它的作用,成为生产力工具。
在大多数用户都熟悉的Windows系统上,我们可以在一些软件应用商店安装某个软件,或者到某个软件的官网下载安装包,双击安装包来安装。但这些都需要在图形界面上点击来完成,但对于某些Linux(例如在Windows上安装的WSL,或者学校的计算集群)而言,我们可能并没有一个可用的图形界面,这时我们就需要熟悉在命令行界面下安装软件的技巧。这里我们介绍在Linux命令行下三种常见的软件安装方法:
- 使用包管理工具
- 手动下载安装包
- 从源码编译安装
使用包管理工具
图形化的操作系统上往往会配备“应用中心”等图形化的软件管理工具,在命令行化的界面上,我们也可以有类似“应用中心”的软件包管理工具。下面以Debian系(包括Debian、Ubuntu、Deepin等系统)常用的包管理工具APT来简单介绍一下在Linux命令行界面内安装软件的方法。
APT简介
APT是Advanced Packaging Tools(高级打包工具)的缩写,是在Debian系操作系统中最常用的包管理工具,它可以自动下载、配置以及安装很多软件包。通常情况下,我们在命令行内通过apt
或apt-get
等命令来使用APT,但需要注意的是,除此之外,APT还可以通过aptitude、Synaptic、GNOME软件商店等前端来使用。这里我们只介绍通过apt
命令使用APT的方法。
使用apt
命令管理软件
-
搜索软件包
1
apt search software_name
-
显示软件包详情
1
apt show software_name
-
安装软件包
1
apt install software_name
-
卸载软件包
1
apt remove software_name
-
卸载软件包并删除配置文件
1
apt purge software_name
-
自动删除不需要的软件包
1
apt autoremove
-
更新软件仓库
1
apt update
-
升级软件仓库
1
apt upgrade
使用以上命令安装、更新或卸载软件时可能需要sudo
权限。
手动下载安装包
有些软件可能不在APT仓库里,无法直接通过APT安装。不过开发者可能提供.deb
或.rpm
格式的安装包,.deb
格式的安装包一般在Debian系系统中使用,.rpm
格式的安装包一般在Red Hat系系统(Red Hat、CentOS、Fedora等)中使用。
例如文本编辑器Visual Studio Code (VS code)就不在APT仓库里,想要在Linux下安装,我们就需要下载它的安装包。
下载完成后,进入存放安装包的文件夹,执行下面的命令就可以安装了:
|
|
从源码编译安装
从源码编译安装的情形一般有3种:
- 有些软件可能连安装包都不提供,开发者只提供源代码,这是我们就需要从源码编译安装。
- 通过APT和安装包安装都需要
sudo
权限,而有时候我们并没有sudo
权限。例如在学校的计算集群上时,我们的账户只是普通用户,没有管理员权限,所以无法使用sudo
。 - 我们需要对软件做一些改动以满足自己具体的需求,这时需要先更改源代码,再自己编译安装。
例如很多Linux用户喜欢使用zsh,而在学校的计算集群上往往只提供bash,且用户没有管理员权限无法使用包管理工具或者安装包直接安装zsh。这时如果依旧想要使用zsh,就需要用户自己从源码编译安装。