一、Ubuntu终端操作与Shell命令
1、终端的打开方式
(1)在Ubuntu桌面(或者任意其它位置)按下快捷键Ctrl+Alt+T,可以打开终端。

(2)在Ubuntu桌面右键空白区域,选择"在终端中打开",也可以打开终端。

2、常用的Shell命令
(1)目录信息查看命令ls:
①语法:
ls 选项 目录/文件名 # 方括号表示可选参数,选项用"-"引出,选项可多选
②不同选项及组合的作用:
|---------|-------------------------------------------------|
| 命令 | 作用 |
| ls | 只列出当前目录下文件和文件夹名字,不显示隐藏文件 |
| ls -l | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,不显示隐藏文件 |
| ls -lh | 列出当前目录下文件和文件夹的名字、权限、所有者、大小(人类可读形式)、修改时间,不显示隐藏文件 |
| ls -a | 列出当前目录下全部文件和文件夹,包含"."开头的隐藏文件 |
| ls -alh | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,包含"."开头的隐藏文件 |
| ls -R | 递归列出当前目录及所有子目录的文件 |
| ls -lt | 列出当前目录下文件和文件夹的名字、权限、所有者、大小、修改时间,按修改时间排序,不显示隐藏文件 |
| ls -d | 只看目录本身信息,不进入目录列出内部文件 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~$ ls
snap 下载 公共 图片 文档 桌面 模板 视频 音乐
zevalin@zevalin-VMware-Virtual-Platform:~$ ls -l
total 36
drwx------ 6 zevalin zevalin 4096 Oct 18 12:00 snap
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 下载
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 公共
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 图片
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 文档
drwxr-xr-x 2 zevalin zevalin 4096 Oct 18 00:49 桌面
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 模板
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 视频
drwxr-xr-x 2 zevalin zevalin 4096 Oct 17 16:26 音乐
(2)目录切换命令cd:
①语法:
cd 目标目录路径 # 方括号表示可选参数
在输入路径时,如果文件或文件夹名太长,可以输入部分字段,然后按下Tab键,直接自动补全,当然,如果输入的字段过短,PC可能无法精准匹配字符串,但也会补全到PC能够识别到的子串,用户可继续输入后续的部分,再按下Tab键,继续自动补全
②不同选项及组合的作用:
|-------------|------------------------------------|
| 命令 | 作用 |
| cd <目录名> | 进入当前目录下的子文件夹,其中参数是子文件夹相对于当前目录的相对路径 |
| cd /xxx/yyy | 进入参数指示的绝对路径(绝对路径从根目录开始跳转) |
| cd .. | 返回上一级目录,其中".."代表父目录 |
| cd ../xxx | 返回上一级目录,接着进入上级目录中的xxx文件夹 |
| cd . | 目录不跳转,仍保持在当前目录工作 |
| cd ~ | 回到用户家目录"/home/user",其中"~"代表家目录 |
| cd - | 回到上一次切换目录时所在的目录 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cd
zevalin@zevalin-VMware-Virtual-Platform:~$ cd snap
zevalin@zevalin-VMware-Virtual-Platform:~/snap$ cd ..
zevalin@zevalin-VMware-Virtual-Platform:~$ cd unclearpath
bash: cd: unclearpath: 没有那个文件或目录
(3)当前路径显示命令pwd:
①语法:
pwd 选项 # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|--------|----------------------------------|
| 命令 | 作用 |
| pwd | 输出当前所在目录的绝对路径 |
| pwd -L | 输出当前所在目录的逻辑路径(跟随软链接,初学阶段无需关注) |
| pwd -P | 输出当前所在目录的物理真实路径(不跟随软链接,初学阶段无需关注) |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd
/home/zevalin/桌面
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd -L
/home/zevalin/桌面
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ pwd -P
/home/zevalin/桌面
(4)系统信息查看命令uname:
①语法:
uname 选项 # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|----------|---------------------------|
| 命令 | 作用 |
| uname | 输出内核名称,用于确认系统类型 |
| uname -s | 输出内核名称,用于确认系统类型 |
| uname -n | 输出主机名(如果是在虚拟机,则是输出虚拟机主机名) |
| uname -r | 输出内核版本号 |
| uname -v | 输出内核编译时间信息 |
| uname -m | 输出硬件架构 |
| uname -a | 输出系统/内核的全部信息 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ uname -a
Linux zevalin-VMware-Virtual-Platform 7.0.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 4 09:10:14 UTC 2026 x86_64 GNU/Linux
(5)清理屏幕命令clear:
①语法:
clear # 该命令无参数,等效于快捷键Ctrl+L,可以清空终端屏幕内容
②需要说明的是,该命令不是删除历史执行命令记录,清屏后如果按"↑"键,仍然能查到之前输入的命令。(如果是使用快捷键清屏,那只是把屏幕中的记录上推,滚轮回滚依然能看到历史记录)

