Linux 文件系统
前面已经介绍了一部分文件权限和目录的相关知识点,接下来我们来学一下整个的文件系统。
目录与路径
执行一下下面的命令吧:
cd / # 切换如根目录 cd # 切换会家目录 pwd # 显示当前目录路径(全路径) mkdir aa # 创建目录aa rmdir aa # 删除目录aa
环境变量:
执行一下下面的命令吧:
echo $PATH sudo mv /bin/ls /root # 移动文件ls到root中 ls # 无法执行,没有该命令 sudo /root/ls # 可以执行 sudo mv /root/ls /bin # 在拷贝回来 ls # 一切正常
这个里面展示了我们的环境变量,这个很重要,如果我们需要的命令不在环境变量中,则我们无法使用相关命令,但是使用全路径的话也是可以使用该命令的。
文件目录查看 ls
上面的ls命令是查看目录的,这个命令还有其他参数,这里不列出,可以使用man查询
常用的如下: 自己去试一下看看效果吧
ls ls -l ls -al ls -Al ls -d
复制移动删除创建 cp mv rm touch
这些命令我们上面也用了一些。
- 现在我们来尝试cp使用如下命令吧!
touch main.txt # 创建main.txt ls # 查询文件是否创建成功 cp main.txt main2.txt # 拷贝文件 cat main2.txt # 查看一下内容 vim main.txt # 编辑一下文件 cp main.txt main2.txt # 拷贝文件 cat main2.txt # 查看一下内容 , 这个时候我们发现文件时直接覆盖的 cp -i main.txt main2.txt # 拷贝文件,如果被目标文件存在则会询问 mkdir aa cd aa touch main.txt cd .. cp aa bb # 会提示 ls cp -a aa bb # 全拷贝 ls rm -r bb # 删除bb cp -r aa bb # 递归拷贝
- 接下来是rm命令
rm aa # 应该会报错 rm -r aa # 删除目录aa mkdir aa rm -i -r aa # 询问是否删除 rm -rf aa # 强制删除 touch ./-aaa- rm ./-aaa-
- 接下来是mv命令
touch main mv main mm ls mkdir mmm cd mmm/ touch main cd .. mv mmm/ ccc ls
- touch创建文件或者修改文件
c touch -t 202201010202 aa.txt ls -l
这些还有一堆的属性,只能在使用的时候慢慢去发现啦
文件内容查看
- cat 查看文件(第一行到最后一行)tac 反向查看文件(最后一行到第一行)
vim aa.txt cat aa.txt cat -n aa.txt cat -A aa.txt tac aa.txt
- nl
nl aa.txt # 忽略空行 nl -b a aa.txt # 空行也补行号
- more less
more aa.txt # 向后翻页查看 less aa.txt # 前后翻页查看
- head tail
head -5 aa.txt # 查看前5行 tail -5 aa.txt # 查看后5行
- od
od -t c aa.txt # ASCII打开文件
文件与目录的默认权限与隐藏权限
默认权限
umask # 输出的去掉的权限的数字 (只看后三个,分别对应的 u g o) umask -S # 权限的显示
隐藏权限
lsattr aa.txt chattr +a aa.txt
● a: 当设定a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root才能设定这属性
● c: 这个属性设定之后,将会自动的将此文件了压缩],在读取的时候将会自动解压缩,
但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
● d:当 dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被 dump 备份
● i:这个 可就很厉害了!他可以让一个文件了不能被删除、改名、设定连结也无法写入或新增数据!]对于系统安全性有相当大的帮助! 只有 root 能设定此属性
● s:当文件设定了 。属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,
所以如果误删了,完全无法救回来了喔!
● u:与 s 相反的,当使用 来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!
文件特殊权限 SUID SGID SBIT
● SUID:
suid权限仅对二进制程序有效
执行者对于该程序具有x的可执行权限
本权限仅在执行该程序的过程中有效
执行者将具有该程序拥有者的权限
● SGID:
SGID对二进制程序有用
程序执行者对于该程序来说,需要具备X的权限
执行者在执行的过程中会或则程序群组的支持
● SBIT:
用户对于此目录具有wx权限,亦即具有写入的权限
当用户在该目录下简历文件或者目录时,仅有自己和root才有权限删除该文件
chmod 4755 aa.txt ls -l chmod 6755 aa.txt
SUID不是用在目录上,而SBIT不是用在文件上的。
file查看文件类型
执行一下命令吧:
file aa.txt
指令与文件搜寻
执行一下命令吧
cd which ifconfig which which which history # 搜查不到 history --help # 可以使用? 为什么 后续提 whereis history whereis ifconfig whereis -m passwd sudo apt install plocate locate ifconfig # locate 查询是基于数据库查询的 updatedb # 更新locate的数据库 sudo find / -name ifconfig
文件系统
执行一下命令试试:
df df -h df -ih du /etc
创建连接文件
回到我们之前的aa.txt 文件目录, 执行以下命令吧
先尝试创建硬连接,再尝试创建软连接,看看有什么不一样吧
touch mm.txt ln -i mm.txt aa.txt vim aa.txt # 随便写点东西 cat mm.txt ll -i aa.txt mm.txt # 查询文件inode号码 两个是一致的 ln -s aa.txt dd ls -al ll -i aa.txt dd cat dd rm aa.txt cat dd
磁盘挂载与分区
尝试执行一下命令:
- 查看磁盘和分区信息
lsblk blkid parted /dev/sda print
- 磁盘分区:
MBR请使用fdisk分区,GPT请使用gdisk分区
, 我这里就不详细分区了,感觉可以单独整出来。
gdisk /dev/sda p # 查看磁盘状态 q # 退出gdisk
压缩与解压缩
回到aa.txt目录,尝试执行一下命令吧!
vim aa.txt ls -al tar -zcf aaa.tar.gz mm.txt rm -f mm.txt tar -zxvf aaa.tar.gz vim mm.txt rm -f aaa.tar.gz gzip mm.txt gunzip mm.txt.gz
其他命令暂时不介绍了,用到了再查询吧