【linux核心命令】
- 一级目录
- 1. 使用 `gzip` 压缩为 `.gz` 格式
- 知识点
- 代码示例
- 解压操作
- 2. 使用 `bzip2` 压缩为 `.bz2` 格式
- 知识点
- 代码示例
- 解压操作
- 3. 使用 `xz` 压缩为 `.xz` 格式
- 知识点
- 代码示例
- 解压操作
- 4. 使用 `zip` 压缩为 `.zip` 格式
- 知识点
- 代码示例
- 解压操作
- 5. 使用 `tar` 结合压缩工具创建归档压缩包
- 知识点
- 代码示例
- 解压操作
- 1. `.tar`(仅归档)
- 相关知识点
- 代码示例及运行结果
- 2. `.tar.gz`
- 相关知识点
- 代码示例及运行结果
- 3. `.tar.bz2`
- 相关知识点
- 代码示例及运行结果
- 4. `.zip`
- 相关知识点
- 代码示例及运行结果
- 5. `.tar.xz`
- 相关知识点
- 代码示例及运行结果
- 1. 文件和目录的三种基本权限
- 2. 三种权限对象
- 3. 权限表示方法
- 4. 常用权限管理命令
- 代码示例
- 1. `chmod` 命令
- 数字表示法
- 符号表示法
- 2. `chown` 命令
- 3. `chgrp` 命令
- 1. `useradd`(创建用户)
- 知识点
- 代码示例
- 2. `passwd`(设置或修改用户密码)
- 知识点
- 代码示例
- 3. `userdel`(删除用户)
- 知识点
- 代码示例
- 4. `usermod`(修改用户属性)
- 知识点
- 代码示例
- 5. `groupadd`(创建用户组)
- 知识点
- 代码示例
- 6. `groupdel`(删除用户组)
- 知识点
- 代码示例
- 7. `groups`(查看用户所属组)
- 知识点
- 代码示例
- 8. `id`(查看用户的身份信息)
- 知识点
- 代码示例
- 1. `ps` - 查看进程信息
- 知识点
- 代码示例
- 2. `top` - 动态监控进程
- 知识点
- 代码示例
- 3. `pstree` - 以树状结构显示进程
- 知识点
- 代码示例
- 4. `kill` - 终止进程
- 知识点
- 代码示例
- 5. `killall` - 根据进程名终止进程
- 知识点
- 代码示例
- 6. `nice` 和 `renice` - 调整进程优先级
- 知识点
- 代码示例
- 7. `jobs`、`bg` 和 `fg` - 作业控制
- 知识点
- 代码示例
一级目录
1. 使用 gzip 压缩为 .gz 格式
知识点
gzip 是一种广泛使用的压缩工具,它能对单个文件进行压缩,压缩后的文件会添加 .gz 扩展名,原文件会被覆盖。gzip 压缩速度较快,适合日常对文件进行简单压缩。
代码示例
假设你有一个名为 example.c 的 C 文件,要将其压缩为 .gz 格式,可以执行以下命令:
gzip example.c
执行该命令后,example.c 文件会被压缩成 example.c.gz,原 example.c 文件将不存在。

解压操作
若要解压该文件,可以使用 gunzip 命令:
gunzip example.c.gz
执行后,example.c.gz 文件会被解压为 example.c。

