文章目录
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
其他命令暂时不介绍了,用到了再查询吧