202 lines
6.4 KiB
Markdown
202 lines
6.4 KiB
Markdown
**每打开一个文件都会消耗一个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/ # 删除软连接下所有文件
|
||
|
||
#####
|
||
|
||
|
||
|
||
|