目录
一,文件管理
Linux的目录结构是一个树状结构:
文件的分类:
符号 | 文件类型 |
- | 普通文件 |
d | 目录文件 |
l | 连接文件 |
c | 字符文件 |
b | 块设备文件 |
s | 套接字文件 |
p | 管道文件 |
操作文件的常用命令:
文件元数据和节点和inode表结构:
特点:
1,在
Linux
系统中,一切皆文件, 每个文件,又分为文件元数据和具体内容两部份
2, 一个文件元数据和其具体内容数据,在磁盘分区上,是分开存放的。
3, 这种存储文件元数据的区域就叫 inode,中文译作
"
索引节点
",
每个文件都有一个
inode
和
n(n>=1)
个
block
数据块,
inode
存储文件元数据,数据块存储文件内容
数据。
创建文件:
在linux中创建文件时会为文件分配一个inode号,并且分配一些block。但是一个inode对应多少blocks则由系统决定。所以,创建文件是否能成功由inode和内除决定。内存够但是创建文件不成功可能是inode号不足,inode号足够但创建文件不成功可能是因为内存不够。
查看inode号和内存用量:
df -i
查看文件inode号:
ls -i filename
cp和inode:
cp
命令:
分配一个空闲的
inode
号,在
inode
表中生成新条目
在目录中创建一个目录项,将名称与
inode
编号关联
拷贝数据生成新的文件
rm和inode:
rm
命令:
链接数递减,从而释放的
inode
号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
mv和inode:
如果
mv
命令的目标和源在相同的文件系统,作为
mv
命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响
inode
表(除时间戳)或磁盘上的数据位置:没有数据被移动!
软硬连接:
硬连接:
硬连接相当于让原文件的inode号有了多个别名。如下图所示:
创建硬连接:
ln filename1 filename2 //创建一个指向filename1的硬连接filename2
演示:
查看inode号:inode号相同
软连接:
软连接相当于让原来的文件名多了一个别名。
创建软连接:
ln -s file1 file3 //为file创建一个软连接file3
演示:
inode号:不一样
二,IO重定向
1,标准输入输出
在linux中由三个最基本的IO文件:标准输入,标准输出,标准错误输出
查看:
ll /dev/std*
演示:
在虚拟终端中,标准输入输出都是当前窗口
查看:
ll /proc/self/fd/ //显示fd对应的硬件
tty //显示当前窗口
演示:
2, 重定向
将输入和输出转移到别的文件中,不在当前窗口显示。
标准输出重定向:
#覆盖操作符,如果文件存在,会被覆盖
> #把STDOUT重定向到文件
1> #同上
2> #把STDERR重定向到文件
&> #把标准输出和错误都重定向
>& #和上面功能一样,建议使用上面方式
#追加操作符,在原有文件的基础上追加内容
>> #追加标准输出重定向至文件
1>> #同上
2>> #追加标准错误重定向至文件
标准输入重定向:
< #标准输入重定向
<<终止词 #标准多行输入重定向cmd <<< "string"#高级输入重定向
3,管道
能将输出变为另一个文件或者指令的输入。有些文件不支持管道,但是可以在中间加入参数:xargs来当中间人转换