Linux学习笔记(第零篇)Linux文件系统及Shell

时间:2022-11-01 21:01:53


​​Linux学习笔记(第零篇)计算机基础​​Linux学习笔记(第零篇)Linux文件系统及Shell
Linux学习笔记(第一篇)零散命令
Linux学习笔记(第二篇)目录操作命令
Linux学习笔记(第三篇)文件操作命令
Linux学习笔记(第四篇)文件内容操作命令+正则表达式+重定向和管道
Linux学习笔记(第五篇)归档及压缩命令
Linux学习笔记(第六篇)Vi编辑器
Linux学习笔记(第七篇)用户和组管理
Linux学习笔记(第八篇)磁盘与文件系统管理
Linux学习笔记(第九篇)逻辑卷管理(LVM)
Linux学习笔记(第十篇)进程管理
Linux学习笔记(第十一篇)服务管理
Linux学习笔记(第十二篇)网络基础
Linux学习笔记(第十三篇)通信管理
Linux学习笔记(第十四篇)管理常用网络服务
Linux学习笔记(第十五篇)常用网络服务器配置

Part0–Linux文件系统


一.Linux中常见的文件类型

1.普通文件

  • 一个字符序列,如代码程序、数据、文本、图像等。
  • 在Linux中,这些文件没有不同,被同等对待。
  • 只有当需要时,才由相应的使用或处理文件的应用程序将文件含有添加到该文件上。
  • 例如,对Linux而言,一个C程序和一个HTML文件没有差异,文件分别由C编译器、Web浏览器进行处理。

2.设备文件

  • 指一些可以访问的硬件设备。
  • Linux将I/O设备视同文件对待,对每个设备对应一个文件。
  • 设备文件并不是信息的存储体。它们只不过时为了I/O设备的读写提供了方便的渠道,并提供用户与文件系统相同的存取页面。
  • 设备文件分为两类:字符设备文件(如键盘)和块设备文件(如硬盘)。
  • 一般放在/dev目录下,如/dev/tty是终端的特别文件。
  • /dev目录位每种设备准备了至少一个文件,例如hda(硬盘驱动器a),lp0(行式打印机0)。
  • 由于Linux操作系统是I/O硬件接口与普通文件的接口一致,用户就不必知道任何有关I/O设备的细节。

3.目录文件

  • Linux中,目录本身也是一种文件,可以按照文件进行管理。
  • 目录文件包含其它目录和文件。
  • 目录文件由许多特殊格式的记录组成。
  • 每条记录由索引节点号和文件名组成。
  • 索引节点包含文件的基本信息,例如大小、属性等。

二、Linux文件的表示和存储

1.文件的表示

  • Linux系统将每个文件名与一个数字(文件的索引节点号,或者称作i节点号)联系起来。
  • 每个文件对应一个唯一的索引节点。
  • 列表中每个i节点,存储文件属性。
  • 所有索引节点在磁盘上组成索引节点列表。

