linux基础文件管理软硬链接
一、文件系统的基本结构
1、文件和目录被组成一个单根倒置树目录结构
2、文件系统从根目录下开始,用“/”表示
3、根文件系统(rootfs):root filesystem文件名区分大小写
4、以 . 开头的文件为隐藏文件
5、路径用/隔离
6文件有两类数据:元数据和数据本身
7、文件名规则
- 文件名最多255个字节包括路径在内文件名称最长4095个字节
- 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
- 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
- 标准Linux文件系统(如ext4),文件名称大小写敏感例如:MAIL, Mail, mail, mAiL,部分文件系统大小写不敏感,文件大小写敏感与否取决于文件系统而不是操作系统
8、文件系统结构
- /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相关的安全策略等信息的存储位置
二、linux应用程序的组成部分以及文件的类型
1、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
2、文件类型
- - 普通文件
- d 目录文件
- b 块设备
- c 字符设备
- l 符号链接文件
- p 管道文件pipe
- s 套接字文件socket
三、文件常用的命令
ls
列出当前目录的内容或指定目录
用法: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,元数据发生改变
touch
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
cp
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
-i 覆盖前提示
-n 不覆盖,注意两者顺序
-r, -R 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p 等同--preserv=mode,ownership,timestamp
-v --verbose 显示复制过程
-f --force 强制
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为 filename~
--backu
p=numbered 目标存在,覆盖前先备份加数字后缀
mv
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
tree
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir
-p: 递归删除父空目录
-v: 显示详细信息
通配符
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
四、硬链接
1、创建硬链接会增加额外的记录项以引用文件
2、对应于同一文件系统上一个物理文件
3、每个目录引用相同的inode号
4、创建时链接数递增
5、删除文件时:
6、rm命令递减计数的链接
7、文件要存在,至少有一个链接数
8、当链接数为零时,该文件被删除
9、不能跨越驱动器或分区
10、语法:ln filename [linkname ]
五、软连接
一个符号链接指向另一个文件
1、ls - l的 显示链接的名称和引用的文件
2、一个符号链接的内容是它引用文件的名称
3、可以对目录进行
4、可以跨分区
5、指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
6、语法:ln -s filename [linkname]
六、软硬链接的区别
1、文件类型不同
2、软连接可跨分区,硬链接不可以
3、硬链接的与原文件的inode号相同,软连接不同
4、硬链接可以增加文件的链接数,软连接不可以
5、主从关系。硬链接无主从关系,原文件删除不会影响访问,软连接则会失效。