Linux文件目录以及文件类型

文章目录

    • Home
    • 根目录 /
      • /bin
      • /sbin
      • /etc
      • /root
      • /lib
      • /dev
      • /proc
      • /sys
      • /tmp
      • /boot
      • /mnt
      • /media
      • /usr
  • 文件类型

Home

当尝试使用gedit等编辑器保存文件时,系统默认通常会先打开个人用户的“家”(home)目录, 建议在通常情况下个人相关的内容也是保存在该目录中,因为其它目录大都是系统相关的, 使用时容易导致混乱,而且需要相关权限。

“home”目录与Win10系统的个人目录非常相似。Ubuntu和Win10希望用户使用时个人的内容都存放在个人目录,主要是为了与系统核心文件区分开来, 因为他们通常不希望普通用户修改系统相关的内容,而且人个目录分开也便于系统升级。
在这里插入图片描述
在这里插入图片描述
在windows下,通常会另外新建磁盘啦专门存储不同的内容,如D、E、F盘等等,但是在Ubuntu下需要这个功能时,发现她并没有罗列出众多磁盘,它所有的内容都位于根目录下。

根目录 /

根目录是Linux下所有文件和目录的起点,它的路径用斜杠符号“/”来表示。通过cd /可以打开根目录,并且使用ls即可查看根目录下所有内容。
在这里插入图片描述
前面说明的家目录(个人目录)路径为“/home/用户名/”,也就是说,在Ubuntu系统下,用户的个人目录都在“/home”下, 并且按照用户名命名,如果系统下有多个用户A、B、C并且它们都有个人目录的话, 那么它们的个人目录路径默认就是“/home/A”,“/home/B”,“/home/C”。在这方面, 跟Windows系统是类似的,在Windows系统下,个人目录默认是“C:/Users/A”,“C:/Users/B”,“C:/Users/C”。
在这里插入图片描述
如果我们把/home的个人目录排除掉,实质上Linux的根目录与Windows系统C:/Windows目录的功能类似, 都是系统核心的文件,只是对于Windows用户通常不需要了解系统文件目录罢了。 如果仅把Linux系统用于普通的桌面应用,实际上也不需要多么了解它的根目录内容。

但是当我们利用Linux系统进行开发或用于服务器时,一般需要给系统安装各种软件工具, 又或者需要对系统和工具进行配置,常常不可避免地要修改根目录下的文件内容。 如软件工具默认安装在/usr/bin目录,软件工具的配置文件可能位于/etc目录, 甚至系统的日常使用如插入U盘或光盘,又发现它们不会像Windows有独立的盘符可以访问, 而是默认挂载在/media/mnt目录下。

根目录的结构如下:

整个Linux系统有且只有一棵从根目录开始的目录树,如下图所示。
在这里插入图片描述
所以如果一个计算机中如果有多个硬盘,也不会呈现出Windows下的C、D、E盘的结构, 强行复制Windows下习惯的话,可以在根目录下创建C、D、E目录, 然后把磁盘C、D、E挂载在/C、/D或/E目录下,即它们仍然从属于“/”根目录,不过在Linux下通常不会这么用。

目录树只是一个管理上的概念,它本身并不跟硬件挂钩的,例如这些文件之所以是存储在磁盘中, 是因为在安装系统时,已经把整个根目录“挂载”在了磁盘上。所谓挂载就是把存储器的分区与某个目录对应起来, 对该目录进行访问时,相应的操作会被映射到其挂载的存储器分区, 而这些存储器包括磁盘、光盘、U盘、NAND FLASH等。

不同的发行版对根目录的理解不同,但它们大都遵守文件层次标准 (FHS, Filesystem Hierarchy Standard),所以根目录下的各个子目录内容和功能大致如下表所示:

目录目录放置的内容
bin存放系统命令的目录,如命令cat,cp,mkdir
boot存放开机启动过程所需的内容,如开机管理程序grub2
dev所有设备文件的目录(如声卡、硬盘、光驱)
etc系统的主要配置文件
home用户家目录数据的存放目录
lib存放sbin和bin目录下命令所需的库文件
lib32/lib64存放二进制函数库,支持32位/64位
lost+found在EXT3/4系统中,当系统意外崩溃或意外关机时,会产生一些碎片文件在这个目录下面,系统启动fcsk工具会检查这个目录,并修复已损坏的文件。
media用于挂载光盘,软盘和DVD等设备
mnt同media作用一样,用于临时挂载存储设备
opt第三方软件安装存放目录。
proc进程及内核信息存放目录,不占用硬盘空间。
rootroot用户的家目录
run是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
sbinroot用户使用的命令存放目录
srv一些网络服务所需要的数据文件
sys同proc目录,用于记录CPU与系统硬件的相关信息
tmp程序运行时产生的临时文件存放目录
usr系统存放程序的目录,类似于在windows下的文件夹programefiles
var存放内容常变动的文件目录,如系统日志文件