2.文件系统的存储结构

  • Linux系统把可以作为一个存储介质(如硬盘、软盘和光盘等)上的存储空间划分成一个至多个区域。
  • 每个区域都可以像独立的物理设备一样单独进行管理和数据存取,这样的存储区域,称作逻辑区域。
  • 在逻辑设备上按照一定的格式进行划分,就构成了文件系统。
  • 【文件系统的磁盘被分成四个部分】
    (此部分的图片及部分内容参考自
    ​​​ http://blog.chinaunix.net/uid-15243833-id-122099.html​​​ https://docs.oracle.com/cd/E19253-01/819-7062/auto151/index.html)

    (1)引导块:引导块保存引导程序,系统启动时激活这段特殊程序。引导块占用第0号物理块,不属于文件系统管辖,如果系统中有多个文件系统,只有根文件系统才有引导程序放在引导块中,其余文件系统都不使用引导块。如果文件系统不用于引导,则将引导块保留为空。
    (2)超级块:包含磁盘自身的有关信息。像磁盘的总块数、空闲块数、块的大小、已使用的块数等。
    (3)i-节点列表块:保存i节点的列表。每个文件都有一个属性,文件的大小,文件所有者,和创建时间等,这些性质被纪录在一个称为i-节点的结构中。所有i-节点都有着相同的大小,并且i-节点表是这些结构的一个列表,文件系统中的每个文件在该表中都有一个i-节点。
    (4)文件和目录块:即数据存储区,存放数据,以块为单位存取。文件的内容保存在这个区域,磁盘上所有的块的大小都一样,如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中,一个较大的文件很容易分布上千个独立的磁盘块中。

三、Linux的目录结构

1.Linux文件系统是按照层次结构组织的。

2.主要目录介绍:

  • 根目录(/):最高层目录为根目录,其它所有目录直接或间接从它分支。
  • 主目录(~ ):系统管理员在系统上创建所有用户的账号,并为每个用户账号分配一个特定的目录,称为主目录,又称起始 / 登录目录。
  • 工作目录(.):某个时刻正在使用的目录。
  • 父目录(..):表示当前工作目录的父目录。

3.路径:

  • 在文件系统中路径名用来定位文件。
  • 从根目录开始,经过所有中间目录,直到文件,就形成了该文件的路径名。
  • 绝对路径:从根目录到该文件的路径,路径名的开头有斜杠(/)。(例子:当前工作目录为usr,那么david目录下的myfirst文件的绝对路径名为/usr/david/myfirst)
  • 相对路径:从当前目录到该文件的路径,路径名开头没有斜杠。(例子:当前工作目录为usr,那么david目录下的myfirst文件的相对路径名为david/myfirst)

四、Linux的文件名和目录名

1.文件名相关注意事项:

  • 文件名由字符和数字组成,唯一的例外是根目录(/),其它文件不能使用这个名字。
  • 建议不要使用不可打印的字符、空白以及Shell字符。
  • Linux中区分大小写字母。
  • Linux的扩展名可以使用一个及以上的点。

2.文件名后缀相关注意事项:

  • 文件扩展名可以帮助用户进一步描述和分类文件的内容。大多数情况下可选,但某些编程语言的编译器依赖扩展名(如C语言)。
  • Windows操作系统根据文件的扩展名来区分文件类型,Windows下能被执行的文件扩展名通常为.com .exe .bat等,而Linux通过查看文件内的头部信息来确定文件的类型,与文件的名字无关,只要权限中有x(可执行)的话,就代表这个文件能被执行。
  • 对于Linux操作系统而言,test文件和test.c文件都是text文件,类型上无区别,对于编译程序gcc来说就不同了,gcc编译器程序是根据文件的扩展名来判断文件类型的,所以使用gcc编译test文件就会提示错误信息。

3.重要的目录:

  • /:根目录,最高层的目录,其它所有目录都是它的分支。
  • /bin:bin:代表binaries,该目录存放许多基本的Linux程序文件,这些文件都是可执行文件。如ls,mkdir等。
  • /usr/bin:存放面向用户的Linux程序。
  • /usr/sbin:存放系统管理文件。
  • /sbin:存放系统文件。如管理工具,应用软件和通用的根用户权限命令等内容。包括系统管理工具,如fdisk,mkfs等,以及网络命令,如ifconfig,route等。
  • /dev:存放设备文件。如sda,ip0。
  • /etc:该目录以及其下的子目录存放许多Linux配置文件,这些文件通常都是文本文件,可以进行编辑,从而修改系统配置。例如/etc/passwd,该文件为系统每个用户记录了一行信息,描述了用户的情况。
  • /lib、/usr/lib:存放所有程序需要的程式库。
  • /lost+found:包含所有与其它目录没有连接的文件。这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。
  • /home:有些系统是/users,用来组织用户起始目录。
  • /var/spool/mail:接收并且保存从外面发来的电子邮件。
  • /tmp:存放不同程序执行时产生的临时文件,默认所有用户都可以读取,写入和执行文件。系统启动时清除。

五、Shell相关知识:

1.Shell的作用:

  • Shell仅仅是个程序,负责用户与Linux系统之间的交互。由外到内,自顶向下的关系为:用户->Shell->内核->硬件。
  • 用户登录后,系统自动启动Shell程序。
  • 用户每次输入完一个命令并按回车后,命令行被传到Shell,Shell先对命令进行分析,然后执行。

2.Shell环境的切换:

  • 大多数Linux系统采用/bin/bash作为默认登录Shell,/etc/shells文件记录了系统支持的有效登录Shell,可用cat命令进行查看。

3.Linux命令的分类:

  • Shell命令:有些Linux命令是Shell程序的一部分,称为内部命令或Shell命令,内部命令由Shell程序识别并在Shell内部执行。
  • 系统工具程序:大部分Linux命令是可执行程序(命令名和程序名一样),这些可执行程序由Shell查找、加载并执行。Shell从系统变量PATH设置的路径中查找可执行程序,这些可执行程序通常被称为系统工具。
  • 通常,把Shell命令和系统工具统称为命令。