【linux核心命令】

【linux核心命令】

一级目录

1. 使用 gzip 压缩为 .gz 格式

知识点

gzip 是一种广泛使用的压缩工具,它能对单个文件进行压缩,压缩后的文件会添加 .gz 扩展名,原文件会被覆盖。gzip 压缩速度较快,适合日常对文件进行简单压缩。

代码示例

假设你有一个名为 example.c 的 C 文件,要将其压缩为 .gz 格式,可以执行以下命令:

bash 复制代码
gzip example.c

执行该命令后,example.c 文件会被压缩成 example.c.gz,原 example.c 文件将不存在。

解压操作

若要解压该文件,可以使用 gunzip 命令:

bash 复制代码
gunzip example.c.gz

执行后,example.c.gz 文件会被解压为 example.c

2. 使用 bzip2 压缩为 .bz2 格式

知识点

bzip2 提供比 gzip 更高的压缩比,但压缩和解压速度相对较慢。它同样是对单个文件进行压缩,压缩后的文件会添加 .bz2 扩展名,原文件会被覆盖。

代码示例

example.c 文件进行 bzip2 压缩:

bash 复制代码
bzip2 example.c

执行此命令后,会生成 example.c.bz2 文件,原 example.c 文件消失。

解压操作

使用 bunzip2 命令进行解压:

bash 复制代码
bunzip2 example.c.bz2

解压后,会恢复出 example.c 文件。

3. 使用 xz 压缩为 .xz 格式

知识点

xz 是一种高效的压缩工具,能实现非常高的压缩比,但压缩和解压过程通常需要更多的时间和系统资源。压缩后的文件会添加 .xz 扩展名,原文件会被覆盖。

代码示例

example.c 文件使用 xz 进行压缩:

bash 复制代码
xz example.c

执行后,会得到 example.c.xz 文件,原 example.c 文件被移除。

解压操作

使用以下命令进行解压:

bash 复制代码
xz -d example.c.xz

解压完成后,example.c 文件会被恢复。

4. 使用 zip 压缩为 .zip 格式

知识点

zip 是一种跨平台的压缩工具,可以对单个或多个文件、目录进行压缩,压缩后的文件以 .zip 为扩展名,原文件不会被覆盖。它常用于在不同操作系统之间交换文件。

代码示例

如果只压缩单个 example.c 文件:

bash 复制代码
zip example.zip example.c

若要压缩多个 C 文件,比如 example1.cexample2.c

bash 复制代码
zip examples.zip example1.c example2.c
解压操作

使用 unzip 命令解压 .zip 文件:

bash 复制代码
unzip example.zip

或者对于包含多个文件的 examples.zip

bash 复制代码
unzip examples.zip

5. 使用 tar 结合压缩工具创建归档压缩包

知识点

tar 本身是一个归档工具,可将多个文件或目录合并成一个文件,再结合 gzipbzip2xz 等压缩工具可以创建不同格式的归档压缩包,如 .tar.gz.tar.bz2.tar.xz 等。这种方式适合对多个相关文件或目录进行打包压缩。

代码示例
  • 创建 .tar.gz 压缩包
bash 复制代码
tar -czf example.tar.gz example.c

这里 -c 表示创建归档文件,-z 表示使用 gzip 进行压缩,-f 用于指定归档文件的名称。

  • 创建 .tar.bz2 压缩包
bash 复制代码
tar -cjf example.tar.bz2 example.c

其中 -j 表示使用 bzip2 进行压缩。

  • 创建 .tar.xz 压缩包
bash 复制代码
tar -cJf example.tar.xz example.c

-J 表示使用 xz 进行压缩。

解压操作
  • 解压 .tar.gz 文件:
bash 复制代码
tar -xzf example.tar.gz

-x 表示从归档文件中提取文件。

  • 解压 .tar.bz2 文件:
bash 复制代码
tar -xjf example.tar.bz2
  • 解压 .tar.xz 文件:
bash 复制代码
tar -xJf example.tar.xz

1. .tar(仅归档)

相关知识点

tar 是 Linux 中常用的归档工具,它可以将多个文件或目录合并成一个文件,但不进行压缩。

代码示例及运行结果
  • 归档