/bin

/bin目录是/binary的缩写,它包含众多普通用户可用的命令。而命令的本质就是可执行程序, 即二进制bin文件。熟悉Linux命令后,回头再来本目录看看,会发现ls、cp、cat等命令, 都可以在此处找到:
在这里插入图片描述

/sbin

/sbin目录是/system bin的缩写,它的功能类似/bin ,不过它存储的一般是系统程序, 一般需要使用管理员权限才能使用。如显示系统已加载的模块命令lsmod、对存储器分区进行格式化的mkfs等。
在这里插入图片描述

/etc

/etc目录是/etcetera的缩写,据说原始的Unix设计是在该目录存放些零碎的内容, 但现在该目录现在已发展成存放系统的各种配置文件,非常重要。如用户信息文件/etc/passwd, 系统初始化文件/etc/rc等,系统依据这些配置运行。在给系统安装某些软件或服务后, 常常需要修改/etc目录下的文件进行配置。

/root

/root是超级用户的目录,在Ubuntu下默认为空。

/lib

/lib目录是/library的缩写,根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。 如C语言标准库,这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本, 故可以使得可执行文件变得更小,节省空间。如代码A和代码B都使用到C语言标准库的printfmalloc函数, 那么它们就可以共用文件系统上的C库内容, 代码A和代码B自身就不需要把C库的这部分内容添加到自己发布的程序包中了。

/dev

/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。 比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样。
在这里插入图片描述

/proc

/proc目录通常包含了内核导出到用户空间的内核信息,通过访问该目录下的文件可以查看这些信息。
在这里插入图片描述
Linux没有提供类似Windows的任务管理器,但是它将系统运行的信息都记录在/proc目录下的文件中, 用户可以通过访问该目录下的文件获取对应的系统信息。

其文件结构如下:

  • pid*“pid*”通常就是一个数字,该数字表示的是进程的 PID 号,系统中当前运行的每一个进程都有对应的一个目录,用于记录进程所有相关信息。对于操作系统来说,一个应用程序就是一个进程

  • self:该文件是一个软链接,指向了当前进程的目录,通过访问/proc/self/目录来获取当前进程的信息,就不用每次都获取pid。

  • thread-self:该文件也是一个软链接,指向了当前线程,访问该文件,等价于访问“当前进程pid/task/当前线程tid”的内容。一个进程,可以包含多个线程,但至少需要一个进程,这些线程共同支撑进程的运行。

  • version:记录了当前运行的内核版本,通常可以使用“uname –r”命令查看

  • cpuinfo:记录系统中CPU的提供商和相关配置信息

  • modules:记录了目前系统加载的模块信息

  • meminfo:记录系统中内存的使用情况,free命令会访问该文件,来获取系统内存的空闲和已使用的数量

  • filesystems:记录内核支持的文件系统类型,通常mount一个设备时,如果没有指定文件系统并且它无法确定文件系统类型时,mount会尝试包含在该文件中的文件系统,除了那些标有“nodev”的文件系统。

可以使用cat指令来查看这些信息,也可以通过free来查看内存大小。

/sys

与/proc目录类似,/sys目录用于把内核的设备驱动导出到用户空间,可通过访问sys目录及其下的文件, 来查看甚至控制内核的一些驱动设备。

/tmp

/tmp目录存放程序在运行时产生的信息和数据。但在引导启动后, 运行的程序最好使用/var/tmp来代替/tmp,因为前者可能拥有一个更大的磁盘空间。

/boot

/boot目录存放引导加载器(bootstrap loader)使用的文件,如lilo,核心映像也经常放在这里, 而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的 文件系统会更好一些。

/mnt

/mnt目录是系统管理员临时挂载(mount)文件系统的安装点。/mnt下面可以分为许多子目录, 例如/mnt/dosa可能是使用 msdos文件系统的软驱, 而/mnt/exta可能是使用ext2文件系统的软驱,/mnt/cdrom光驱等等。

