一个基本的计算机系统由“硬件”和“软件”组成,一台Linux设备,主要的组成如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/39506fa09cfa4ba6ba7ddb6a116b7d6d.png)
一般情况下,我们所说的Linux系统,特指中间内核级的部分,我们看到的Linux的桌面Desktop,例如:KDE,GNOME都只是普通的应用程序而已。Linux的核心在于其内核,内核是应用程序和硬件程序联系的纽带。
Linux的人机交互方式有两种:
- 图形交互界面
- 命令行交互接口(CLI)
图形界面,从Windows下转过来的用户应该不陌生,但是图形界面不是Linux的精髓,作为一个高级的计算机工作者,应该能够透过现象看本质,所有的计算软件的本质其实都是数据的处理和流通。Desktop不是Linux,所以后面将逐渐脱离Desktop,而转向对Linux进行学习和研究。 Linux两种交互方式
以查看Linux的根文件系统下的文件为例子,来对比两种交互方式的不同。
在Desktop下面,打开文件管理图形应用程序:
![](https://i-blog.csdnimg.cn/blog_migrate/b9de75134f4f8d82593b4e5956a94d9c.png)
在CLI下面输入ls命令:
➜ / ls bin deepinhost etc initrd.img.old lost+found opt run sys var boot dev home lib media proc sbin tmp vmlinuz cxassoc disk initrd.img lib64 mnt root srv usr vmlinuz.old
在图形界面上通过不同的视图或者属性可以查看到更多的文件目录和信息,同样在CLI界面上可以输入不同的命令参数,得到相应的文件目录的文本描述信息。
同样的,Linux的其它常用系统管理工具,如:
- 磁盘管理
- 网络管理
- 进程管理
- 软件管理
都有对应的桌面程序和CLI程序来提供管理,后续会详细展开,在此不一一赘述。总之,从承载的信息上来看,两种交互基本上是等价的,甚至严格来说CLI可以提供的操作甚至多于图形用户界面。因为图形用户界面可以说是一种更高层的应用,是对CLI功能的进一步封装的图形表现方式而已。
如果作为普通的桌面级消费用户来说,掌握图形交互和图形界面应用即可,但是对于Linux的开发人员来说,则一定要熟练掌握CLI命令来完成对系统的各种操作和调用。 文件目录及系统
和Windows完全不同,Linux下面的所有目录都来自于 "/" 目录,没有将硬盘分区成C、D、E盘。Linux下所有的文件系统都衍生于同一个根节点,所有的磁盘必须挂载在文件系统相应的目录下面。
![](https://i-blog.csdnimg.cn/blog_migrate/7f5ec63a446d343837286e42e50b5d71.png)
不管是Windows还是Linux,都有如下流程:
-
新购置的物理硬盘,必须要分区,不管是分一个区还是多个区。这个分区实际上是对磁盘的分区表进行数据定入,和启动位置有关
-
-
分区的硬盘必须要格式化相应的文件系统
-
- Windows系统一般是NTFS文件系统
- Linux系统一般是EXT4文件系统
-
-
-
被格式化的磁盘必须要挂载到操作系统相应的文件目录下
-
- Windows相当于在C/D/E盘之上还有一个根目录,但是显然它实际上没有按照这种观念来普及此系统。Windows系统自动帮用户完成了挂载分区到目录的工作,即自动将磁盘分区挂载到C/D/E盘的“目录”
- Linux则除了会自动挂载根分区启动项外,别的需要用户自己配置。
-
在Linux系统中,信息的基本组织单位称作文件。对于物理设备,Linux也通过文件系统来提供了简化的访问方式,用户可以使用同样的命令处理普通文件和物理设备。 标准文件结构
在根目录下,列出Linux的主要目录:
➜ / ll 总用量 104K drwxr-xr-x 2 root root 4.0K 9月 18 10:33 bin drwxr-xr-x 3 root root 4.0K 9月 7 15:31 boot drwxr-xr-x 17 root root 4.3K 9月 18 21:18 dev drwxr-xr-x 3 root root 4.0K 9月 7 16:02 disk drwxr-xr-x 141 root root 12K 9月 18 21:18 etc drwxr-xr-x 4 root root 4.0K 8月 31 12:01 home drwxr-xr-x 22 root root 4.0K 9月 7 18:01 lib drwxr-xr-x 4 root root 4.0K 9月 11 21:01 media drwxr-xr-x 5 root root 4.0K 8月 31 17:59 mnt drwxr-xr-x 8 root root 4.0K 8月 31 09:35 opt dr-xr-xr-x 211 root root 0 9月 19 2015 proc drwx------ 16 root root 4.0K 9月 18 17:30 root drwxr-xr-x 22 root root 720 9月 18 21:18 run drwxr-xr-x 2 root root 12K 9月 7 18:01 sbin drwxr-xr-x 2 root root 4.0K 4月 28 00:05 srv dr-xr-xr-x 13 root root 0 9月 19 2015 sys drwxrwxrwt 8 root root 4.0K 9月 18 22:05 tmp drwxr-xr-x 10 root root 4.0K 4月 28 00:19 usr drwxr-xr-x 13 root root 4.0K 8月 31 17:15 var ……
关于根目录下的文件描述,Linux是有一套标准可以进行参考:FHS(Filesystem Hierarchy Standard)。
本文只对主要的目录的功能介绍。
-
boot目录
- 包含系统引导程序,Linux内核程序文件vmlinuz,磁盘内存映像文件initrd以及GRUB初始化引导程序和配置文件
除了boot目录,系统启动必须的5个目录:
-
-
dev
-
系统设备目录。在Linux系统下,任何设备都对应着一个或多个设备文件,例如磁盘对应着 /dev/sd*文件
-
-
-
etc
-
Linux系统运行的配置文本文件
-
-
-
lib
-
该目录含有系统引导过程,及运行系统命令所需要挟内核模块和各种动态链接共享库文件
-
-
-
sbin
-
超级用户组使用的系统命令
-
-
-
bin
-
系统管理员和普通用户共享的各种通用命令程序
-
记忆方法
目录简称拼接:delsb,删除SB,谁删除这其中的目录了,谁就是那啥啥了 ^_^
其它主要会经常碰到的目录:
-
-
home
-
用户主目录的根目录,每增加一个新用户,系统都会在此目录下面增加一个和用户名相同的目录,存储用户相关的配置及数据
-
-
-
media
-
移动存储介质的安装点
-
-
-
mnt
-
文件系统的临时挂载点
-
-
-
opt
-
应用程序等附加软件的安装目录
-
-
-
var
-
存储各种可变长的数据文件,如日志文件等等
-
-
-
usr
-
Unix Soft Resource 存储系统提供的各种共享数据(用户命令、库函数、头文件和文档等)
-
-
-
root
-
超级管理员的主目录
-
-
-
tmp
-
临时文件目录,系统重启后会自动清空
-
-
-
proc
-
进程文件系统的根目录,是一个虚拟文件系统,通过对此目录的文件读取可以获取系统运行态的很多信息:如CPU、内存、运行时间等等
-
关于根目录下的其它目录及其子目录的详细介绍及目录之间的区别,请参考linux官网关于 FHS 的最新更新(基本上每年都会有更新)。 文件描述及权限
在Linux下面对文件的操作有个很重要的概念,就是:文件权限。很多初学者认为Linux不好用,基本上很大的原因就是止步于这个地方就没有深入研究下去。因为对于任何一个系统来讲,文件数据的各种操作肯定是很高频的交互,在Linux系统下,如果不了解文件系统的权限概念,那么在对文件数据进行操作的时候,必然会遇到各种阻碍,然后不得已而放弃了Linux的继续研究。
在图形界面下,文件的权限是通过在文件图标是否上锁(或者X号等)来进行形象可视化,在CLI界面,则是通过特殊的文本标记来显示:
➜ / ll |grep bin drwxr-xr-x 2 root root 4.0K 9月 25 14:56 bin drwxr-xr-x 2 root root 12K 9月 25 14:55 sbin
如上对目录及文件的描述一共7段:
- permissions:文件的详细信息,主要是权限信息/类型信息
- link:文件硬链接数或目录子目录数
- user:文件所属用户
- group:文件所属组
- size:文件大小
- time:文件创建时间
- file:文件名称
记忆方法
七段的英文简称连写为:
PLUGSTF
参考记忆:插入TF卡
- PLUGS:插头
- TF:目前手机上使用的小型SD扩展卡
PLUG 部分是重要的权限组成部分,在Linux下进行操作,最最重要的基础概念就是文件的权限概念,如果这个没弄清楚,则会经常遇到各种阻碍。
文件类型及权限
典型的文字文件权限描述字符如下所示:
drwxr-xr-x
一共10位,按照功能对位进行划分,总共可以分为4个功能段,如下表所示:
类型 | 用户权限 | 组权限 | 其它权限 |
---|---|---|---|
1 | 3 | 3 | 3 |
d | rwx | r-x | r-x |
第一段表示文件的类型:
-
d: directory,表示目录
-
-: 短横线“空”表示普通文件,例如:文本文件,二进制文件
-
l: link,表示链接文件,例如:快捷方式
-
b: block,表示块状设备,例如:磁盘
-
c: character,表示字符特殊文件,例如:控制台终端/打印机等等
-
p: pipe,管理文件
-
-
其它类型
-
一般对于应用层开发人员,最多接触的就是目录和普通文件两种,其它有兴趣的可以去具体的查阅相应的资料。
-
纯粹的文件操作权限的描述有三类:
- r 可读
- w 可写
- x 可执行
对文件操作的使用者身份划分成三类:
- U User 直接从属用户
- G Group 文件所属组
- O Other 不属于上面两样的其它用户
文件权限的三段,对应着不同的使用者身份对此文件的不同权限,任何身份的用户不能够对文件做超过其权限的事情。
特别注意,在Linux系统下:
- 不是通过扩展名来判定程序的类型的
- 不是通过 .exe 来判定程序是否可执行,而是通过 x 属性表明此文件可以被执行
- 和文件不同,目录的 x 属性表示可以将工作路径切换到目录里面
权限相关的9位,分别通过是1或者0来表示是不具有相应的权限,所以会产生如下的一些常见的数字值来表示文件的权限(使用一个小于8的整数来表示3个bit位的状态值):
-
-
777
-
111 111 111 表示对于U,G,O都是读/写/可执行全开发权限
-
-
-
666
-
110 110 110 表示对于U,G,O都是可读写但是不可执行
-
-
-
644
-
110 100 100 表示对于U是可读写,对于U和O则是只读的
-
所以如果要将某个文件修改为对所有的用户/组/其它都是可读写及执行的权限,可以执行如下命令:
chmod 777 xxx_file
或者使用一种主义化的方式来添加权限:
chmod a+rwx xxx_file
关于文件的权限及操作者身份限定,CLI里面提供了丰富的命令行工具,基本上用户可以通过这些命令完成所有对文件系统所需要的操作。具体的命令及操作,可以查阅相应的书藉和文档,多加练习,熟练操作即可。
其它描述信息
- 文件大小
- 创建时间
- 文件名称
这些信息的用途正如其名称一样直观和明确,在此不再赘述。
文件和目录的基本操作
对文件和目录的基本操作包括但不限于:
- 目录创建和删除
- 文件创建/修改/删除
- 文件或目录的移动
- 文件或目录名称修改
- 文件查找
等等,这些工具类的使用及熟练,属于比较低级的知识阶段,了解前面的理论框架后,只需要不断重复的操作练习即可,使之成为不经过大脑就可以快速操作的基本本领。
这些命令行,在相应的Linux介绍书藉,或者网络技术文章里面到处都是,在此也略去不表。