文件系统结构和基础命令
文件结构
bin --> binnary 普通用户(可执行二进制程序)
sbin 管理员(可执行二进制程序)
boot 存放设备启动 引导程序(内核文件)
dev 存放设备
etc 存放配置文件
home 家目录
var 存放变化文件
proc 系统内存的映射目录,提供内核与进程信息
ls -l 文件名 //看第一个字符
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备/block) 存储设备硬盘,U盘
c 设备文件(字符设备/char)打印机,终端/dev/tty1
s 套接字文件
p 管道文件 (×××)
l 链接文件(淡蓝色)
文件系统分层结构:LSB(linux Standard Base)
文件系统目录结构标准文档:FHS(Filesytem Hierarchy Standard)
http://www.pathname.com/fhs
扫描磁盘 echo '- - - ' > /sys/class/scsi_host/host0/scan
区分大小写有文件系统决定
/etc/DIR_COLORS 定义了文件颜色
/dev/zero (二进制0) /dev/null(空) 字符设备
dd if=/dev/zero of =/data/zerofile bs=1 count=1
hexdump -C / xxd 查看二进制
绝对路径:描述从/开始的全路径
相对路径:描述参考当前工作(或其他)目录,来说明路径,不以/开始
basename 基名 (文件路径最后的名字)
dirname 目录名(取文件夹目录)
/etc/rc.local 保存的是用户自定义开机引导程序
/var/log/message 保存的是系统日志信息
- 显示当前工作目录 ---CWD
- type 查看命令类型
- file 查看文件类型
- pwd -P 显示文件真实路径
- stat 可以查看文件变更时间
文件通配符 元字符:表示特定含义,不表示字符本身
* 匹配零个或多个字符
? 匹配任意单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 字母
[A-Z] 字母
[wei] 匹配列表中的任何一个字符
[^wei] 匹配列表中所有字符以外的字符
预定义的字符类:man 7 glob
[:digit:]: 任意数字,相当于0-9
[:lower:]: 任意小写字母
[:upper:]: 任意大写字母
[:alnum:]: 任意数字或字母
[:blank:]: 水平空白字符
[:cntrl:]: 控制(非打印)字符
[:graph:]: 图形字符
[:print:]: 可打印字符
[:punct:]: 标点符号
[:space:]: 空白字符
[:xdigit:]: 十六进制字符
文件管理命令
- cp 常用选项
-i 覆盖前提示 -n 不覆盖,注意两者顺序 -r,-R 递归复制目录及内部的所有内容 -a 归档,相当于-dR --preserv=all -v 具体详细信息 -d --no-dereference --preserv=links 不复制原文件,只复制链接名 --preserv[=ATTR_LIST] mode:权限 ownership:属主属组 all :所有
- 清空文件
>/boot/f1 (<清空磁盘)
-
rm -f /boot/f1 (删除文件)
-
touch 创建特殊文件夹
touch ./-h 或者 touch -- -h touch ./~
- rm 删除特殊文件或文件夹
rm ./-h
目录操作
-
mkdir 创建目录
- -p:存在于不报错,且可自动创新所需的路径
- -v:显示详细信息
- -m MODE:创建目录时直接指定权限
-
rmdir 删除空目录
- -p:递归删除父空目录
- -v:显示详细信息
-
rm -r 递归删除目录树
- 批量修改文件名称:
- rename:
例:rename conf conf.bak *.bak
- rename:
索引节点
- inode(index node) 表中包含文件系统所有文件列表
- 系统是通过索引节点(而不是文件名)来定位每一个文件。
- inode是指向一个文件数据区的指针号码,一个inode对应着系统中唯一的一片物理数据区,而位于两个不同物理数据区的文件必定分别对应着两个不同的inode号码。
-
mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv命令 用新的文件名创建对应新的目录项 删除旧的目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置;没有数据被移动! 如果目标和源在一个不同的文件呢系统,mv相当于cp和rm
-
cp和inode
在CP的命令: 分配一个空闲的inode号,在inode表中生成新条目 在目录中创建一个目录项,将名称与inode编号关联 拷贝数据生成的新文件
- rm和inode
rm命令: 链接数递减,从而释放的inode号可以被重用 把数据块放在空闲列表中 删除目录项 数据实际上不会马上被删除,担当另一个文件使用数据块时将被覆盖
节点编号被用光,系统会提示空间不足,
ls -i 查看节点编号
sherd -zu 彻底删除文件
- -z 表示清零
- -u 表示覆盖
软,硬链接
-
硬链接 ln 源文件 目标文件
本质上是相同的文件创建不同的文件名(节点编号相同)
例: ln /data/mysql/db1 /data2/db1 ; rm -f /data/mysql/db1 数据库文件过大,会对数据库造成压力,将文件链接到其他目录,删除数据库原目录文件,保留其他目录文件,减小对数据库压力,然后删除其他目录链接文件。
-
软链接 ln -s 源文件 目标文件
通过软链接找到原始文件 删除软链接目录时,不可加/,否则会删除文件夹内容 软链接的相对路径 是相对链接文件的路径,而不是当前路径
- 软,硬链接的区别:
1.硬链接是同一个文件创建不同的名,软链接是不同的文件(本质) 2.软连接可以跨设备垮分区,硬链接不支持 3.软连接可以支持目录,硬链接不支持 4.软连接创建的时候不增长链接数,硬链接会增长 5.硬链接原始文件删除以后不影响链接文件,没有主次之分,软连接原始文件删除以后,链接失效 6.文件类型不同,硬链接创建什么类型文件链接文件是什么类型, 7.相对路径法:硬:相对于CWD, 软:相对于软链接文件的相对路径 8.链接文件的大小:软链接的大小就是路径的字符数,硬链接大小与原文件相同
确定文件内容
- file 查看文件类型 分析文件的头,从而了解文件是做什么用的
magic number 魔数 描述了文件的类型 file -b 不显示文件名称 -f filelist 列出文件filelist中文件名的文件类型 -F 使用指定分隔符号替换输出文件名后默认的":"分隔符 -L 查看对应软链接对应文件的文件类型 --help 显示命令在线帮助
面试题:
区别:
- ln-s /data/file1 /data/file2
- mv /data/file1 /data/file2
ln -s 文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
命令 mv 移动并重命名文件,其结果不影响文件的用户数据及 inode 号,只更改文件名,文件移动前后 inode 号不变。