/media

/media目录通常是一些自动挂载的设备目录,如光盘和U盘,部分系统会自动挂载到这个目录下, 然后通过自动挂载的目录可以访问对应的设备。

/usr

曾经的 /usr 还是用户的家目录,存放着各种用户文件 —— 现在已经被 /home 取代了 (例如 /usr/someone 已经改为 /home/someone)。 现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然 /usr 名称未改, 不过其含义已经从“用户目录”变成了“unixsystem resource”(Unix 系统资源)。值得注意的是, 在一些 unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix。

  • /usr/bin : 所有可执行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 内的);
  • /usr/include : 各种头文件,编译文件等时需要使用;
  • /usr/include/’package-name : 程序特定的头文件;
  • /usr/lib : 所以可执行文件所需要的库文件;
  • /usr/scr:源代码,Linux内核的源代码就放在该目录下

文件类型

  • 普通文件:例如文本文件以及bin文件。

  • 可执行文件:包括脚本和应用程序,这些文件可被系统加载运行,类似Windows下的bat脚本以及exe程序文件。

  • 链接文件:链接文件分为硬链接和软链接,硬链接是指同一个文件的不同别名;软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中, 文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

  • 目标文件:在Linux下目录也是文件。

  • 设备文件:硬件设备也是文件,通过打开对应的设备文件可以初始化设备,部分设备还可以通过读写设备文件实现对硬件的控制。

  • 文件扩展名:在Windows下习惯通过文件的后缀名来判断可以使用什么软件打开对应的文件,而Linux下没有这样的要求, 便Linux下为了容易区分和兼容用户使用Windows的习惯,我们还是会用扩展名来表示文件类型。

    • 后缀.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。 在压缩文件 中的后缀名来通常表示自身由什么压缩格式打包的,以便解压时方便选择要使用的命令。
    • .sh表示shell脚本文件,通过shell语言开发的程序。
    • .pl表示perl语言文件,通过perl语言开发的程序。
    • .py表示python语言文件,通过python语言开发的程序。
    • .html、.htm、.php、.jsp、.do表示网页语言的文件。
    • .conf表示系统服务的配置文件。
    • .rpm表示rpm安装包文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 VPN ,一定要知道的几个真相!

你们好,我的网工朋友。 今天想和你聊聊VPN。在VPN出现之前,企业分支之间的数据传输只能依靠现有物理网络(例如Internet)。 但由于Internet中存在多种不安全因素,报文容易被网络中的黑客窃取或篡改,最终造…

requests爬虫IP连接初始化问题及解决方案

问题背景 在使用HTTPS爬虫IP连接时,如果第一次请求是chunked方式,那么HTTPS爬虫IP连接将不会被初始化。这个问题可能会导致403错误,或者在使用HTTPS爬虫IP时出现SSL错误。 解决方案 为了解决这个问题,我们可以在requests库的ada…

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 …

03-关系和非关系型数据库对比

