Linux 基础(一):系统认知、文件结构与人机交互
一、Linux系统认知
本模块主要是为了建立对 Linux 的整体认识,回答“它是什么、为什么用它、它怎么工作”的问题。
1.1为什么学习系统指令?
Linux操作系统存在图形界面和字符界面两种操作方式,实际开发过程中往往使用后者,因此需要优先学习系统指令,为后续学习打好基础
1.2计算机底层工作原理:计算机为什么只能识别机器指令(0 和 1)?
计算机本质是集成电路板,状态只有供电与否(即 0 和 1 两种状态),因此只能识别 0/1 指令。
1.3什么是操作系统?
操作系统就是运行在硬件平台上的一套软件,可以向应用程序提供访问硬件的接口,并直接控制硬件运行。应用程序运行在操作系统之上。
1.4Linux 操作系统的应用领域:
Linux操作系统因其安全,稳定,快速,支持多用户等特点,被广泛用于服务器上;又因为开源免费,内核可裁剪等特点与嵌入式应用要求高度吻合而广泛用于嵌入式系统开发。
1.5Linux 的常见发行版:
有RedHat、CentOS、Fedora、Ubuntu 等。各发行版之间虽略有差异,但整体区别不大。因Ubuntu 的硬件兼容性较好,后续将基于此版本展开学习。
1.6Linux操作系统的核心特征“一切皆文件”
Linux 操作系统中一切皆文件,包括我们要操作的硬件设备也以文件形式存在于系统中的(要操作硬件,只需找到对应的硬件文件进行操作即可。)所以对 Linux 系统的一切操作本质上都是在“操作文件”。
二、Linux 的文件组织与定位
既然“一切皆文件”,那么海量的文件如何组织?如何描述和找到一个文件的位置呢?本模块主要围绕文件系统的结构和路径描述方法进行展开。
2.1文件管理的必要性
Linux 系统文件数量庞大,如果不进行有效的管理,仅仅对文件进行定位就会消耗大量时间。
2.2文件系统:层级式倒树状结构
Linux 通过文件系统来组织、存取和保存数据,采用的是层级式的倒树状目录结构(如下图),此结构的最上层为根目录,用符号 / 表示,其他目录或文件均从根目录直接或间接延伸下来。
2.3文件管理第一原则
分门别类,也就是将相相同特征的文件放置在相同同的文件夹(目录)下
2.4根目录下常用一级目录及其用途
/bin:主要存放Linux操作系统的基础指令(所有用户都能执行的指令,又称普通指令)
/sbin:主要存放特权指令,仅有超级用户能执行(Linux操作系统有两类用户,一类普通用户,一类超级用户,也就是root,注意超级用户只有一个)
/dev:主要存放硬件设备,比如打开后的sda对应磁盘硬盘设备。
/etc:主要存放系统或者应用程序的配置文件,有时候可以通过这些配置文件影响系统或者应用程序的运行。
/home:注意!!!/home本身不是用户家目录(主目录)!!!它是用于存放各个普通用户家目录的上层目录,在创建一个新用户时,系统默认在 /home 目录下创建一个与用户名同名的子目录,作为该用户的家目录,一个系统中可能存在多个用户,每个用户的家目录均对应存放于 /home 下,且必须明确归属关系。
/lib:主要存放程序赖以运行的库文件,这些库文件可以是动态链接库(如.so文件)也可以是静态链接库(如.a文件),它们为程序提供了必要的功能支持。
/mnt:主要用于系统外文件的挂载目录,挂载可以简单理解为将外部存储设备或共享文件夹关联到系统目录树中,使其可通过该目录实现访问。例如,设置虚拟机共享文件夹后,可在/mnt/hgfs 下看到共享的文件。在共享环境搭建过程中,该目录使用频率较高。
/proc:是一个虚拟文件系统,主要存放正在运行的程序(进程)的信息文件,文件内容由系统动态生成,不占用实际磁盘空间。应用程序开发过程常用该目录获知应用程序相关信息。
/root:超级用户(root)的主目录,普通用户没有权利访问和操作
/usr:应用程序默认的安装路径,类似windows系统中的默认的安装路径(C://program files)
2.5文件路径的描述方法
路径可以理解为文件存储的位置,具备绝对路径和相对路径两种描述方式:
绝对路径是以根目录作为文件位置起点的描述方式,如:/usr/local/man
相对路径是以当前目录作为起点描述文件位置的方法,如:当前路径为/usr时,目标的相对路径描述为local/man
相对路径和绝对路径在具体使用过程中没有好坏之分,主要取决于当前路径(即当前目录位置),如果当前路径与待访问的目标路径处于同一个路径分支,则使用相对路径,否则使用绝对路径更合适。
三、人机交互:如何与Linux 对话?
现在我们已经知道了文件在哪,接下来我们将学习了解如何让 Linux 执行操作,这一部分将主要介绍人机交互机制——Shell,以及后续指令学习的通用方法。
3.1命令行模式(字符界面)与图形界面的区别
对于图形界面,使用过程中操作比较简单直白,但占用系统资源较多。
而字符界面虽然操作相对复杂,但占用系统资源少。字符指令通过解析程序(Shell)执行,具有稳定、快速、安全、流畅的特点。
图形界面至少比无图形界面多消耗约几百兆的存储空间,而实际嵌入式场景中几十KB的内核就可以实现设备驱动了。两者各具优势,只是服务对象不同。
3.2命令行与 Shell 的分工
用户通过终端(应用程序)输入指令对系统进行操作,但系统需要一个“翻译官“将用户发出的指令进行解释
命令行的职责:接受命令输入,将命令传给命令解释器。
Shell的工作机制:Shell是命令解释器(Linux操作系统中支持多种命令解释器),可以将命令转换成指令代码发送给操作系统,由操作系统完成对硬件的操作。
因此,下发给 Linux 系统的操作指令也称为称为 Shell 指令或 Shell 命令。
3.3进入命令行的方式
我们已经知道,用户通过终端的命令行输入指令,而进入命令行有如下三种常用方式:
方法一:在系统应用程序列表中搜索“term”,直接点击终端打开。
方法二:在系统空白处点击右键,选择“在终端中打开”。
方法三:使用快捷键“Ctrl+Alt+t”直接打开终端
3.4指令及其通用学习方法
3.4.1指令:指令是用于和系统进行交互的协议,简单理解就是用于与系统进行交互的操作命令
3.4.2学习Linux指令,需要着重关注以下五个要点:
1)指令名称
2)指令原意例:mkdir,mk为make,dir为directory目录,则mkdir的原意为创建目录
3)指令功能
4)语法格式
5)执行权限
3.4.3指令的一般格式:指令名称 [选项] [参数]
说明:
指令名称:就是具体的执行内容,告诉系统“干什么”
选项:告诉系统“怎么干”
参数:告诉系统操作对象是谁
[]:代表可省略,但是注意省略不代表没有,而是使用有默认的选项或参数
例:指令ls(罗列目录下的内容),选项是告诉系统用什么方式罗列,-l就是使用“长格式”罗列,即显示出详细的目录内容;参数说明操作对象。那么一条完整的指令ls -l /,他的意思就是以“长格式”的方式列出根目录/下的所有文件与子目录的详细信息
3.4.4注意事项
指令名称、选项与参数之间都必须有空格!
选项在使用过程中需要严格区分大小写!大部分指令选项对同一字母的大小写含义不同
3.4.5如何使用没见过的指令?
可以借助man(原意manual)命令查阅官方手册。
使用格式为”man 所查命令”输入好查询命令之后按下回车键进入目标命令的官方手册
如下
内容中包含指令名称,指令结构([]表示结构中该部分可省略,...表示结构中该部分可同时罗列多个,注意同时罗列多个彼此之间也需要有空格),该指令具备的选项及各自的含义,以节结尾行的说明(按下h进入帮助界面或者按下q键退出)
