一、文件系统
文件系统特征
* 文件和目录被组织成一个单根倒置树结构
* 文件系统从根目录下开始,用“/” 表示
* 根文件系统(rootfs): root filesystem
* 文件名称:区分大小写
* 以.开头的文件为隐藏文件
* 路径分隔的 /
* 文件有两类数据:
*
* 元数据: metadata
* 数据: data
*
元数据内容包括
*
* 文件名
* 文件大小
* 文件所在数据块
* 数据块的大小
* 文件类型
* 文件所在的Inode
* 硬链接次数
* 权限
* 属主id
* 属组id
* 最近一次访问时间戳
* 最近一次更改文件内容的时间戳
* 最近一次更改文件元数据的时间戳
*
* 文件系统分层结构: LSB(Linux Standard Base)
FHS: (Filesystem Hierarchy Standard)
http://www.pathname.com/fhs/
文件命名规则
* 文件名最长255个字节
* 包括路径在内文件名称最长4095个字节
* 在系统中默认显示:
蓝色-->目录
绿色-->可执行文件
红色-->压缩文件
浅蓝色-->链接文件
灰色-->其他文件
* 除了 斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,某些字符需要用引号来引用
* 标准Linux文件系统(如ext4),文件名称大小写敏感
例如: MAIL, Mail, mail, mAiL
注:大小写敏感与否与文件系统格式有关,如windows系统挂载到Linux中,大小写不敏感
二、目录结构
* /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
* /bin:所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序(另:该“目录”是一个链接文件,链接至/usr/bin)
* /sbin:管理类的基本命令;不能关联至独立分区, OS启动即会用到的程序(另:该“目录”是一个链接文件,链接至/usr/sbin)
* /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: 保证系统拥有完整功能而提供的应用程序,参考/bin
* sbin: 参考/sbin
* tmp:
* 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相关的安全策略等信息的存储位置
三、Linux文件类型
* - 普通文件
* d 目录文件
* b 块设备
* c 字符设备
* l 符号链接文件
* p 管道文件pipe
* s 套接字文件socket
四、绝对路径及相对路径
绝对路径
* 以正斜杠开始
* 完整的文件位置路径
* 可用于指定任何一个文件名
相对路径
* 不以斜线开始
* 指定相对于当前工作目录或某目录的位置
* 可以作为一个简短的形式指定一个文件名
五、文件通配符
-
匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 字母
[A-Z] 字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符预定义的字符类:
可以使用命令查看:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
六、文件管理相关命令
pwd(print working directory):列出当前工作目录
相关变量:
PWD:当前目录路径
OLDPWD:前一次目录路径
basename:获取文件基名
dirname:获取文件路径名
cd:切换目录
.. 切换至上一层目录(父目录)
~ 切换至当前用户家目录(只用cd也可切换至用户家目录)
- 切换至前上次所在目录
ls:列出当前路径下内容
-a 包含隐藏文件
-l 显示额外的信息(= ll)
-R 目录递归显示
-ld 目录和符号链接信息
-1 文件分行显示
–S 按从大到小排序
–t 按mtime(内容修改时间)排序
–u 配合-t选项,显示并按atime(文件访问时间)从新到旧排序
–U 按目录存放顺序显示
–X 按文件后缀排序
stat:display file or file system status(显示文件及文件系统状态)
touch:change file timestamps(修改文件时间戳,创建新文本文件)
-c:如果文件不存在,不创建文件;如果存在则更新时间戳
-a:change only the access time(只更改访问时间)
-m:change only the modification time(只更改内容时间)
注:无论使用 -a or -m ,Change time都会跟着变化
-t STAMP:指定atime 和 mtime时间戳
use [[CC]YY]MMDDhhmm[.ss] instead of current time
cp:copy files and directories(复制文件及目录)
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
-a:--archive,same as -dR --preserve=all(做备份时使用)
-u:--update,只复制发生改变及新增的文件及目录(包含其下内容),个人理解为“增量备份”
-i:交互式复制,覆盖前提示(默认情况下,cp被系统alias为cp -i)
-n:不覆盖,与-i连用,使用时注意两者顺序(-i -n)
-r = -R:递归复制目录及内部的所有内容
-d: --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force,强制复制
-b: 目标存在,覆盖前先备份
--backup=numbered 目标存在,覆盖前先备份加数字后缀
mv:移动( 重命名)文件(目录)
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
基本参数用法,参考cp命令
-i: 交互式
-f: 强制移动
-b: 目标存在,覆盖前先备份
rm
rm [OPTION]... FILE...
基本参数用法,参考cp命令
-i 交互式
-f 强制删除
-r 递归;
rm -r 递归删除目录树
--no-preserve-root 删除 / 目录
tree:显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir:创建目录
-p: 存在也不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir:删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
file:determine file type(确定文件类型)
ln:创建链接文件
硬链接:一个文件分配多个名字
ln source dest
1. 创建硬链接会增加额外的记录项以引用文件
2. 对应于同一文件系统上一个物理文件
3. 每个文件引用相同的inode号
4. 不能跨越驱动器或分区
5. 链接数:
创建时链接数递增
删除文件时:rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
软链接:相当于Windows下的快捷方式
ln -s source dest
1. 一个符号链接指向另一个文件
2. ls - l 可以显示链接的名称和引用的文件
3. 一个符号链接的内容是它引用文件的名称
4. 可以对目录进行软链接
5. 可以跨分区进行软链接
6. 指向的是另一个文件的路径;
7. 其大小为指向的路径字符串的长度;
8. 不增加或减少目标文件inode的引用计数