**每打开一个文件都会消耗一个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 ```shell 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命令 ```shell 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/ # 删除软连接下所有文件 #####