关系和非关系型数据库对比 关系型数据库(RDBMS):MySQL、Oracl、DB2、SQLServer 非关系型数据库(NoSql):Redis、Mongo DB、MemCached 插入数据结构的区别 传统关系型数据库是结构化数据,向表中插入数据时都需要严格的约束信息(如字段名,字段数据类型,字…

Java概述

接触Java后会发现它的体系有一个特点,就是非常喜欢用“J”字母开头的缩写,比如JCP, JSR, JMS, JPA, JSP, JAX-RS......它们有些是规范,有些是组织的名称,表意多样,对第一次接触的人来说很可能会觉得混乱,本…

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于水基湍流优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Nginx-负载均衡-动静分离-虚拟主机

负载均衡 负载均衡基本使用 1 配置上游服务器 upstream myserver { #是server外层server ip1:8080;server ip1:8080; }2 配置代理 server {location / { proxy_pass http://myserver;#请求转向myserver 定义的服务器列表 注意这个http不能丢 pro…

Git 分支设计规范

开篇 这篇文章分享 Git 分支设计规范,目的是提供给研发人员做参考。 规范是死的,人是活的,希望自己定的规范,不要被打脸。 在说 Git 分支规范之前,先说下在系统开发过程中常用的环境。 DEV 环境:用于开发…

数电实验-----实现74LS153芯片扩展为8选1数据选择器以及应用(Quartus II )

目录 一、74LS153芯片介绍 管脚图 功能表 二、4选1选择器扩展为8选1选择器 1.扩展原理 2.电路图连接(Quartus II ) 3.仿真结果 三、8选1选择器的应用 1.三变量表决器 2.奇偶校验电路 一、74LS153芯片介绍 74ls153芯片是属于四选一选择器的芯片。…

系列五、GC垃圾回收【四大垃圾算法-复制算法】

一、堆的内存组成 二、复制算法 2.1、发生位置 复制算法主要发生在新生代,发生在新生代的垃圾回收也被叫做Minor GC。 2.2、 Minor GC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区,年龄1 首先,当eden区满的时候会触发第一…

【数据结构初阶】双链表

双链表 1.双链表的实现1.1结口实现1.2申请结点1.3初始化双链表1.4打印双链表1.5尾插1.6尾删1.7头插1.8头删1.9计算大小1.10查找1.11pos位置插入1.12删除pos位置1.12删除双链表 全部码源 1.双链表的实现 1.1结口实现 #include<stdio.h> #include<stdlib.h> #inclu…

STM32F4系列单片机GPIO概述和寄存器分析

第2章 STM32-GPIO口 2.1 GPIO口概述 通用输入/输出口 2.1.1 GPIO口作用 GPIO是单片机与外界进行数据交流的窗口。 2.1.2 STM32的GPIO口 在51单片机中&#xff0c;IO口&#xff0c;以数字进行分组&#xff08;P0~P3&#xff09;&#xff0c;每一组里面又有8个IO口。 在ST…

AcWing 717. 简单斐波那契

原题链接 题目 以下数列 0 1 1 2 3 5 8 13 21 … 被称为斐波纳契数列。 这个数列从第 3 项开始&#xff0c;每一项都等于前两项之和。 输入一个整数 N &#xff0c;请你输出这个序列的前 N 项。 输入格式 一个整数 N 。 输出格式 在一行中输出斐波那契数列的前 N 项&…

共享内存和信号量的配合机制

进程之间共享内存的机制&#xff0c;有了这个机制&#xff0c;两个进程可以像访问自己内存中的变量一样&#xff0c;访问共享内存的变量。但是同时问题也来了&#xff0c;当两个进程共享内存了&#xff0c;就会存在同时读写的问题&#xff0c;就需要对于共享的内存进行保护&…

快速集成Skywalking 9(Windows系统、JavaAgent、Logback)

目录 一、Skywalking简介二、下载Skywalking服务端三、安装Skywalking服务端3.1 解压安装包3.2 启动Skywalking 四、关于Skywalking服务端更多配置五、Java应用集成skywalking-agent.jar5.1 下载SkyWalking Java Agent5.2 集成JavaAgent5.3 Logback集成Skywalking5.4 集成效果 …

数据库的三范式(Normalization)

数据库的三范式&#xff08;Normalization&#xff09;是关系数据库设计中的基本理论原则&#xff0c;旨在减少数据冗余和提高数据库的数据组织结构。三范式通过将数据分解为更小的表&#xff0c;并通过关系建立连接&#xff0c;使得数据库设计更加灵活、规范和容易维护。在这篇…

C语言——函数的嵌套调用

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void new_line() {printf("Hello\n"); }void three_line() {int i0;for(i0;i<3;i){new_line();} }int main() {three_line();return 0; }

FPGA实现双向电平转换

网上搜了一圈&#xff0c;好像没看到的类似的中文资料&#xff0c;不过MicroSemi有个文档AC349上给出了完整的解决方案&#xff0c;还有参考代码。 话不多说&#xff0c;看图&#xff1a; 欲知详情的朋友&#xff0c;请参考 AC349

你听说过“消费多少返利多少的”模式吗?

今天分享一个新的销售套路&#xff0c;看懂套路奋斗节约3年&#xff0c;你听说过“消费多少返利多少的”模式吗&#xff1f; 消费报销模式就是消费者在平台的消费&#xff0c;根据贡献度和活跃度平台去把之前消费的模式&#xff0c;给你返本了甚至还额外给你补贴奖励&#xff…

二阶段提交

二阶段提交 二阶段提交&#xff08;英语&#xff1a;Two-phase Commit&#xff09;是指&#xff0c;为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法(Algorithm)。 二阶段过程 在两阶段提交过程中&#xff0c;主要分为了两种角色协调者&…