6.4 KiB
每打开一个文件都会消耗一个fd(文件描述符)
1、Linux目录
简介:Linux目录结构是一个单根倒置的树结构,文件系统从根目录开始,用"/"表示,文件名最长255字节,包括路径在内文件名称最长4095字节。
1.1 绝对路径和相对路径
绝对路径:你家通过卫星定位是xx东经xx北纬,体现在linux上就是开头是根目录 相对路径:你家在小明家旁边,对应linux 就是当前目录的哪里
1.2 文件目录大全
- /:根目录
- /boot:引导文件、内核文件(vmlinuz)、引导加载grup都存放此目录中
- /bin:所有用户使用的基本命令,必须存放到系统盘下,OS启动的时候会用到的程序
- /sbin:管理类的基本命令,OS启动时会用到里面的命令
- /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
- /lib64:专用于x86_64系统上的辅助共享库文件存放位置
- /etc:配置文件目录
- /home/USERNAME:普通用户家目录
- /root:管理员家目录
- /media:便携式移动设备挂载点
- /mnt:临时文件系统挂载点
- /dev:设备文件及特殊文件存储位置
- /opt:第三方应用程序的安装位置
- /srv:系统上运行的服务用到的数据
- /tmp:临时文件存储位置
- /usr:universal shared,read-only data 通用的共享的只读数据
- /usr/bin:保证系统拥有完整功能提供的应用程序
- /usr/lib:库文件
- /usr/include:C程序的头文件
- /usr/share:结构化独立的数据
- /usr/share/local:第三方程序的安装目录
- /var:variable data file,变化数据
- /var/cache:应用程序缓存的数据目录
- /var/lib:应用程序状态信息数据
- /var/local:专用于为/usr/local下的应用程序存放可变数据
- /var/lock:锁文件
- /var/log:日志文件
- /var/run:存放运行中的进程相关数据,常用于存储进程的PID文件
- /var/spool:应用程序数据池
- /var/tmp:存放系统两次重启之间产生的临时数据
- /proc:内核与进程信息相关
- /selinux:selinux相关的安全策略等信息的存储位置
2、目录常用操作命令
2.1 显示当前工作目录
pwd
root@lzc:~# pwd
/root
pwd是使用PWD环境变量获取当前目录路径
2.2 切换到其他目录
cd
- -:上一次所在的目录,cd使用OLDPWD变量获取上一次目录路径
- ..:父目录
- .:当前目录
- -P:跳转到链接至的目录
- -S:从大到小排序
2.3 列出目录内容
ls
- -a:包含隐藏文件
- -l:显示大小,权限等信息
- -R:目录递归
- -X:按文件后缀排序
2.4 显示目录树
tree
- -d:只显示目录
- -L:指定显示的层级数目
2.5 创建目录
mkdir
- -p:递归创建
- -m:创建时直接指定权限
2.6 删除目录
rmdir
- -p:递归删除
3、Linux文件
3.1 文件类型
- -:普通文件
- d:目录文件
- l:符号链接文件
- b:块设备
- c:字符设备
- p:管道文件
- s:套接字文件
3.2 文件数据
metadata:源数据,属性信息,比如文件的大小,相关时间,类型,此类数据是存放在inode表中 inode(index node)保存的信息如下:
- inode number:节点号
- 文件类型
- 权限
- UID
- GID
- 链接数
- 指向磁盘上文件的数据块指针
相关命令和inode的关系: 当执行cp时,底层发生以下变化,分配一个空闲的inode号,在inode表中生成新条目,在目标目录中创建一个目录项,将新文件名称与inode编号关联,拷贝数据生成新的文件
当执行rm 时,底层发生以下变化 释放对应文件占用的inode号,把数据块放到空闲列表中,删除目录项
目录是一个特殊的文件,目录文件保存了此目录中的文件列表以及inode number对应关系,一个目录是目录下文件名和文件inode号之间的映射
3.3 文件颜色
- 蓝色:目录
- 绿色:可执行文件
- 红色:压缩文件
- 浅蓝色:链接文件
- 灰色:其他文件
3.4 文件状态
stat命令
root@lzc:~# stat 1.txt
File: 1.txt
Size: 210 Blocks: 8 IO Block: 4096 regular file
Device: fc02h/64514d Inode: 556125 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-12-05 23:55:07.813678618 +0800 #访问时间,atime,读取文件内容时会更新
Modify: 2023-12-05 23:55:07.005686767 +0800 #修改时间,mtine,改变文件内容时会更新
Change: 2023-12-05 23:55:07.005686767 +0800 #改变时间,ctime,元数据发生改变时更新,例如权限、所有者、大小等改变才会更新,仅更新文件内容,此值不会更新
Birth: 2023-12-04 23:44:39.861025975 +0800
3.5 文件通配符
- *:匹配0个或多个字符,但不匹配.开头的文件 ,即不匹配隐藏文件
- ?:匹配任何单个字符,一个汉字也算一个字符
- ~:当前用户家目录
- [0-9]:匹配单个数字范围
- [a-z]:匹配一个小写字母
- [A-Z]:匹配一个大写字母
- [zhengchi]:匹配列表中任何一个字符
- [^zhengchi]:匹配列表中所有字符以外的字符
- ~-:前一个工作目录
- [:digit:]:任意数字
- [:lower:]:任意小写字母
- [:upper:]:任意大写字母
3.6 创建文件
touch -a:仅改变atime和ctime -m:仅改变mtime和ctime
3.7 复制文件和目录
cp
- -i:如果目标已经存在,覆盖前提示是否覆盖
- -n:不覆盖
- -r,R:递归复制目录及内部所有内容
- -a:递归复制,且复制权限
- cp -b:目标存在的话,覆盖前先备份,源文件名结尾会被加上~只保留最近一个备份
3.8 移动和重命名文件
mv -b:目标存在,覆盖前先备份,备份文件以~结尾
rename rename '原名字' '目标名字' 文件
3.9 删除文件
rm
- -i:交互式
- -f:强制删除
- -r:递归
3.10 链接文件
ln 硬链接 简介:硬链接就是新建一个文件和源文件数据绑定,当源文件被删除时,文件独立,否则数据持续同步,无法对目录创建硬链接,硬链接inode号相同
软连接 简介:类似于windows 的快捷方式,源文件被删除,软链接文件也去殉情 -s
注意:当软件链接目录时,要注意删除命令
rm -rf /data:# 只删除/data这个软连接 rm -rf /data/ # 删除软连接下所有文件