2. 使用 bzip2 压缩为 .bz2 格式
知识点
bzip2 提供比 gzip 更高的压缩比,但压缩和解压速度相对较慢。它同样是对单个文件进行压缩,压缩后的文件会添加 .bz2 扩展名,原文件会被覆盖。
代码示例
对 example.c 文件进行 bzip2 压缩:
bzip2 example.c
执行此命令后,会生成 example.c.bz2 文件,原 example.c 文件消失。
解压操作
使用 bunzip2 命令进行解压:
bunzip2 example.c.bz2
解压后,会恢复出 example.c 文件。
3. 使用 xz 压缩为 .xz 格式
知识点
xz 是一种高效的压缩工具,能实现非常高的压缩比,但压缩和解压过程通常需要更多的时间和系统资源。压缩后的文件会添加 .xz 扩展名,原文件会被覆盖。
代码示例
对 example.c 文件使用 xz 进行压缩:
xz example.c
执行后,会得到 example.c.xz 文件,原 example.c 文件被移除。
解压操作
使用以下命令进行解压:
xz -d example.c.xz
解压完成后,example.c 文件会被恢复。
4. 使用 zip 压缩为 .zip 格式
知识点
zip 是一种跨平台的压缩工具,可以对单个或多个文件、目录进行压缩,压缩后的文件以 .zip 为扩展名,原文件不会被覆盖。它常用于在不同操作系统之间交换文件。
代码示例
如果只压缩单个 example.c 文件:
zip example.zip example.c
若要压缩多个 C 文件,比如 example1.c 和 example2.c:
zip examples.zip example1.c example2.c
解压操作
使用 unzip 命令解压 .zip 文件:
unzip example.zip
或者对于包含多个文件的 examples.zip:
unzip examples.zip
5. 使用 tar 结合压缩工具创建归档压缩包
知识点
tar 本身是一个归档工具,可将多个文件或目录合并成一个文件,再结合 gzip、bzip2 或 xz 等压缩工具可以创建不同格式的归档压缩包,如 .tar.gz、.tar.bz2、.tar.xz 等。这种方式适合对多个相关文件或目录进行打包压缩。
代码示例
- 创建
.tar.gz压缩包:
tar -czf example.tar.gz example.c
这里 -c 表示创建归档文件,-z 表示使用 gzip 进行压缩,-f 用于指定归档文件的名称。
- 创建
.tar.bz2压缩包:
tar -cjf example.tar.bz2 example.c
其中 -j 表示使用 bzip2 进行压缩。
- 创建
.tar.xz压缩包:
tar -cJf example.tar.xz example.c
-J 表示使用 xz 进行压缩。
解压操作
- 解压
.tar.gz文件:
tar -xzf example.tar.gz
-x 表示从归档文件中提取文件。
- 解压
.tar.bz2文件:
tar -xjf example.tar.bz2
- 解压
.tar.xz文件:
tar -xJf example.tar.xz
1. .tar(仅归档)
相关知识点
tar 是 Linux 中常用的归档工具,它可以将多个文件或目录合并成一个文件,但不进行压缩。
代码示例及运行结果
- 归档:
# 将目录 dir 中的所有文件归档成 a.tar
shaseng@ubuntu:~$ tar cf a.tar dir/*
运行结果:当前目录下生成 a.tar 文件,该文件包含 dir 目录中的所有文件和子目录的信息。
- 查看归档内容:
# 查看归档文件 a.tar
shaseng@ubuntu:~$ tar tf a.tar
运行结果:终端会列出 a.tar 中包含的所有文件和目录的名称。
- 释放归档:
# 释放归档文件 a.tar
shaseng@ubuntu:~$ tar xf a.tar
运行结果:a.tar 中的文件和目录会被释放到当前目录。
- 指定路径释放:
# 将文件释放到 /tmp
shaseng@ubuntu:~$ tar -xf a.tar -C /tmp
运行结果:a.tar 中的文件和目录会被释放到 /tmp 目录下。
2. .tar.gz
相关知识点
先使用 tar 进行归档,再使用 gzip 进行压缩,具有较好的压缩比和较快的处理速度,是一种常用的压缩格式。
代码示例及运行结果
- 归档并压缩:
# 将目录 dir 中的所有文件归档并压缩为 gz 格式
shaseng@ubuntu:~$ tar czf a.tar.gz dir/*
运行结果:当前目录下生成 a.tar.gz 文件,它是 dir 目录内容经过归档和压缩后的文件。
- 查看压缩内容:
# 查看压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar tf a.tar.gz
运行结果:终端会列出 a.tar.gz 中包含的所有文件和目录的名称。
- 解压:
# 解压压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar xzf a.tar.gz
运行结果:a.tar.gz 中的文件和目录会被解压到当前目录。
- 指定路径解压:
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xzf a.tar.gz -C /tmp
运行结果:a.tar.gz 中的文件和目录会被解压到 /tmp 目录下。
3. .tar.bz2
相关知识点
先使用 tar 归档,再使用 bzip2 压缩,压缩比通常比 .tar.gz 更高,但压缩和解压速度相对较慢。
代码示例及运行结果
- 归档并压缩:
# 将目录 dir 中的所有文件归档并压缩为 bz2 格式
shaseng@ubuntu:~$ tar cjf a.tar.bz2 dir/*
运行结果:当前目录下生成 a.tar.bz2 文件,它是 dir 目录内容经过归档和 bzip2 压缩后的文件。
- 查看压缩内容:
# 查看压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar tf a.tar.bz2
运行结果:终端会列出 a.tar.bz2 中包含的所有文件和目录的名称。
- 解压:
# 解压压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar xjf a.tar.bz2
运行结果:a.tar.bz2 中的文件和目录会被解压到当前目录。
- 指定路径解压:
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xjf a.tar.bz2 -C /tmp
运行结果:a.tar.bz2 中的文件和目录会被解压到 /tmp 目录下。
4. .zip
相关知识点
一种跨平台的压缩格式,在 Windows、Linux 和 macOS 等系统中都广泛支持,可使用 zip 命令进行压缩,unzip 命令进行解压。
代码示例及运行结果
- 压缩:
# 将目录 dir 中的所有文件压缩为 zip 格式
shaseng@ubuntu:~$ zip -r a.zip dir/*
运行结果:当前目录下生成 a.zip 文件,它包含 dir 目录中的所有文件和子目录。
- 查看压缩内容:
# 查看压缩文件 a.zip
shaseng@ubuntu:~$ unzip -l a.zip
运行结果:终端会列出 a.zip 中包含的所有文件和目录的名称、大小等信息。
- 解压:
# 解压压缩文件 a.zip
shaseng@ubuntu:~$ unzip a.zip
运行结果:a.zip 中的文件和目录会被解压到当前目录。
- 指定路径解压:
# 将文件解压到 /tmp
shaseng@ubuntu:~$ unzip a.zip -d /tmp
运行结果:a.zip 中的文件和目录会被解压到 /tmp 目录下。
5. .tar.xz
相关知识点
先使用 tar 归档,再使用 xz 算法压缩,能实现很高的压缩比,但压缩和解压过程相对较慢,消耗资源较多。
代码示例及运行结果
- 归档并压缩:
# 将目录 dir 中的所有文件归档并压缩为 xz 格式
shaseng@ubuntu:~$ tar cJf a.tar.xz dir/*
运行结果:当前目录下生成 a.tar.xz 文件,它是 dir 目录内容经过归档和 xz 压缩后的文件。
- 查看压缩内容:
# 查看压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar tf a.tar.xz
运行结果:终端会列出 a.tar.xz 中包含的所有文件和目录的名称。
- 解压:
# 解压压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar xJf a.tar.xz
运行结果:a.tar.xz 中的文件和目录会被解压到当前目录。
- 指定路径解压:
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xJf a.tar.xz -C /tmp
运行结果:a.tar.xz 中的文件和目录会被解压到 /tmp 目录下。
1. 文件和目录的三种基本权限
- 读取(r):对于文件,允许查看文件内容;对于目录,允许列出目录中的文件和子目录。
- 写入(w):对于文件,允许修改文件内容;对于目录,允许在目录中创建、删除或重命名文件和子目录。
- 执行(x):对于文件,允许将其作为程序执行;对于目录,允许进入该目录。
2. 三种权限对象
- 所有者(u):文件或目录的创建者。
- 所属组(g):与文件或目录相关联的用户组。
- 其他用户(o):既不是所有者也不属于所属组的其他用户。
3. 权限表示方法
- 数字表示法:
r对应数字 4w对应数字 2x对应数字 1- 无权限对应数字 0
- 例如,权限
rwx用数字表示为 7(4 + 2 + 1),rw-表示为 6(4 + 2 + 0)。
- 符号表示法:
+表示添加权限-表示移除权限=表示设置权限
4. 常用权限管理命令
chmod:用于修改文件或目录的权限。chown:用于修改文件或目录的所有者和所属组。chgrp:用于修改文件或目录的所属组。
代码示例
1. chmod 命令
数字表示法
# 创建一个测试文件
touch test_file.txt# 查看文件初始权限
ls -l test_file.txt# 将文件所有者权限设置为 rwx,所属组权限设置为 rw-,其他用户权限设置为 r--
chmod 764 test_file.txt# 再次查看文件权限
ls -l test_file.txt
解释:初始时,test_file.txt 有其默认权限。执行 chmod 764 test_file.txt 后,所有者拥有读、写、执行权限(7 = 4 + 2 + 1),所属组拥有读、写权限(6 = 4 + 2 + 0),其他用户拥有读权限(4 = 4 + 0 + 0)。

符号表示法
# 为所属组添加执行权限
chmod g+x test_file.txt# 查看文件权限
ls -l test_file.txt# 移除其他用户的写入权限
chmod o-w test_file.txt# 查看文件权限
ls -l test_file.txt
解释:chmod g+x test_file.txt 为所属组添加了执行权限;chmod o-w test_file.txt 移除了其他用户的写入权限。
2. chown 命令
# 创建一个新文件
touch new_file.txt# 查看文件的所有者和所属组
ls -l new_file.txt# 将文件的所有者改为 user2,所属组改为 group2(假设 user2 和 group2 存在)
sudo chown user2:group2 new_file.txt# 再次查看文件的所有者和所属组
ls -l new_file.txt
解释:chown 命令可以同时修改文件的所有者和所属组。使用 sudo 是因为修改文件所有者和所属组通常需要管理员权限。
3. chgrp 命令
# 创建一个测试目录
mkdir test_dir# 查看目录的所属组
ls -ld test_dir# 将目录的所属组改为 group3(假设 group3 存在)
sudo chgrp group3 test_dir# 再次查看目录的所属组
ls -ld test_dir
解释:chgrp 命令专门用于修改文件或目录的所属组。同样,使用 sudo 是为了获取足够的权限。
1. useradd(创建用户)
知识点
- 功能:用于在系统中创建新用户账户。新用户创建后会在
/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow等文件中添加相应的记录。 - 常用选项:
-d:指定用户的主目录。-m:如果主目录不存在,则自动创建。-s:指定用户的登录 shell。-g:指定用户的初始用户组。-G:指定用户要加入的附加用户组。
代码示例
# 创建一个名为 newuser 的用户,指定主目录为 /home/newuser,并自动创建该目录
sudo useradd -m -d /home/newuser newuser
运行该命令后,系统会创建 newuser 用户,并在 /home 目录下创建 newuser 主目录,同时在相关用户信息文件中添加记录。
2. passwd(设置或修改用户密码)
知识点
- 功能:用于设置或修改用户的密码。普通用户可以使用该命令修改自己的密码,而 root 用户可以修改任意用户的密码。
- 注意事项:root 用户修改密码时无需输入原密码,普通用户修改密码时需要输入原密码进行验证。
代码示例
# root 用户为 newuser 设置密码
sudo passwd newuser
执行该命令后,系统会提示输入新密码和确认新密码,输入完成后新密码即生效。
3. userdel(删除用户)
知识点
- 功能:用于从系统中删除用户账户。删除用户时,可以选择是否同时删除用户的主目录和邮件池。
- 常用选项:
-r:删除用户的同时,删除其主目录和邮件池。
代码示例
# 删除 newuser 用户,并同时删除其主目录和邮件池
sudo userdel -r newuser
运行此命令后,newuser 用户的账户信息会从相关文件中删除,其主目录和邮件池也会被一并删除。
4. usermod(修改用户属性)
知识点
- 功能:用于修改已存在用户的属性,如用户的主目录、登录 shell、用户组等。
- 常用选项:
-d:修改用户的主目录。-m:如果指定了新的主目录,将原主目录内容移动到新的主目录。-s:修改用户的登录 shell。-g:修改用户的初始用户组。-G:修改用户要加入的附加用户组。
代码示例
# 将用户 newuser 的登录 shell 修改为 /bin/bash
sudo usermod -s /bin/bash newuser
执行该命令后,newuser 用户下次登录时将使用 /bin/bash 作为登录 shell。
5. groupadd(创建用户组)
知识点
- 功能:用于在系统中创建新的用户组。新用户组会在
/etc/group和/etc/gshadow文件中添加相应的记录。
代码示例
# 创建一个名为 newgroup 的用户组
sudo groupadd newgroup
运行该命令后,系统会创建 newgroup 用户组,并在相关用户组信息文件中添加记录。
6. groupdel(删除用户组)
知识点
- 功能:用于从系统中删除用户组。注意,不能删除仍有用户属于该组的用户组。
代码示例
# 删除 newgroup 用户组
sudo groupdel newgroup
如果 newgroup 用户组中没有用户,执行该命令后该用户组会被删除。
7. groups(查看用户所属组)
知识点
- 功能:用于显示指定用户所属的所有用户组。如果不指定用户,则显示当前用户所属的用户组。
代码示例
# 查看 newuser 用户所属的用户组
groups newuser
执行该命令后,会在终端输出 newuser 用户所属的所有用户组名称。
8. id(查看用户的身份信息)
知识点
- 功能:用于显示用户的身份信息,包括用户 ID(UID)、用户所属的主用户组 ID(GID)以及用户所属的所有附加用户组 ID。
代码示例
# 查看 newuser 用户的身份信息
id newuser
运行该命令后,会输出 newuser 用户的 UID、GID 以及附加用户组等信息,示例输出可能如下:
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser)
1. ps - 查看进程信息
知识点
ps命令用于报告当前系统的进程状态,它可以显示当前运行的进程的相关信息,如进程 ID(PID)、用户、CPU 使用率、内存使用率等。- 常用选项:
-e:显示所有进程。-f:显示完整格式的进程信息。-aux:显示所有用户的进程信息,a表示显示与终端相关的所有进程,u表示以用户为中心显示详细信息,x表示显示无控制终端的进程。
代码示例
# 显示当前用户的所有进程信息
ps -f# 显示系统中所有进程的完整信息
ps -ef# 以用户为中心显示所有进程信息
ps -aux

2. top - 动态监控进程
知识点
top命令提供了实时的系统进程监控,它会动态更新显示系统中各个进程的资源使用情况,包括 CPU 使用率、内存使用率等。- 交互命令:
q:退出top界面。M:按内存使用率排序。P:按 CPU 使用率排序。
代码示例
# 启动 top 命令监控进程
top
3. pstree - 以树状结构显示进程
知识点
pstree命令可以将系统中的进程以树状结构展示,清晰地显示进程之间的父子关系。- 常用选项:
-p:显示每个进程的 PID。-u:显示每个进程的所属用户。
代码示例
# 以树状结构显示进程
pstree# 显示进程的 PID
pstree -p# 显示进程的所属用户和 PID
pstree -pu

4. kill - 终止进程
知识点
kill命令用于向指定的进程发送信号,默认发送的是终止信号(SIGTERM,信号编号为 15),让进程正常终止。如果进程无法正常终止,可以发送强制终止信号(SIGKILL,信号编号为 9)。- 信号编号:可以使用
kill -l命令查看所有可用的信号编号和名称。
代码示例
# 查看进程信息,获取要终止的进程的 PID
ps -ef | grep "example_process"# 向指定 PID 的进程发送终止信号
kill <PID># 如果进程无法正常终止,发送强制终止信号
kill -9 <PID>
5. killall - 根据进程名终止进程
知识点
killall命令可以根据进程名终止所有匹配的进程,而不需要手动查找每个进程的 PID。- 常用选项:
-9:发送强制终止信号。
代码示例
# 终止名为 "example_process" 的所有进程
killall example_process# 强制终止名为 "example_process" 的所有进程
killall -9 example_process
6. nice 和 renice - 调整进程优先级
知识点
nice命令用于在启动进程时指定进程的优先级,优先级范围是 -20(最高优先级)到 19(最低优先级),默认优先级为 0。renice命令用于调整已经运行的进程的优先级。
代码示例
# 以较低优先级启动进程
nice -n 10 ./example_program# 查看进程信息,获取要调整优先级的进程的 PID
ps -ef | grep "example_process"# 将指定 PID 的进程优先级调整为 -5
renice -5 <PID>
7. jobs、bg 和 fg - 作业控制
知识点
jobs命令用于显示当前终端会话中后台运行的作业列表。bg命令用于将暂停的作业放到后台继续运行。fg命令用于将后台运行的作业放到前台运行。
代码示例
# 在后台启动一个进程
./example_program &# 显示当前终端会话中的作业列表
jobs# 将暂停的作业放到后台继续运行
bg %1# 将后台运行的作业放到前台运行
fg %1
