一、文件系统与目录结构
目录 | 描述 |
---|---|
/ | 第一层次结构 的根、 整个文件系统层次结构的根目录。 |
/bin/ | 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。 |
/boot/ | 引导程序文件,例如: kernel、initrd;时常是一个单独的分区[6] |
/dev/ | 必要设备, 例如:, /dev/null. |
/etc/ | 特定主机,系统范围内的配置文件。 关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为etcetera, [7] 这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。 [8] 自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。 [9] |
| /opt/的配置文件 |
| X Window系统(版本11)的配置文件 |
| SGML的配置文件 |
| XML的配置文件 |
/home/ | 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。 |
/lib/ | /bin/ 和 /sbin/中二进制文件必要的库文件。 |
/media/ | 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。便携式挂载点 |
/mnt/ | 临时挂载的文件系统。 |
/opt/ | 可选应用软件 包。[10] |
/proc/ | 虚拟文件系统,将内核与进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。 |
/root/ | 超级用户的家目录 |
/sbin/ | 必要的系统二进制文件,例如: init、 ip、 mount。 |
/srv/ | 站点的具体数据,由系统提供。 |
/tmp/ | 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。 |
/usr/ | 用于存储只读用户数据的第二层次; 包含绝大多数的(多)用户工具和应用程序。[11] |
| 非必要可执行文件 (在单用户模式中不需要);面向所有用户。 |
| 标准包含文件。 |
| /usr/bin/和/usr/sbin/中二进制文件的库。 |
| 非必要的系统二进制文件,例如:大量网络服务的守护进程。 |
| 体系结构无关(共享)数据。 |
| 源代码,例如:内核源代码及其头文件。 |
| X Window系统 版本 11, Release 6. |
| 本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/、lib/、share/. [12] |
/var/ | 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。 |
| 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。 |
| 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。 |
| 锁文件,一类跟踪当前使用中资源的文件。 |
| 日志文件,包含大量日志文件。 |
| 用户的电子邮箱。 |
| 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]。 |
| 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。 |
| 用户的邮箱(不鼓励的存储位置) |
| 在系统重启过程中可以保留的临时文件。 |
/run/ | 代替/var/run目录。 |
文件系统
文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用“/”表示
根文件系统(rootfs):root filesystem
文件名称区分大小写
以.开头的文件为隐藏文件
路径分隔的 / u 文件有两类数据: 元数据:metadata 数据:data
文件系统分层结构:LSB Linux Standard Base
FSH
文件名规则
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色→目录
绿色→可执行文件
红色→压缩文件
浅蓝色→链接文件
灰色→其他文件
粉色→sock文件
浅黄色→管道文件
除了斜杠,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。
标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL
文件类型
-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket
应用程序的组成部分
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
CentOS 7目录变化
u/bin 和 /usr/bin
u/sbin 和 /usr/sbin
u/lib 和/usr/lib
u/lib64 和 /usr/lib64
二、创建和查看文件
显示当前工作目录
每个shell和系统进程都有一个当前的工作目录
CWD:current work directory
显示当前shell CWD的绝对路径
pwd:(printing working directory)
-P 显示真实 物理路径
-L 显示链接路径(默认)
绝对和相对路径
绝对路径 以正斜杠开始 完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名 不以斜线开始 指定相对于当前工作目录或某目录的位置 可以作为一个简短的形式指定一个文件名
基名:basename
[root@centos6 ~]#basename /etc/sysconfig/networknetwork
目录名:dirname
[root@centos6 ~]#dirname /etc/sysconfig/network/etc/sysconfig
更改目录
cd 改变目录
使用绝对或相对路径: cd /home/wang/ cd home/wang
切换至父目录: cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd -
选项:-P
相关的环境变量:
PWD:当前目录路径
OLDPWD:上一次目录路径
列出目录内容
列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
查看文件状态
stat
文件:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
文件通配符
预定义的字符类:man 7 glob
创建空文件和刷新时间
touch [OPTION]... FILE...
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
复制文件和目录cp
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中 如果目标存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中 基于安全,建议为cp命令使用-i选项 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中cp常用选项
-i:覆盖前提示 –n:不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR --preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
cp 选项
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:--update 只复制源比目标更新文件或目标不存在的文件
--backup=numbered 目标存在,覆盖前先备份加数字后缀
移动和重命名文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY umv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i: 交互式
-f: 强制
删除
rm [OPTION]... FILE...
常用选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
示例:
rm -rf /
目录操作
tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
rm -r 递归删除目录树
索引节点
inode(index node)表中包含文件系统所有文件列表
一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
inode表结构
目录
文件引用一个是 inode号
人是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射
inode表
cp和inode
在 CP的 命令:
分配一个空闲的inode号,在inode表中生成新条目 在目录中创建一个目录项,将名称与inode编号关联 拷贝数据生成新的文件
rm和inode
rm 命令:
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm
硬链接
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:
ln filename [linkname ]
符号(或软)链接
一个符号链接指向另一个文件
ls - l的 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
语法:
ln -s filename [linkname]
软链接与硬链接的区别:
本质:
1)硬链接:一个文件多个名字
2)软连接:一个文件对应的快捷方式,不同文件
表现:
1) 链接数
硬链接增长,软连接不增张
2) 软连接可以跨分区
3) 目录
硬链接只能链接文件
4) 原始和链接文件的关系
硬链接平等关系
软连接是依赖关系
5) 删除
删除后硬链接可用
6)大小
软连接大小取决于路径的长度
注意:创建软连接时优先使用相对路径;(源文件的路径是相对路径 ,一定是相对与软连接文件的路径,而不是相对于当前路径)
确定文件内容
文件可以包含多种类型的数据
检查文件的类型,然后确定适当的打开命令或应用程序使用
file [options] <filename>...
常用选项:
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助