【linux】学习笔记Chap_23_File_目录文件结构
文件管理
ordinary file–普通文件
普通文件包含两种类型
text file & binary file
Test files
- 一般用于存储文本数据,shell脚本,源程序等等
Binary file
- 包含非文本数据,和一些只能被程序读懂的文件
如照片 音乐 视频等等
directory–目录文件
目录用于装载其它文件或目录,来整理文件系统以形成一个体系
而Unix系统是一个大型层次树结构(文件包含文件)
pseudo file–伪文件
非普通文件或目录,本身不用来存储数据,也不占用空间
功能:
- 用来执行一些由kernel提供的服务
access a service provided by the kernel
special file / device file–特殊文件
代表:
- 物理设备 如键盘,显示器,监视器
Linux将这类文件放在**/dev**(device)目录中,这些文件一般被系统程序应用
其中一些平时会见到的文件如下表:
硬件
[start-plane type=“1”]
/dev/sda1 SCSI hard disk SCSI硬盘
/dev/fd0 floppy disk 软盘分区 数字0代表第一个分区
/dev/hda hard disk 硬盘
[/start-plane]
终端
[start-plane type=“1”]
/dev/tty 当前终端
/dev/tyy1 虚拟终端 本地登陆
tty 再代指终端,原意思是Teletype machines 电传打字机
另外 输入命令tty可以查看当前使用的终端位置
1 | tty |
/dev/pts/0 伪终端 远程登陆或用使用GUI
/dev/ttyp0 伪终端
[/start-plane]
伪设备
[start-plane type=“1”]
/dev/null 黑洞
/dev zero 小黑洞
运行 cat /dev/zero时消耗流量速度很大,但没有任何输出!
/dev/random 随机数
[/start-plane]
named pipe–可命名管道符
是pipe facility的高级版本,将一个程序的输出与 下一程序输入相连接
一般使用pipe时,如
1 | cat /etc/passwd | grep root |
这里的pipe是自动创建的,而且只在程序运行时存在
现在,可以使用**mkfifo
** 命令来创建一个可一直存在的pipe
如
1 | mkfifo fifotest |
现在创建了一个fifotest的pipe
在第一个终端下,使用以下命令
1 | grep root /etc/passwd >fifotest |
proc file—进程文件
允许我们接入kernel
最初,这些文件被用来提供有关正在运行的程序(processes)的信息
全部的进程文件被保存在/proc 目录中,目录里面有许多子目录,目录名是进程的id
1 | 如 :正在运行的进程是#1099 则对应的进程信息在/proc/1099中找到 |
FileSystem–文件系统
- 终级目录 root(目录中包含另一个root是管理员的home目录) 是唯一的主目录,其它所有文件或目录都是root的子文件
Linux系统至少包含10万个文件,一个有序的树结构将这些文件显示清
用 ls -R / | wc -l
可以给出root(main)包含的文件数40000+多个
因为root directory 根目录太重要了,如果一直用root代表根目录就有些麻烦,所以
用/
(slash) 代表root目录
如
1 | ls / #查看根目录下文件 |
Mount 挂载
- Linux文件系统中,这些目录并不存储在同一物理设备中,往往存放在不同设备中,包括多磁盘分区中
- 每个磁盘中有独立的文件系统,包含目录和子目录
当我们连接这些子文件系统时,可用Mount
断开连接用umount
当一个unix系统启动时,一系列的文件系统将自动连接到一起。但有时,也要手动连接一些文件系统**(只有root有此权限)**
如:
1 | #将软盘/dev/fd0 附加到主区 /media/floppy |
可以让用户通用media floppy来使用dev fd0文件
简介根目录
bin目录
- bin下面存放的都是二进制文件,是各种最最重要的系统程序,和一些基本的工具
一般运行程序在bin中,管理员程序在sbin中,第三方程序在opt中
dev目录
- 设备文件,每个特殊文件代表一个物理设备,一些代表伪设备
etc目录设置文件
- 当系统启动时就会执行的设置文件,包含一些影响系统的命令
- 其中就有rc文件(初始化文件)
home用户目录
- 所有的用户,会有个单独以用户名为名字的目录,存放个人文件
1 | /home/lthero |
lib目录
libary
- 基本的共享库,内核模块。这些模块是运行/bin下程序的基础
lost and found 目录:损坏文件
- 如果Linux突然关闭,下次重启时,fsck(filesystem check)程序会检查文件系统并修复问题,如果有一些被打断的文件被找到,fsck 将他们移动到lost and found目录中,管理员可以从中恢复数据。
media目录
- 可移动媒体挂载点,用来挂载CD,DVD,软盘等
mnt 用来挂载修复的媒体
opt目录
- 第三方应用(optional software)
proc目录
- 进程信息文件
root目录
- 管理员home目录,类似于用户home目录
sbin目录
- (system binaries )最最基本的管理员程序,包含一些系统管理程序,这里的程序只能由管理员运行
srv目录
- 本地系统提供的服务数据
tmp—临时文件夹
- 所有人都能用,但这里的文件将被自动删除,所以只能短时间存放文件
usr目录
- 静态数据的第二大文件系统,静态数据是没有管理员干预不会改变的数据
/usr下包含一些常用的程序
/usr/bin
- 包含可执行程序,而且数据比/bin更多,系统大部分可执行程序都来源于/usr/bin
为什么有两个bin文件夹呢?
由于历史问题,原来应该存放在一起的文件,因为容量不足,开发者们将文件分成两组,/bin下面将装载最基本的启动程序,和最基本的系统文件,余下的部分装在/usr/bin下面。在系统启动时,最先进入drum,也就是/bin下文件。系统运行后再挂载/usr/bin文件系统,接入剩下文件
/usr/games
- 包含一些游戏和有趣程序像 fortune\sl(火车)\
/usr/include
- 包含被c c++用的文件
/usr/lib
- 像/lib 存放预先存在的数据模型、资源库和一些被程序接入服务使用的代码
同/usr/bin一样,最基本的模型和资源被存放在/lib中,系统启动时用/lib内容。之后再挂载/usr/lib文件,接入剩下的资源
/usr/local
- 为管理员支持本地用户时使用,可以在此找到本地文档和程序,典型用途是创建/usr/local/bin目录,来保存不属于主系统的程序
/usr/sbin
- 被管理员用的系统程序 system binaries
var目录
- 动态数据的第二文件系统