什么是Linux系统?
Linux是一套免费、多用户、多任务的类UNIX操作系统,它最大的特点就是免费开源,可以自由传播。自1991年芬兰赫尔辛基大学学生Linus开发了Linux内核后,一大批程序爱好者对Linux进行了修改和完善,如今其开放、安全、稳定的特性得到了越来越多用户的认可。由于其可以自由开发,成本低,安全性高,各国政府和企业都对Linux系统提供了强有力的帮助。例如我国自主研发的麒麟系统,已经广泛的使用在能源、金融、交通、政府、央企等行业领域。现在已经有了一批成熟稳定的Linux发行版本,其中最为常用的当属CentOS、Ubuntu、Debian等; 移动版有 Android, Chrome OS等。对于普通用户来说,可能ubuntu适用更为广泛,而对于企业和集体用户,centos是一个较为不错的选择。
Linux系统的文件管理
什么是目录结构
几乎所有的计算机操作系统都是使用目录结构组织文件。日常生活中我们更习惯把目录叫做文件夹。所谓的目录结构,就是在一个目录中存放子目录和文件,而子目录中又可以存放子目录和文件,以此类推形成一个像树一样的文件结构,从根开始向下不断分叉。下边便是一个Mac下的目录系统:
在ubuntu系统下,借助tree命令可以用树结构来查看文件层级关系,下图所示即为ubuntu下的一个目录结构情况:
其中bin、etc、lib、share是属于该目录下的第一级目录, iptest等高亮的文件属于bin目录下的可执行文件,jupyter(etc)、python3.8、jupyter(share)、man则是一级目录下的子目录。这些目录的作用接下来将会介绍。
Linux系统目录结构
由于Linux系统同样是沿用了上述的这种文件结构,因此所有文件必须有一个起始位置,所以便引入了一个重要的概念-根目录
, 用'/'
(单个斜杠)表示。根目录不仅是所有文件路径的起始点,在系统中的角色也非常重要。FHS(文件系统层次标准)定义了根目录下的主要目录以及每个目录下应该存放什么,这些目录结构以及存储的对应文件保证了系统可以正常的启动以及程序的正常运行。例如/bin
目录存储的便是系统自带的常用命令。FHS定义的目录结构如下图所示:
- 图片来源于《Linux系统命令及Shell脚本实践指南》第三章 Linux文件管理
绝对路径和相对路径
我们已经了解到了Linux所有的文件都可以从根目录找到,像/usr/bin/zcat
便是表示zcat
命令的可执行文件存放在/usr/bin/
目录下。像这样从根目录/
开始的路径就叫做绝对路径,绝对路径一定是从根目录开始的! 举个例子,常用来查看自己当前在那个目录的命令pwd
每次都会返回一个绝对路径,例如在ubuntu用户目录下运行pwd
命令:
ubuntu ~$ pwd # 在ubuntu用户目录下运行pwd
/home/ubuntu
另一个常用的命令查找命令which
也同样返回的是一个绝对路径,例如查找zcat
命令在什么地方:
ubuntu ~$ which zcat # 在任何目录下运行 which zcat
/usr/bin/zcat # 都会返回zcat所在的绝对路径
那么什么是相对路径呢?相对路径其实就是相对于当前路径来说的。想理解相对路径就要先了解两个特殊的路径符号.
和..
, 对,就是英文符号里的点。一个点.
表示当前路径,两个点..
表示上一级目录。举个例子,现在我们在用户ubuntu的目录下边,想要进入上一级home目录,可以有两种办法:
- 第一种是使用绝对路径,从根目录开始进行切换:
ubuntu ~$ pwd
/home/ubuntu # 显示当前在ubuntu用户目录下
ubuntu ~$ cd /home # cd命令用来切换目录
ubuntu ~$ pwd # 再次运行pwd命令,查看当前路径
/home # 显示已经切换到了/home目录
- 第二种是使用相对路径,从当前路径开始切换:
ubuntu ~$ pwd
/home/ubuntu # 显示当前在ubuntu用户目录下
ubuntu ~$ cd .. # cd命令用来切换目录, ..表示ubuntu的上一级目录
ubuntu ~$ pwd # 再次运行pwd命令,查看当前路径
/home # 显示已经切换到了/home目录
比较起来是不是用相对路径方便了很多,如果是一个很长很长的路径,用相对路径会省去很多麻烦。但是具体什么时候用相对路径,什么时候用绝对路径还是需要按情况而定。
几个重要的文件目录
刚刚讲到ubuntu的用户目录,而ubuntu前边又有一个home目录,对Linux不了解的同学可能会被绕迷糊,这里讲一下Linux下几个重要的目录以及其作用。
在Linux的根目录/
下,存在着几个重要的文件目录:
ubuntu ~$ cd / # cd命令切换到根目录
ubuntu /$ ls # ls命令用来显示目录下内容
bin boot dev etc home lib lib32 lib64 libx32 lost+found
media mnt opt proc root run sbin snap srv sys tmp usr var
可以看到ls
命令列出的根目录下有许多文件目录,这些目录大多是从系统安装完成时被创建的,每个目录都有着特定的作用。
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令, 这些命令是伴随系统安装的,因此系统一安装完成你就可以使用它们。
/etc
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,存放在/home目录下,如上文提到的ubuntu就是以ubuntu为用户名的用户目录。
/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/proc
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。例如查看Linux系统版本信息:
ubuntu ~$ cat /proc/version # cat 命令可以打印出文件内文本信息
Linux version 5.4.0-1009-aws (buildd@lgw01-amd64-039) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #9-Ubuntu SMP Sun Apr 12 19:46:01 UTC 2020
/root
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/tmp
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/var
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。