(6)显示文件内容命令cat:
①语法:
cat 选项 <文件名> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|----------------|------------------------------------|
| 命令 | 作用 |
| cat <文件名> | 将指定文件的内容输出到终端 |
| cat -n <文件名> | 将指定文件的内容输出到终端,并显示行号 |
| cat -b <文件名> | 将指定文件的内容输出到终端,并显示行号(空白行不编号) |
| cat -E <文件名> | 将指定文件的内容输出到终端,在每行末尾显示"$"符号,用来判断换行符 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cat -nE test.c
1 #include <stdio.h>$
2 int main(void)$
3 {$
4 return 0;$
5 }$
(7)切换用户身份命令sudo:
①语法:
sudo 选项 命令 # 方括号表示可选参数,选项用"-"引出
sudo命令需要输入用户密码,有时候输入密码时窗口没有反应,这是因为密码不可见,并不代表实际输入失败,输入完成后按下回车即可
②不同选项及组合的作用:
|------------------|----------------------------|
| 命令 | 作用 |
| sudo <命令> | 临时用root权限执行这条命令 |
| sudo -i | 切换到root登录shell |
| sudo -s | 切换到root登录shell,但保持当前用户环境变量 |
| sudo passwd root | 设置root用户密码 |
| sudo -k | 清除缓存的密码授权,下次sudo需要重新输密码 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sudo cat /etc/profile
[sudo: authenticate] 密码:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "$(id -u)" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in $(run-parts --list --regex '^[a-zA-Z0-9_][a-zA-Z0-9._-]*\.sh$' /etc/profile.d); do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
(8)切换用户命令su:
①语法:
su 选项 用户名 # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|--------------|------------------------------------|
| 命令 | 作用 |
| su | 尝试切换到root用户 |
| su root | 切换到root用户,只切换身份,环境变量、当前工作目录不变 |
| su - root | 完整切换root,重新加载root的环境变量,自动进入root家目录 |
| su <用户名> | 切换到指定普通用户 |
| su - <用户名> | 完整切换到指定用户,加载该用户全部环境,进入其家目录 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ su - root
密码:
su: 认证失败
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ su - zevalin
密码:
zevalin@zevalin-VMware-Virtual-Platform:~$
(9)文件拷贝命令cp:
①语法:
cp 选项 <源文件> <目标文件/路径> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|---------------------------|---------------------------------------------------------------|
| 命令 | 作用 |
| cp src.txt dest.txt | 复制文件src.txt,命名为dest.txt |
| cp src.txt ./test/ | 将src.txt复制到test文件夹内,文件名保持不变 |
| cp -r src_dir dest_dir | 递归复制文件夹,连同里面所有子文件、子目录一起拷贝 |
| cp -i src.txt dest.txt | 复制文件src.txt,命名为dest.txt,如果有重名文件的情况,将提示询问,输入"y"确认覆盖,输入"n"则取消覆盖 |
| cp -f src.txt dest.txt | 复制文件src.txt,命名为dest.txt,如果有重名文件的情况,将强制覆盖,不提示,直接覆盖已有文件 |
| cp -v src.txt <目标文件/路径> | 显示详细复制过程,列出复制的所有文件 |
| cp -rv src_dir dest_dir | 递归复制目录,并打印复制的详细过程 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cp test.c test_bak.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cp test.c ./test/
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test test.c test_bak.c
./test:
test.c
(10)移动文件命令mv:
①语法:
cp 选项 <源文件(可多个)> <目标文件/路径> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|--------------------------|-----------------------------------------------------------|
| 命令 | 作用 |
| mv old.txt new.txt | 把old.txt改名为new.txt |
| mv test.txt ./dir/ | 将test.txt移动到dir目录下,文件名不变 |
| mv file1 file2 ./target/ | 把多个文件一次性移动到target目录 |
| mv -i test.txt ./dir/ | 将test.txt 移动到dir目录下,如果有重名文件的情况,将提示询问,输入"y"确认覆盖,输入"n"则取消覆盖 |
| mv -f test.txt ./dir/ | 将test.txt移动到dir目录下,如果有重名文件的情况,将强制覆盖,不提示,直接覆盖已有文件 |
| mv -v test.txt ./dir/ | 显示文件移动的详细执行过程,打印操作信息 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test.c test_new.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test test_new.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test_new.c test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mv test.c ./test/
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test
./test:
test.c
(11)创建文件夹命令mkdir:
①语法:
mkdir 选项 <目录名> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|----------------------|------------------------------------|
| 命令 | 作用 |
| mkdir testdir | 在当前目录,创建单个文件夹 testdir |
| mkdir -p a/b/c | 递归创建多级目录,父目录不存在也自动创建 |
| mkdir -m 755 testdir | 创建文件夹testdir,并直接指定权限 |
| mkdir -v testdir | 在当前目录,创建单个文件夹testdir,显示创建过程,打印创建信息 |
| mkdir -pv a/b/c | 递归创建多级目录,父目录不存在也自动创建,显示创建过程,打印创建信息 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mkdir workspace
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ mkdir -pv project/src
mkdir: created directory 'project'
mkdir: created directory 'project/src'
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
project test test.c workspace
./project:
src
./project/src:
./test:
./workspace:
(12)创建文件命令touch:
①语法:
touch 选项 <文件名(可多个,带后缀)> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|--------------------------------|------------------------------------------|
| 命令 | 作用 |
| touch test.txt | 创建空白文件test.txt;文件已存在时,更新文件访问/修改时间,不会改动内容 |
| touch file1.c file2.h | 一次性创建多个空白文件(示例为file1.c、file2.h) |
| touch -d "2026-10-18" test.txt | 修改文件时间为指定日期(示例为2026-10-18) |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ touch file1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ touch file2.c file3.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
file1.c file2.c file3.c project test test.c workspace
(13)删除命令rm:
①语法:
rm 选项 <目标文件/路径> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|----------------|---------------------------------------------|
| 命令 | 作用 |
| rm test.txt | 删除普通文件test.txt |
| rm -i test.txt | 删除普通文件test.txt,删除前询问确认,输入"y"确认删除,输入"n"则取消删除 |
| rm -f test.txt | 强制删除文件test.txt,不提示,就算文件不存在也不报错 |
| rm -r dir | 递归删除目录,删除文件夹以及里面所有子文件、子目录 |
| rm -rf dir | 递归强制删除目录,强制删除文件夹以及里面所有子文件、子目录 |
| rm -v test.txt | 删除普通文件test.txt,显示删除的详细过程 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm file3.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -i file2.c
rm: 是否删除regular empty file 'file2.c'? y
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -ri project
rm: 是否进入目录 'project'? y
rm: 是否删除directory 'project/src'? y
rm: 是否删除directory 'project'? y
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rm -f file1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test test.c workspace
(14)目录删除命令rmdir:
①语法:
rmdir 选项 <目录名> # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|------------------|-----------------------------------------------------|
| 命令 | 作用 |
| rmdir testdir | 删除空目录testdir,目录非空则报错 |
| rmdir -p a/b/c | 递归删除多级空目录,删除c之后,如果b为空就删 b,b删完之后,为空就删a |
| rmdir -v testdir | 删除空目录testdir,显示删除过程,打印操作信息 |
| rmdir -pv a/b/c | 递归删除多级空目录,删除c之后,如果b为空就删 b,b删完之后,为空就删a,显示删除过程,打印操作信息 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test test.c test_deep1 workspace
./test:
./test_deep1:
test_deep2
./test_deep1/test_deep2:
./workspace:
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rmdir workspace
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ rmdir -pv test_deep1/test_deep2
rmdir: removing directory, 'test_deep1/test_deep2'
rmdir: removing directory, 'test_deep1'
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls -R
.:
test test.c
./test:
(15)查看/配置网卡信息命令ifconfig:
①使用该命令前,需要运行命令"sudo apt install net-tools",安装命令ifconfig。命令ifconfig语法如下:
ifconfig 选项 # 方括号表示可选参数,选项用"-"引出
②不同选项及组合的作用:
|-------------------------------------------------|-------------------------------|
| 命令 | 作用 |
| ifconfig | 查看已启用网卡的全部信息(IP、掩码、MAC、收发数据包) |
| ifconfig -a | 查看所有网卡的全部信息(IP、掩码、MAC、收发数据包) |
| ifconfig ens33 | 只查看ens33这一块网卡信息 |
| sudo ifconfig ens33 up | 启用网卡ens33 |
| sudo ifconfig ens33 down | 关闭网卡ens33 |
| sudo ifconfig ens33 reload | 重启网卡ens33 |
| sudo ifconfig ens33 <IP> netmask <MaskCode> | 临时设置网卡IP和子网掩码(重启网络会失效) |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.176.160 netmask 255.255.255.0 broadcast 192.168.176.255
inet6 fe80::20c:29ff:feab:8886 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ab:88:86 txqueuelen 1000 (以太网)
RX packets 61652 bytes 46868540 (46.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22199 bytes 3149351 (3.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 5410 bytes 693528 (693.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5410 bytes 693528 (693.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(16)重启命令reboot:
①语法:
reboot 选项 # 方括号表示可选参数
②不同选项及组合的作用:
|----------------|-------------------------|
| 命令 | 作用 |
| reboot | 正常安全重启系统,保存会话、卸载文件系统后重启 |
| sudo reboot | 正常安全重启系统,保存会话、卸载文件系统后重启 |
| reboot --halt | 停止系统,但不重启(也不关机) |
| sudo reboot -f | 强制重启,不优雅关闭程序,直接硬重启 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ reboot
(17)关机命令poweroff:
①语法:
poweroff
②不同选项及组合的作用:
|---------------|-------------------------|
| 命令 | 作用 |
| poweroff | 正常安全关闭系统,保存会话、卸载文件系统后关机 |
| sudo poweroff | 正常安全关闭系统,保存会话、卸载文件系统后关机 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ poweroff
(18)系统帮助命令man:
①语法:
man 命令名 # 按"q"退出帮助
②不同选项及组合的作用:
|----------|---------------|
| 命令 | 作用 |
| man ls | 查看ls命令的完整帮助手册 |
| man sudo | 查看sudo命令手册 |
| man man | 查看man命令自身的帮助 |
(19)数据同步写入磁盘命令sync:
①语法:
sync 选项 文件 # 方括号表示可选参数
Linux为提升读写速度,文件写入时先放到内存缓存,不会立刻落盘,断电或重启可能丢失缓存内数据,sync的作用就是强制把内存缓冲区里还没写入磁盘的数据刷写到硬盘
②不同选项及组合的作用:
|---------------|--------------------------|
| 命令 | 作用 |
| sync | 把所有文件系统缓存全部同步到磁盘 |
| sync file.txt | 只同步指定单个文件file.txt的缓存数据落盘 |
| sync dir/ | 同步指定目录dir/相关缓存 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sync test.txt
(20)查找文件命令find:
①语法:
find 搜索起始路径 匹配条件 动作 # 方括号表示可选参数
②不同选项及组合的作用:
|------------------------------------|---------------------------------------------|
| 命令 | 作用 |
| find . -name "test.c" | 在当前目录("."表示当前目录)递归查找名字为test.c的文件 |
| find ./project -name "*.h" | 在当前目录子文件夹project目录下,查找所有后缀为.h的头文件("*"是通配符) |
| find . -type d -name "src" | 在当前目录递归查找名字为src的目录 |
| find . -type f | 列出当前路径下所有普通文件 |
| find . -name "*.log" -delete | 找到所有后缀为.log的文件,直接删除 |
| find . -type f -exec ls -lh {} \; | 找到文件后,执行ls -lh查看详情 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -name "test.c"
./test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -name "*.c"
./test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ find . -type f
./test.c
(21)查找内容命令grep:
①语法:
grep 选项 "查找的字符串" <文件名/路径> # 方括号表示可选参数,可多选
②不同选项及组合的作用:
|---------------------------|-----------------------------------------|
| 命令 | 作用 |
| grep "int" test.c | 在test.c中,查找包含"int"的行并打印 |
| grep -n "return" test.c | 在test.c中,查找匹配内容"return",同时显示行号 |
| grep -i "INT" test.c | 在test.c中,查找包含"INT"的行并打印,查找时忽略字母大小写 |
| grep -v "//" test.c | 在test.c中,查找并输出不包含字符串"//"的行 |
| grep -r "gpio" ./project | 递归搜索目录,在project下所有文件中查找关键词"gpio" |
| grep -rn "gpio" ./project | 递归搜索目录,在project下所有文件中查找关键词"gpio",同时显示行号 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep "int" test.c
int main(void)
int a;
int b; //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -n "int" test.c
2:int main(void)
4: int a;
5: int b; //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -ni "INT" test.c
2:int main(void)
4: int a;
5: int b; //注释
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ grep -v "//" test.c
#include <stdio.h>
int main(void)
{
int a;
return 0;
}
(22)文件/文件夹大小查看命令du:
①语法:
du 选项 文件/目录名 # 方括号表示可选参数,可多选
②不同选项及组合的作用:
|------------------|------------------------------------------------|
| 命令 | 作用 |
| du | 统计当前目录下所有子目录占用空间,递归输出每一层大小 |
| du -h | 统计当前目录下所有子目录占用空间,递归输出每一层大小(人类可读单位) |
| du -sh | 输出当前目录占用总容量,不列出子目录详情 |
| du -h project | 查看project目录下各子目录大小,带可读单位 |
| du -ah | 统计当前目录下所有子目录及文件的占用空间,递归输出每一层大小和每个文件的大小(人类可读单位) |
| du --max-depth=1 | 统计当前目录下所有文件(不递归深入子目录)的占用空间 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du
12 ./test
20 .
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -h
12K ./test
20K .
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -sh
20K .
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du -ah
4.0K ./test.c
4.0K ./test/test2.c
4.0K ./test/test1.c
12K ./test
20K .
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ du --max-depth=1
12 ./test
20 .
(23)磁盘空间检查命令df:
①语法:
df 选项 文件/目录名 # 方括号表示可选参数
②不同选项及组合的作用:
|-------------|--------------------------------|
| 命令 | 作用 |
| df | 查看所有挂载的文件系统分区信息 |
| df -h | 查看所有挂载的文件系统分区信息(以人类可读单位输出大小信息) |
| df -i | 查看inode使用情况 |
| df -h / | 只查看根分区"/"的磁盘信息 |
| df -h /home | 查看/home分区的磁盘信息 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 1.5G 2.6M 1.5G 1% /run
/dev/sda2 49G 12G 36G 24% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
none 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
none 1.0M 0 1.0M 0% /run/credentials/systemd-resolved.service
tmpfs 3.7G 8.0K 3.7G 1% /tmp
tmpfs 738M 88K 738M 1% /run/user/1000
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -i
文件系统 Inodes 已用I 可用I 已用I% 挂载点
tmpfs 819200 1350 817850 1% /run
/dev/sda2 3276800 173888 3102912 6% /
tmpfs 944200 1 944199 1% /dev/shm
none 1024 1 1023 1% /run/credentials/systemd-journald.service
none 1024 1 1023 1% /run/credentials/systemd-resolved.service
tmpfs 1048576 56 1048520 1% /tmp
tmpfs 188840 159 188681 1% /run/user/1000
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h /
文件系统 大小 已用 可用 已用% 挂载点
/dev/sda2 49G 12G 36G 24% /
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ df -h /home
文件系统 大小 已用 可用 已用% 挂载点
/dev/sda2 49G 12G 36G 24% /
(24)打开文件命令gedit:
①使用该命令前,需要运行命令"sudo apt install gedit",安装命令gedit。命令gedit语法如下:
gedit 文件名 # 方括号表示可选参数
②不同选项及组合的作用:
|-----------------------------|----------------------------------|
| 命令 | 作用 |
| gedit | 打开空白编辑器 |
| gedit test.c | 打开/新建test.c文件,可在图形界面中编辑 |
| gedit test.c & | 在后台打开/新建test.c文件,可在图形界面中编辑,不阻塞终端 |
| sudo gedit /etc/resolv.conf | 管理员权限打开系统配置文件,可用于修改系统文件 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ gedit test.c &
(25)系统进程查看命令ps:
①语法:
ps 选项 # 方括号表示可选参数
②不同选项及组合的作用:
|-----------------------|-----------------|
| 命令 | 作用 |
| ps | 查看当前用户终端进程 |
| ps aux | 查看所有终端进程,用户格式显示 |
| ps -ef | 查看全部进程,完整格式显示 |
| ps aux | grep ssh | 查看ssh相关进程 |
| ps -ef | grep python | 查看python相关进程 |
| ps aux | grep R | 查看当前正在运行的进程 |
| ps -p <PID> | 按PID查看指定进程 |
| ps axf | 树状显示进程父子关系 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ps
PID TTY TIME CMD
4993 pts/2 00:00:00 bash
7065 pts/2 00:00:00 ps
(26)进程实时运行状态查看命令top:
①语法:
top
②实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ top
③运行top指令后,能在终端实时查看系统 CPU、内存、进程状态工具,默认3秒刷新一次,如下图所示(按"Q"可继续输入命令),其中各字段定义如下:
|---------|----------------|
| 字段 | 定义 |
| PID | 进程ID |
| USER | 运行用户 |
| PR | 优先级 |
| NI | nice值(负数优先级更高) |
| VIRT | 虚拟内存 |
| RES | 常驻物理内存(实际占用内存) |
| %CPU | CPU占用率(单核心占比) |
| %MEM | 物理内存占用率 |
| TIME+ | 进程累计CPU时间 |
| COMMAND | 进程名 |

(27)文件类型查看命令file:
①语法:
file 选项 <文件名或目录> # 方括号表示可选参数,可多选
②不同选项及组合的作用:
|-----------------|-------------------------|
| 命令 | 作用 |
| file <文件名> | 输出文件的类型描述 |
| file -b <文件名> | 输出文件的类型描述(不输出文件名) |
| file -i <文件名> | 输出MIME类型,适合脚本自动化解析 |
| file -L <文件名> | 跟随软链接,查看链接指向的真实文件类型 |
| file -k <文件名> | 持续匹配,找到多个匹配类型全部输出,不提前终止 |
| file -r <目录名> | 递归查看目录下所有文件 |
③实操演示:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file test.c
test.c: C source, Unicode text, UTF-8 text
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file -b test.c
C source, Unicode text, UTF-8 text
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ file -i test.c
test.c: text/x-c; charset=utf-8
二、Ubuntu常用操作
1、软件安装
(1)APP Store安装:
①类似于手机的应用中心,在安装Ubuntu的时候,默认也会带一个应用中心,在这里可以直接安装软件。

②需要注意的是,Ubuntu的应用中心中的软件并没有想象中的丰富,大部分软件可能是没法在Ubuntu的应用中心中搜索到的。

(2)sudo apt-get install安装:
①安装软件一般需要权限,如果以普通用户的权限运行apt-get install,基本上是无法安装的。
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ apt-get install git
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - open (13: 权限不够)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),请查看您是否正以 root 用户运行?
②基于以上原因,在运行apt-get install指令时,需要加前缀"sudo"。
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ sudo apt-get install git
[sudo: authenticate] 密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
正在解析依赖... 完成
将会同时安装下列软件:
git-man liberror-perl
建议安装:
git-doc git-email git-gui gitk gitweb git-cvs git-svn
下列【新】软件包将被安装:
git git-man liberror-perl
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 75 个软件包未被升级。
需要下载 5,453 kB 的归档。
解压缩后会消耗 28.4 MB 的额外空间。
③需要注意的是,该方式同样只能安装当前系统软件源仓库里面已经收录的软件包。
(3)deb软件包安装:
①.deb是Debian/Ubuntu系列Linux的软件安装包格式,相当于Windows的.msi安装包,内部打包了程序二进制、配置文件、文档、依赖声明、安装/卸载脚本。
②在下载软件的官网中,通常有适配不同操作系统的版本提供给用户,对于Ubuntu,选择Linux版本的安装包下载即可。

③下载完成后,双击下载的.deb文件,会打开应用中心,确认无风险后,直接安装即可。

④除了双击.deb文件以外,还可打开终端,将工作目录切换到.deb文件所在目录,运行命令"sudo dpkg -i <deb文件名>"即可。

(4)除了以上三种方法,还可以自行下载源码然后编译安装(前提是软件有公开的源码以及配套的编译安装步骤文档,比如tree命令工具)。
(5)以上四种办法可能均不支持部分软件的安装,具体情况需要具体分析,可在网络中查找对应的解决办法,此处不过多赘述。
2、压缩与解压缩
(1)Linux下常见的压缩包扩展名有------.tar、.tar.bz2、.tar.gz,这三个格式中比较常用的是.tar.bz2、.tar.gz,如果希望在Windows中打出这两个格式的压缩包,可以借助软件7ZIP实现。
①右键要打包的文件夹,选择"7-ZIP"→"添加到压缩包..",压缩格式选择"tar"(注意这一步是"打包",而不是"压缩"),然后点击"确定",即可将文件夹打包。


②右键打包生成的tar文件,选择"7-ZIP"→"添加到压缩包..",压缩格式选择"bazip2"或"gz",然后点击"确定",即可将文件夹压缩,生成的压缩文件可以直接拖入虚拟机,在虚拟机解压缩。


(2)在Ubuntu中可以使用gzip工具压缩(压缩为.gz格式)或解压缩文件,不过对于压缩文件夹而言,它只能起到压缩的作用,在压缩文件夹之前,需要先将它打包为tar格式。
①gzip命令语法:
gzip 选项 <文件名> # 方括号表示可选参数,选项用"-"引出,选项可多选
②可选参数(仅列出常用,具体可参考帮助文档):
|----------|------------------------------------------|
| 参数 | 作用 |
| -d | 解压文件(等价于gunzip),不加此参数则为压缩文件 |
| -k | 该参数可用于压缩和解压,不加此参数的话,压缩或解压操作只保留产物,源文件会被删除 |
| -v | 显示压缩率和压缩的过程 |
| -l | 查看.gz包的信息,如原始大小、压缩后大小和压缩率 |
| -r | 递归进入目录,压缩里面所有文件(目录本身不会打包) |
| -t | 校验压缩包是否损坏 |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |
| -c | 输出到标准输出,配合 > 重定向,保留原文件 |
③文件压缩操作示例:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│ ├── test1.c
│ └── test2.c
└── test.c
2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ gzip -rk test
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│ ├── test1.c
│ ├── test1.c.gz
│ ├── test2.c
│ └── test2.c.gz
└── test.c
2 directories, 5 files
(3)在Ubuntu中还可以使用bzip2工具压缩(压缩为.bz2格式)或解压缩文件,不过对于压缩文件夹而言,它也是只能起到压缩的作用,在压缩文件夹之前,同样需要先将它打包为tar格式。
①bzip2命令语法:
bzip2 选项 <文件名> # 方括号表示可选参数,选项用"-"引出,选项可多选
②可选参数(仅列出常用,具体可参考帮助文档):
|----------|------------------------------------------|
| 参数 | 作用 |
| -d | 解压文件(等价于bunzip2),不加此参数则为压缩文件 |
| -k | 该参数可用于压缩和解压,不加此参数的话,压缩或解压操作只保留产物,源文件会被删除 |
| -v | 显示压缩率和压缩的过程 |
| -t | 校验压缩包是否损坏 |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |
| -c | 输出到标准输出,配合 > 重定向,保留原文件 |
| -f | 强制覆盖操作目录下已有同名的文件 |
| -s | 操作过程中减少内存占用 |
| -z | 压缩文件,该参数为缺省参数 |
③文件压缩操作示例:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test
│ ├── test1.c
│ └── test2.c
└── test.c
2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ bzip2 -k test.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ ls
test test.c test.c.bz2
(4)以上介绍了两种压缩工具,对于文件夹而言,在压缩之前还需要打包,在解压之后还需要解包。在Linux中,可以使用tar工具完成打包/解包的工作(该工具同时还支持压缩和解压)。
①tar命令语法:
tar 选项 <打包后的文件名> <源文件/目录> # 如果操作含打包,需写打包后的文件名
②可选参数(仅列出常用,具体可参考帮助文档):
|----|-----------------------------------------------------------------|
| 参数 | 作用 |
| -c | 创建新包 |
| -x | 解包 |
| -t | 查看包内文件列表,不解压 |
| -f | 指定包文件名(该选项要写在所有选项之后) |
| -v | 显示操作的详细过程 |
| -z | 使用gzip压缩,后缀为.tar.gz |
| -j | 使用bzip2压缩,后缀为.tar.bz2 |
| -J | 使用xz压缩,后缀为.tar.xz |
| -C | 将包解压到指定目录(该选项写在<源文件/目录>之后,指定目录写在该选项之后,具体语法参考以下示例),不指定则解压到当前目录 |
| -P | 保留绝对路径的文件 |
| -r | 向已有的.tar包追加文件(不能向压缩包追加文件,只能向.tar包追加) |
③文件压缩操作示例:
1对.tar.gz进行压缩和解压缩:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test.c
└── testdir
├── test1.c
└── test2.c
2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zcvf test.tar.gz testdir/
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -ztvf test.tar.gz
drwxrwxr-x zevalin/zevalin 0 2026-10-21 00:06 testdir/
-rw-rw-r-- zevalin/zevalin 86 2026-10-18 22:10 testdir/test2.c
-rw-rw-r-- zevalin/zevalin 86 2026-10-18 22:10 testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zxvf test.tar.gz
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -zxvf test.tar.gz -C /tmp
testdir/
testdir/test2.c
testdir/test1.c
2对.tar.bz2进行压缩和解压缩:
bash
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tree
.
├── test.c
└── testdir
├── test1.c
└── test2.c
2 directories, 3 files
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jcvf test.tar.bz2 testdir/
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jtvf test.tar.bz2
drwxrwxr-x zevalin/zevalin 0 2026-10-21 00:06 testdir/
-rw-rw-r-- zevalin/zevalin 86 2026-10-18 22:10 testdir/test2.c
-rw-rw-r-- zevalin/zevalin 86 2026-10-18 22:10 testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jxvf test.tar.bz2
testdir/
testdir/test2.c
testdir/test1.c
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ tar -jxvf test.tar.bz2 -C /tmp
testdir/
testdir/test2.c
testdir/test1.c
(5)除了以上介绍的常见的两种压缩格式,在Ubuntu下还支持.rar格式和.zip格式,相关命令如下(均需额外下载安装):
①zip命令可将文件夹压缩为.zip,语法与参数如下:
zip 选项 -P \<密码\> <压缩包名> <源文件/目录> # 方括号表示可选参数,选项用"-"引出,选项可多选;压缩包名可直接写生成路径
|----------|--------------------------------|
| 选项 | 作用 |
| -r | 递归压缩目录(压缩文件夹时必须带此参数) |
| -v | 显示操作的详细过程 |
| -q | 压缩过程中不输出信息 |
| -P | 设置密码(该选项需单独用"-"引出,之后填写密码) |
| -1 ~ -9 | 压缩级别,数字越低压缩速度越快,相应地压缩率也越低,默认为6 |
②unzip命令可将.zip压缩包解压,语法与参数如下:
unzip 选项 <压缩包名> -d \<解压目标目录\> # 方括号表示可选参数,选项用"-"引出,选项可多选
|----|----------------------------------------|
| 选项 | 作用 |
| -l | 查看压缩包内容,不解压 |
| -t | 校验压缩包是否损坏 |
| -v | 显示操作的详细过程 |
| -d | 将包解压到指定目录(该选项写在<压缩包名>之后,指定目录写在该选项之后) |
| -o | 解压时遇到重名文件直接覆盖,不询问 |
| -n | 解压时遇到重名文件不覆盖 |
③rar命令可将文件夹压缩为.rar,语法与参数如下:
rar <动作> 选项 <压缩包名> <源文件/目录> # 方括号表示可选参数,选项用"-"引出;压缩包名可直接写生成路径
|-----|-----------------------|
| 动作 | 作用 |
| a | 添加压缩包 |
| 选项 | 作用 |
| -p | 命令行会弹出交互引导,操作者输入压缩包密码 |
| -hp | 压缩过程中加密文件名和内容 |
④unrar命令可将.rar压缩包解压,语法与参数如下:
unrar <动作> 选项 <压缩包名> 解压目标目录 # 方括号表示可选参数,选项用"-"引出
|-----|------------------------------|
| 动作 | 作用 |
| x | 解压时保留压缩包内的目录结构 |
| e | 解压时不保留压缩包内的目录结构,所有文件都解压到当前目录 |
| l | 查看压缩包内容,不解压 |
| t | 校验压缩包是否损坏 |
| 选项 | 作用 |
| -o+ | 解压时遇到重名文件直接覆盖,不询问 |
| -o- | 解压时遇到重名文件不覆盖 |