一、学习目标
- 掌握文件权限进阶操作(修改所有者、所属组,理解特殊权限基础)。
- 学会磁盘分区查看、挂载 / 卸载及磁盘空间细节查看(du 命令)。
- 入门 Shell 脚本:编写简单脚本,理解变量和基本输出。
二、学习内容
(一)文件权限进阶(2 小时)
之前学了chmod
修改权限,今天重点学文件所有者、所属组的修改(实际工作中经常需要调整文件归属,比如将文件交给某个用户组管理)。
1. 修改文件所有者(chown 命令)
- 作用:改变文件 / 目录的所有者(谁拥有这个文件)。
- 命令格式:
sudo chown 新所有者 文件名/目录名
- 示例:
把~/linux_study/day1_note.txt
的所有者改为之前创建的workuser
(若已删除,可先用sudo useradd workuser
重建):bash
sudo chown workuser ~/linux_study/day1_note.txt
- 验证:用
ls -l
查看,文件权限前的所有者会从你的用户名变成workuser
:bash
ls -l ~/linux_study/day1_note.txt # 输出类似:-rw-r--r-- 1 workuser your_username ... day1_note.txt
2. 修改文件所属组(chgrp 命令)
- 作用:改变文件 / 目录的所属组(哪个用户组可以管理这个文件)。
- 命令格式:
sudo chgrp 新所属组 文件名/目录名
- 示例:
把day1_note.txt
的所属组改为workgroup
(若已删除,先用sudo groupadd workgroup
重建):bash
sudo chgrp workgroup ~/linux_study/day1_note.txt
- 验证:
ls -l
查看,所属组会从你的用户组变成workgroup
:bash
ls -l ~/linux_study/day1_note.txt # 输出类似:-rw-r--r-- 1 workuser workgroup ... day1_note.txt
3. 同时修改所有者和所属组(chown 的快捷用法)
- 命令格式:
sudo chown 新所有者:新所属组 文件名
- 示例:把文件改回自己的所有者和用户组(假设你的用户名为
your_user
,组为your_user
):bash
sudo chown your_user:your_user ~/linux_study/day1_note.txt
4. 特殊权限基础(简化版,了解即可)
- 粘滞位(Sticky Bit):只对目录有效,设置后只有文件所有者能删除自己的文件(防止他人误删公共目录文件)。
- 命令:
sudo chmod +t 目录名
- 示例:给
/tmp
(系统临时目录,默认有粘滞位)设置:bash
ls -ld /tmp # 查看权限,会显示't':drwxrwxrwt
- 命令:
(二)磁盘管理进阶(2 小时)
之前学了df -h
看磁盘整体空间,今天学更细致的磁盘操作:分区查看、挂载 / 卸载、目录占用空间。
1. 查看磁盘分区详情(fdisk 命令)
- 作用:列出所有磁盘的分区情况(比如硬盘分了几个区,每个区多大)。
- 命令:
sudo fdisk -l
(-l
表示列出所有磁盘) - 输出解读(重点看这几行):
bash
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors # 磁盘/dev/sda,总大小20GiB Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 41943039 41940992 20G 83 Linux # 分区/dev/sda1,大小20G,类型Linux
Device
:分区设备名(如/dev/sda1
);Size
:分区大小;Type
:分区类型。
2. 挂载与卸载磁盘(mount/umount)
- 什么是挂载:把新的磁盘 / U 盘分区 “连接” 到系统目录(比如把 U 盘挂载到
/mnt/usb
,才能访问里面的文件)。
(1)挂载步骤(以虚拟机共享文件夹为例,模拟 U 盘)
-
先创建挂载点(一个空目录):
bash
sudo mkdir /mnt/share # /mnt是系统默认挂载目录,share是自定义名称
-
查看要挂载的设备(假设虚拟机共享文件夹设备为
/dev/sr0
,实际中可用lsblk
查看所有设备):bash
lsblk # 列出所有磁盘/分区,找到你要挂载的设备名(如sdb1)
-
挂载设备到目录:
bash
sudo mount /dev/sr0 /mnt/share # 把/dev/sr0挂载到/mnt/share
-
验证:进入挂载点查看文件:
bash
ls /mnt/share # 能看到共享文件夹里的内容表示挂载成功
(2)卸载磁盘(必须先退出挂载目录,否则报错)
-
先退出挂载目录(若当前在
/mnt/share
,执行cd ~
):bash
cd ~
-
卸载:
bash
sudo umount /mnt/share # 卸载/mnt/share目录对应的设备
3. 查看目录 / 文件占用空间(du 命令)
- 作用:比
df
更细致,查看单个目录或文件的大小。 - 常用命令:
-
du -sh 目录/文件
:-s
只显示总和,-h
人类可读格式(推荐)。
示例:查看~/linux_study
目录总大小:bash
du -sh ~/linux_study # 输出类似:4.0K /home/your_user/linux_study
-
du -h 目录
:显示目录下所有子目录的大小(逐层列出)。
示例:查看/home
目录下各用户的空间:bash
du -h /home
-
(三)Shell 脚本入门(2 小时)
Shell 脚本是 “命令的集合”,可以批量执行命令(比如一键备份文件、自动清理日志),今天从最简单的脚本学起。
1. 什么是 Shell 脚本
- 一个以
.sh
为后缀的文本文件,里面写 Linux 命令,加执行权限后可直接运行。
2. 编写第一个脚本(输出问候语)
步骤 1:创建脚本文件
bash
nano ~/linux_study/hello.sh # 在linux_study目录下创建hello.sh
步骤 2:写入脚本内容(复制以下内容)
bash
#!/bin/bash # 声明脚本用bash解释器执行(固定开头)
echo "Hello, Linux!" # 输出一句话
echo "当前时间是:$(date)" # $(date)会自动替换为当前时间
- 解释:
#!/bin/bash
是脚本 “签名”,必须放在第一行;echo
用于输出文字;$(命令)
表示执行命令并获取结果。
步骤 3:保存并添加执行权限
- 按
Ctrl+O
保存,Ctrl+X
退出nano
。 - 加执行权限(之前学过
chmod +x
):bash
chmod +x ~/linux_study/hello.sh
步骤 4:运行脚本
bash
~/linux_study/hello.sh # 直接输入脚本路径运行
- 预期输出:
bash
Hello, Linux! 当前时间是:2025年 07月 09日 星期三 10:30:00 CST
3. 脚本变量基础
- 变量:存储数据的 “容器”,方便脚本中重复使用。
- 示例(修改
hello.sh
,加入变量):- 打开脚本:
nano ~/linux_study/hello.sh
- 修改内容:
bash
#!/bin/bash name="小白" # 定义变量name,值为“小白”(等号前后不能有空格) echo "你好,$name!" # 用$name调用变量(必须加$) echo "你的家目录是:$HOME" # $HOME是系统内置变量,代表用户主目录
- 保存后运行,输出:
bash
你好,小白! 你的家目录是:/home/your_user
- 打开脚本:
三、实践操作(超详细步骤)
(一)文件权限进阶实践
-
进入
linux_study
目录:bash
cd ~/linux_study
-
创建测试文件和组:
bash
sudo groupadd testgroup # 创建组testgroup sudo useradd testuser # 创建用户testuser touch test_perm.txt # 创建测试文件
-
修改文件所有者为
testuser
:bash
sudo chown testuser test_perm.txt ls -l test_perm.txt # 查看:所有者变为testuser
-
修改文件所属组为
testgroup
:bash
sudo chgrp testgroup test_perm.txt ls -l test_perm.txt # 查看:所属组变为testgroup
-
改回原所有者(你的用户名):
bash
sudo chown $USER:$USER test_perm.txt # $USER是系统变量,代表当前用户名
(二)磁盘管理实践
-
查看磁盘分区:
bash
sudo fdisk -l # 找到你的系统磁盘(如/dev/sda),记录分区大小
-
查看
/home
目录占用空间:bash
du -sh /home # 显示/home总大小 du -h /home # 显示/home下各子目录大小(可能需要sudo)
-
模拟挂载(以临时文件作为 “虚拟磁盘”,适合小白练习):
- 创建一个 100MB 的虚拟磁盘文件:
bash
dd if=/dev/zero of=~/test_disk bs=1M count=100 # 生成100MB空文件
- 格式化虚拟磁盘(格式化为 ext4):
bash
sudo mkfs.ext4 ~/test_disk # 提示“是否继续?”输入y
- 挂载到
/mnt/test
:bash
sudo mkdir /mnt/test sudo mount ~/test_disk /mnt/test
- 验证挂载:
bash
df -h | grep /mnt/test # 能看到挂载的100MB磁盘
- 卸载虚拟磁盘:
bash
sudo umount /mnt/test
- 创建一个 100MB 的虚拟磁盘文件:
(三)Shell 脚本实践
-
创建并编辑脚本
myfirst.sh
:bash
nano ~/linux_study/myfirst.sh
-
写入以下内容(复制粘贴):
bash
#!/bin/bash echo "===== 系统信息 =====" echo "当前用户:$(whoami)" # 显示当前用户名 echo "当前目录:$(pwd)" # 显示当前目录 echo "内存使用:$(free -h | grep Mem)" # 显示内存信息
-
保存退出(
Ctrl+O
→回车→Ctrl+X
)。 -
加执行权限并运行:
bash
chmod +x ~/linux_study/myfirst.sh ~/linux_study/myfirst.sh # 查看输出的系统信息