bash 复制代码
# 将目录 dir 中的所有文件归档成 a.tar
shaseng@ubuntu:~$ tar cf a.tar dir/*

运行结果:当前目录下生成 a.tar 文件,该文件包含 dir 目录中的所有文件和子目录的信息。

  • 查看归档内容
bash 复制代码
# 查看归档文件 a.tar
shaseng@ubuntu:~$ tar tf a.tar

运行结果:终端会列出 a.tar 中包含的所有文件和目录的名称。

  • 释放归档
bash 复制代码
# 释放归档文件 a.tar
shaseng@ubuntu:~$ tar xf a.tar

运行结果:a.tar 中的文件和目录会被释放到当前目录。

  • 指定路径释放
bash 复制代码
# 将文件释放到 /tmp
shaseng@ubuntu:~$ tar -xf a.tar -C /tmp

运行结果:a.tar 中的文件和目录会被释放到 /tmp 目录下。

2. .tar.gz

相关知识点

先使用 tar 进行归档,再使用 gzip 进行压缩,具有较好的压缩比和较快的处理速度,是一种常用的压缩格式。

代码示例及运行结果
  • 归档并压缩
bash 复制代码
# 将目录 dir 中的所有文件归档并压缩为 gz 格式
shaseng@ubuntu:~$ tar czf a.tar.gz dir/*

运行结果:当前目录下生成 a.tar.gz 文件,它是 dir 目录内容经过归档和压缩后的文件。

  • 查看压缩内容
bash 复制代码
# 查看压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar tf a.tar.gz

运行结果:终端会列出 a.tar.gz 中包含的所有文件和目录的名称。

  • 解压
bash 复制代码
# 解压压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar xzf a.tar.gz

运行结果:a.tar.gz 中的文件和目录会被解压到当前目录。

  • 指定路径解压
bash 复制代码
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xzf a.tar.gz -C /tmp

运行结果:a.tar.gz 中的文件和目录会被解压到 /tmp 目录下。

3. .tar.bz2

相关知识点

先使用 tar 归档,再使用 bzip2 压缩,压缩比通常比 .tar.gz 更高,但压缩和解压速度相对较慢。

代码示例及运行结果
  • 归档并压缩
bash 复制代码
# 将目录 dir 中的所有文件归档并压缩为 bz2 格式
shaseng@ubuntu:~$ tar cjf a.tar.bz2 dir/*

运行结果:当前目录下生成 a.tar.bz2 文件,它是 dir 目录内容经过归档和 bzip2 压缩后的文件。

  • 查看压缩内容
bash 复制代码
# 查看压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar tf a.tar.bz2

运行结果:终端会列出 a.tar.bz2 中包含的所有文件和目录的名称。

  • 解压
bash 复制代码
# 解压压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar xjf a.tar.bz2

运行结果:a.tar.bz2 中的文件和目录会被解压到当前目录。

  • 指定路径解压
bash 复制代码
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xjf a.tar.bz2 -C /tmp

运行结果:a.tar.bz2 中的文件和目录会被解压到 /tmp 目录下。

4. .zip

相关知识点

一种跨平台的压缩格式,在 Windows、Linux 和 macOS 等系统中都广泛支持,可使用 zip 命令进行压缩,unzip 命令进行解压。

代码示例及运行结果
  • 压缩
bash 复制代码
# 将目录 dir 中的所有文件压缩为 zip 格式
shaseng@ubuntu:~$ zip -r a.zip dir/*

运行结果:当前目录下生成 a.zip 文件,它包含 dir 目录中的所有文件和子目录。

  • 查看压缩内容
bash 复制代码
# 查看压缩文件 a.zip
shaseng@ubuntu:~$ unzip -l a.zip

运行结果:终端会列出 a.zip 中包含的所有文件和目录的名称、大小等信息。

  • 解压
bash 复制代码
# 解压压缩文件 a.zip
shaseng@ubuntu:~$ unzip a.zip

运行结果:a.zip 中的文件和目录会被解压到当前目录。

  • 指定路径解压
bash 复制代码
# 将文件解压到 /tmp
shaseng@ubuntu:~$ unzip a.zip -d /tmp

运行结果:a.zip 中的文件和目录会被解压到 /tmp 目录下。

5. .tar.xz

相关知识点

先使用 tar 归档,再使用 xz 算法压缩,能实现很高的压缩比,但压缩和解压过程相对较慢,消耗资源较多。

代码示例及运行结果
  • 归档并压缩
bash 复制代码
# 将目录 dir 中的所有文件归档并压缩为 xz 格式
shaseng@ubuntu:~$ tar cJf a.tar.xz dir/*

运行结果:当前目录下生成 a.tar.xz 文件,它是 dir 目录内容经过归档和 xz 压缩后的文件。

  • 查看压缩内容
bash 复制代码
# 查看压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar tf a.tar.xz

运行结果:终端会列出 a.tar.xz 中包含的所有文件和目录的名称。

  • 解压
bash 复制代码
# 解压压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar xJf a.tar.xz

运行结果:a.tar.xz 中的文件和目录会被解压到当前目录。

  • 指定路径解压
bash 复制代码
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xJf a.tar.xz -C /tmp

运行结果:a.tar.xz 中的文件和目录会被解压到 /tmp 目录下。

1. 文件和目录的三种基本权限
  • 读取(r):对于文件,允许查看文件内容;对于目录,允许列出目录中的文件和子目录。
  • 写入(w):对于文件,允许修改文件内容;对于目录,允许在目录中创建、删除或重命名文件和子目录。
  • 执行(x):对于文件,允许将其作为程序执行;对于目录,允许进入该目录。
2. 三种权限对象
  • 所有者(u):文件或目录的创建者。
  • 所属组(g):与文件或目录相关联的用户组。
  • 其他用户(o):既不是所有者也不属于所属组的其他用户。
3. 权限表示方法
  • 数字表示法
    • r 对应数字 4
    • w 对应数字 2
    • x 对应数字 1
    • 无权限对应数字 0
    • 例如,权限 rwx 用数字表示为 7(4 + 2 + 1),rw- 表示为 6(4 + 2 + 0)。
  • 符号表示法
    • + 表示添加权限
    • - 表示移除权限
    • = 表示设置权限
4. 常用权限管理命令
  • chmod:用于修改文件或目录的权限。
  • chown:用于修改文件或目录的所有者和所属组。
  • chgrp:用于修改文件或目录的所属组。

代码示例

1. chmod 命令
数字表示法
bash 复制代码
# 创建一个测试文件
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)。

符号表示法
bash 复制代码
# 为所属组添加执行权限
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 命令
bash 复制代码
# 创建一个新文件
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 命令
bash 复制代码
# 创建一个测试目录
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:指定用户要加入的附加用户组。
代码示例
bash 复制代码
# 创建一个名为 newuser 的用户,指定主目录为 /home/newuser,并自动创建该目录
sudo useradd -m -d /home/newuser newuser

运行该命令后,系统会创建 newuser 用户,并在 /home 目录下创建 newuser 主目录,同时在相关用户信息文件中添加记录。

2. passwd(设置或修改用户密码)

知识点
  • 功能:用于设置或修改用户的密码。普通用户可以使用该命令修改自己的密码,而 root 用户可以修改任意用户的密码。
  • 注意事项:root 用户修改密码时无需输入原密码,普通用户修改密码时需要输入原密码进行验证。
代码示例
bash 复制代码
# root 用户为 newuser 设置密码
sudo passwd newuser

执行该命令后,系统会提示输入新密码和确认新密码,输入完成后新密码即生效。

3. userdel(删除用户)

知识点
  • 功能:用于从系统中删除用户账户。删除用户时,可以选择是否同时删除用户的主目录和邮件池。
  • 常用选项
    • -r:删除用户的同时,删除其主目录和邮件池。
代码示例
bash 复制代码
# 删除 newuser 用户,并同时删除其主目录和邮件池
sudo userdel -r newuser

运行此命令后,newuser 用户的账户信息会从相关文件中删除,其主目录和邮件池也会被一并删除。

4. usermod(修改用户属性)

知识点
  • 功能:用于修改已存在用户的属性,如用户的主目录、登录 shell、用户组等。
  • 常用选项
    • -d:修改用户的主目录。
    • -m:如果指定了新的主目录,将原主目录内容移动到新的主目录。
    • -s:修改用户的登录 shell。
    • -g:修改用户的初始用户组。
    • -G:修改用户要加入的附加用户组。
代码示例
bash 复制代码
# 将用户 newuser 的登录 shell 修改为 /bin/bash
sudo usermod -s /bin/bash newuser

执行该命令后,newuser 用户下次登录时将使用 /bin/bash 作为登录 shell。

5. groupadd(创建用户组)

知识点
  • 功能 :用于在系统中创建新的用户组。新用户组会在 /etc/group/etc/gshadow 文件中添加相应的记录。
代码示例
bash 复制代码
# 创建一个名为 newgroup 的用户组
sudo groupadd newgroup

运行该命令后,系统会创建 newgroup 用户组,并在相关用户组信息文件中添加记录。

6. groupdel(删除用户组)

知识点
  • 功能:用于从系统中删除用户组。注意,不能删除仍有用户属于该组的用户组。
代码示例
bash 复制代码
# 删除 newgroup 用户组
sudo groupdel newgroup

如果 newgroup 用户组中没有用户,执行该命令后该用户组会被删除。

7. groups(查看用户所属组)

知识点
  • 功能:用于显示指定用户所属的所有用户组。如果不指定用户,则显示当前用户所属的用户组。
代码示例
bash 复制代码
# 查看 newuser 用户所属的用户组
groups newuser

执行该命令后,会在终端输出 newuser 用户所属的所有用户组名称。

8. id(查看用户的身份信息)

知识点
  • 功能:用于显示用户的身份信息,包括用户 ID(UID)、用户所属的主用户组 ID(GID)以及用户所属的所有附加用户组 ID。
代码示例
bash 复制代码
# 查看 newuser 用户的身份信息
id newuser

运行该命令后,会输出 newuser 用户的 UID、GID 以及附加用户组等信息,示例输出可能如下:

plaintext 复制代码
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser)

1. ps - 查看进程信息

知识点
  • ps 命令用于报告当前系统的进程状态,它可以显示当前运行的进程的相关信息,如进程 ID(PID)、用户、CPU 使用率、内存使用率等。
  • 常用选项:
    • -e:显示所有进程。
    • -f:显示完整格式的进程信息。
    • -aux:显示所有用户的进程信息,a 表示显示与终端相关的所有进程,u 表示以用户为中心显示详细信息,x 表示显示无控制终端的进程。
代码示例
bash 复制代码
# 显示当前用户的所有进程信息
ps -f

# 显示系统中所有进程的完整信息
ps -ef

# 以用户为中心显示所有进程信息
ps -aux

2. top - 动态监控进程

知识点
  • top 命令提供了实时的系统进程监控,它会动态更新显示系统中各个进程的资源使用情况,包括 CPU 使用率、内存使用率等。
  • 交互命令:
    • q:退出 top 界面。
    • M:按内存使用率排序。
    • P:按 CPU 使用率排序。
代码示例
bash 复制代码
# 启动 top 命令监控进程
top

3. pstree - 以树状结构显示进程

知识点
  • pstree 命令可以将系统中的进程以树状结构展示,清晰地显示进程之间的父子关系。
  • 常用选项:
    • -p:显示每个进程的 PID。
    • -u:显示每个进程的所属用户。
代码示例
bash 复制代码
# 以树状结构显示进程
pstree

# 显示进程的 PID
pstree -p

# 显示进程的所属用户和 PID
pstree -pu

4. kill - 终止进程

知识点
  • kill 命令用于向指定的进程发送信号,默认发送的是终止信号(SIGTERM,信号编号为 15),让进程正常终止。如果进程无法正常终止,可以发送强制终止信号(SIGKILL,信号编号为 9)。
  • 信号编号:可以使用 kill -l 命令查看所有可用的信号编号和名称。
代码示例
bash 复制代码
# 查看进程信息,获取要终止的进程的 PID
ps -ef | grep "example_process"

# 向指定 PID 的进程发送终止信号
kill <PID>

# 如果进程无法正常终止,发送强制终止信号
kill -9 <PID>

5. killall - 根据进程名终止进程

知识点
  • killall 命令可以根据进程名终止所有匹配的进程,而不需要手动查找每个进程的 PID。
  • 常用选项:
    • -9:发送强制终止信号。
代码示例
bash 复制代码
# 终止名为 "example_process" 的所有进程
killall example_process

# 强制终止名为 "example_process" 的所有进程
killall -9 example_process

6. nicerenice - 调整进程优先级

知识点
  • nice 命令用于在启动进程时指定进程的优先级,优先级范围是 -20(最高优先级)到 19(最低优先级),默认优先级为 0。
  • renice 命令用于调整已经运行的进程的优先级。
代码示例
bash 复制代码
# 以较低优先级启动进程
nice -n 10 ./example_program

# 查看进程信息,获取要调整优先级的进程的 PID
ps -ef | grep "example_process"

# 将指定 PID 的进程优先级调整为 -5
renice -5 <PID>

7. jobsbgfg - 作业控制

知识点
  • jobs 命令用于显示当前终端会话中后台运行的作业列表。
  • bg 命令用于将暂停的作业放到后台继续运行。
  • fg 命令用于将后台运行的作业放到前台运行。
代码示例
bash 复制代码
# 在后台启动一个进程
./example_program &

# 显示当前终端会话中的作业列表
jobs

# 将暂停的作业放到后台继续运行
bg %1

# 将后台运行的作业放到前台运行
fg %1
相关推荐
山猪打不过家猪2 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
qwy7152292581632 小时前
13-R数据重塑
服务器·数据库·r语言
Bio Coder2 小时前
R语言安装生物信息数据库包
开发语言·数据库·r语言
钊兵3 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
weixin_425878234 小时前
Redis复制性能优化利器:深入解析replica-lazy-flush参数
数据库·redis·性能优化
左灯右行的爱情4 小时前
Redis数据结构总结-listPack
数据结构·数据库·redis
anddddoooo4 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
zhoupenghui1685 小时前
golang时间相关函数总结
服务器·前端·golang·time
lllsure5 小时前
Linux 实用指令
linux·物联网