1.我们先来了解一下Linux为什么不同的发行版本中的目录结构基本上都一样呢?
因为Linux有一个组织叫LSB(全称:Linux Standards Base)定义的Linux发行版基础目录名称命名法则及功用固定,这种标准叫做FHS (Filesystem Hierarchy Standard(文件系统目录标准)文件系统层级标准。
2.根文件系统即:rootfs,目录结构:/etc,/usr,/var,/root,/home,/dev
3.文件有两类数据:
元数据:metadata :Super Block GDT inode表 inode 位图 block 位图
数据: data :Data Block
#元数据和数据不在一个地方存储,(tune2fs -l /dev/sad2)查看占用块的信息字节为单位。一个文件至少占用一个块
4.文件名规则:
文件高亮颜色:蓝色----->目录 绿色----->可执行文件 红色----->压缩文件 浅蓝色----->链接文件 灰色----->其他文件
包括路径在内文件名称最长4095个字节,用/分隔的路径不能 超过255个字节。
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和 文件不推荐使用,有些字符需要用引号来引用它们。
标准Linux文件系统(如ext4),文件名称大小写敏感。例如 :MAIL, Mail, mail, mAiL
以.开头的文件是隐藏文件
5.文件系统结构:
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器 (bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即 会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件 (/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置 b: block device,随机访问 c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据 ?/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share
var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件 log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据;通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策 略等信息的存储位置
6.Linux上的应用程序的组成部分 :
二进制程序:/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
7.Linux下的文件类型:
-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket
8.绝对路径和相对路径:
绝对路径:以正斜杠开始 完整的文件的位置路径 可用于任何想指定一个文件名的时候
相对路径:不以斜线开始 指定相对当前的工作目录位置 可以作为一个简短的形式指定一个文件名
9.ls命令参数:
功能:列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
Example:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –u 配合-t选项,显示并按atime 从新到旧排序
ls –U 不排序按目录存放顺序显示
10.文件通配符:
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- : 前一个工作目录
[0-9]:匹配一个数字范围
[a-z]:大写和小写字母
[A-Z]:大写字母
[wxc] 匹配列表中的任何的一个字符
[^wxc] 匹配列表中的所有字符以外的字符
预定义的字符类:
#man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号
11.查看文件状态:使用stat
文件:metadata, data (元数据,数据)
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
创建空文件和刷新时间
touch命令:touch [OPTION]... FILE...
-a: 仅改变 atime
-m: 仅改变 mtime
-t:STAMP: [[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存在,则不予创建
12.cp文件和目录:
-i:交互式
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档,相当于-dR --preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
-p:等同--preserv=mode,ownership,timestamp
-v: --verbose ? -f: --force
--preserv[=ATTR_LIST] mode: 权限 ownership: 属主属组 timestamp: links xattr context all
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 SRC... DEST SRC...:多个文件
DEST必须存在,且为目录,其它情形均会出错;
cp SRC DEST SRC是目录:此时使用选项:-r 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:复制SRC目录中所有文件至DEST中;
13.mv文件和目录:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i: 交互式
-f: 强制
14.rm文件和目录:
rm [OPTION]... FILE...
常用选项:
-i: 交互式
-f: 强制删除
-r: 递归
--no-preserve-root
例: #rm -rf /
15.目录常用操作:
tree 显示目录树:
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir 创建目录:
-p: 存在于不报错,且可自动创建所需的各目录;
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限;
rmdir 删除空目录 :
-p: 递归删除父空目录
-v: 显示详细信息
rm -r 递归删除目录树
16.设置命令别名:
编辑配置给出的新配置不会立即生效;
bash进程重新读取配置文件:
source /path/to/config_file
. /path/to/config_file
撤消别名:unalias
unalias [-a] name [name ...] 例如 ~]# unalias bf
如果别名同原命令同名,如果要执行原命令,可使用 “\COMMAND” ’COMMAND’ /PATH/COMMAND:外部命令
17.索引节点:
inode(index node)表中包含文件系统所有文件列表
一个节点 (索引节点)是在一个表 包含有关文件的信息 ( 元数据 ),
包括:
文件类型
权限
UID
GID 链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
#人是通过文件名来引用一个文件
#而文件引用一个是 inode号
#一个目录是目录下的文件名和文件inode号之间的映射
cp和inode
CP和inode: 分配一个空闲的inode号,在inode表中生成新条目在目录中创建一个目录项,将名称与inode编号关联 拷贝数据生成新的文件
rm和inode
链接数递减,从而释放的inode号可以被重用 把数据块放在空闲列表中 删除目录项 数据实际上不会马上被删除,但当另一个文件使用数据块 时将被覆盖。
mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置:没有 数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm
18.查看文件类型:
文件可以包含多种类型的数据
检查文文件类型,然后确定适当的开放命令或应用程序使用
file [options] <filename>...
Option:
-b列出文件辨识结果时,不显示文件名称。
-c详细显示指令执行过程,便于排错或分析程序执行形
-f列出文件中文件名的文件类型
-F使用指定分隔符号替换输出文件名后默认的”:”分隔符
-i输出mime类型的字符串
-L查看对应软链接对应文件的文件类型
-z尝试去解读压缩文件的内容
--help显示命令在线帮助
19.硬链接和软连接:
硬链接:
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时: rm命令递减计数的链接 文件要存在,至少有一个链接数 当链接数为零时,该文件被删除;
不能跨越驱动器或分区
语法: ln filename [linkname ]
软链接:
一个符号链接指向另一个文件
ls - l的 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的 长度;不增加或减少目标文件inode的引用计数;
语法:ln -s filename [linkname]