首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux系统编程:(四)基础指令详解(3)

Linux系统编程:(四)基础指令详解(3)

作者头像
_OP_CHEN
发布2026-01-14 10:14:43
发布2026-01-14 10:14:43
1250
举报
文章被收录于专栏:C++C++

前言

在 Linux 系统的使用过程中,除了基础的文件操作指令,还有一系列进阶指令能够大幅提升工作效率,涵盖命令别名配置、文本搜索、系统监控、文件压缩、远程传输、权限管理等多个核心场景。本文将详细拆解 10 个指令,结合实际操作示例与输出结果,帮助大家从入门到精通,轻松应对 Linux 系统管理与日常运维中的各类需求。下面就让我们正式开始吧!


一、alias 指令:命令的 “自定义快捷键”

alias 指令用于为常用命令设置别名,通过简化复杂命令或组合命令,减少重复输入,提升操作效率。无论是基础命令的参数简化,还是复杂脚本的快速调用,alias 都能发挥重要作用。

1.1 指令语法

代码语言:javascript
复制
alias [别名]='[原始命令及参数]'  # 设置别名
unalias [别名]  # 删除别名
alias  # 查看当前系统所有已设置的别名

1.2 核心说明

  • 直接执行alias命令可列出当前用户所有已配置的别名(包括系统默认别名,如ls='ls --color=auto')。
  • 临时别名:直接在终端执行alias命令设置的别名,仅在当前终端会话有效,终端关闭后失效。
  • 永久别名:需将别名配置写入用户家目录的.bashrc文件(针对当前用户)或/etc/bashrc文件(针对所有用户),配置后需执行source ~/.bashrc或重启终端生效。

1.3 实战示例

示例 1:设置临时别名(简化 ls 命令)

ls -a -l -n设置别名hello,简化隐藏文件的详细列表查看操作:

代码语言:javascript
复制
[whb@bite-alicloud test]$ alias hello='ls -a -l -n'
[whb@bite-alicloud test]$ which hello
alias hello='ls -a -l -n'
	/usr/bin/ls
[whb@bite-alicloud test]$ hello
total 36
drwxrwxr-x 2 1003 1003 4096 Jan 11 17:59 .
drwx------ 22 1003 1003 4096 Jan 11 17:57 ..
-rw-rw-r-- 1 1003 1003 28667 Jan 11 18:29 temp.txt

输出说明:设置别名后,执行hello命令等同于执行ls -a -l -n,成功显示当前目录下所有文件(包括隐藏文件)的详细信息,并用数字 UID/GID 替代用户名 / 组名。

示例 2:设置永久别名(简化目录创建与删除)

为常用的递归创建目录和强制删除目录命令设置永久别名,避免重复输入长参数:

代码语言:javascript
复制
# 编辑.bashrc文件
[whb@bite-alicloud ~]$ vim ~/.bashrc
# 在文件末尾添加以下内容
alias mkdirp='mkdir -p'  # 递归创建目录
alias rmrf='rm -rf'      # 强制递归删除目录/文件

# 使配置生效
[whb@bite-alicloud ~]$ source ~/.bashrc

# 测试别名
[whb@bite-alicloud test]$ mkdirp a/b/c/d  # 等同于mkdir -p a/b/c/d
[whb@bite-alicloud test]$ tree a
a
└── b
    └── c
        └── d

3 directories, 0 files

[whb@bite-alicloud test]$ rmrf a  # 等同于rm -rf a
[whb@bite-alicloud test]$ ls a
ls: 无法访问'a': 没有那个文件或目录

输出说明:通过永久别名配置,mkdirprmrf分别替代了mkdir -prm -rf,大幅简化了复杂目录操作的命令输入,且配置永久生效。

示例 3:查看与删除别名

查看当前所有别名,并删除不需要的别名:

代码语言:javascript
复制
# 查看所有别名
[whb@bite-alicloud test]$ alias
alias cp='cp -i'
alias hello='ls -a -l -n'
alias mkdirp='mkdir -p'
alias mv='mv -i'
alias rm='rm -i'
alias rmrf='rm -rf'
alias ls='ls --color=auto'

# 删除hello别名
[whb@bite-alicloud test]$ unalias hello
[whb@bite-alicloud test]$ hello
-bash: hello: 未找到命令

输出说明:alias命令列出了系统默认别名和自定义别名,unalias命令成功删除了hello别名,再次执行hello时提示命令未找到。

二、grep 指令:文本内容的 “精准搜索工具”

grep(Global Regular Expression Print)是 Linux 下最强大的文本搜索工具,支持正则表达式匹配,能够快速从文件或命令输出中筛选出包含指定字符串的行,广泛应用于日志分析、配置文件查找等场景。

2.1 指令语法

代码语言:javascript
复制
grep [选项] [搜索字符串/正则表达式] [文件...]

2.2 常用选项

  • -i:忽略大小写,搜索时不区分大小写字母。
  • -n:显示匹配行的行号,便于定位内容位置。
  • -v:反向选择,显示不包含搜索字符串的行。
  • -r:递归搜索,遍历指定目录下的所有文件(包括子目录)。
  • -o:仅显示匹配的字符串本身,而非整行内容。
  • -E:支持扩展正则表达式,无需对特殊字符(如|())进行转义。

2.3 实战示例

示例 1:基础文本搜索(匹配指定字符串)

创建测试文件,搜索包含 “abcd” 的行:

代码语言:javascript
复制
[whb@bite-alicloud test]$ cat temp.txt
abcd
ABCD
hello
bite
1234

# 精准匹配小写"abcd"
[whb@bite-alicloud test]$ grep "abcd" temp.txt
abcd

输出说明:默认情况下,grep 区分大小写,仅匹配到小写的 “abcd” 行。

示例 2:忽略大小写搜索

使用-i选项忽略大小写,同时匹配 “abcd” 和 “ABCD”:

代码语言:javascript
复制
[whb@bite-alicloud test]$ grep -i "abcd" temp.txt
abcd
ABCD

输出说明:-i选项取消大小写限制,成功匹配到所有包含 “abcd”(不区分大小写)的行。

示例 3:显示匹配行的行号

使用-n选项显示匹配行的行号,便于快速定位内容位置:

代码语言:javascript
复制
[whb@bite-alicloud test]$ grep -n "abcd" temp.txt
1:abcd

[whb@bite-alicloud test]$ grep -ni "abcd" temp.txt
1:abcd
2:ABCD

输出说明:-n选项在匹配结果前显示行号,结合-i选项后,同时显示了 “abcd”(第 1 行)和 “ABCD”(第 2 行)的行号。

示例 4:反向选择(显示不包含指定字符串的行)

使用-v选项显示不包含 “abcd” 的所有行,结合-n选项显示行号:

代码语言:javascript
复制
[whb@bite-alicloud test]$ grep -vn "abcd" temp.txt
2:ABCD
3:hello
4:bite
5:1234

[whb@bite-alicloud test]$ grep -vni "abcd" temp.txt
3:hello
4:bite
5:1234

输出说明:-v选项反向筛选,第一个命令排除了第 1 行(包含 “abcd”),第二个命令结合-i选项,排除了第 1 行和第 2 行(包含 “abcd” 或 “ABCD”)。

示例 5:递归搜索目录下的所有文件

/home/whb目录下递归搜索所有.txt文件中包含 “hello” 的行:

代码语言:javascript
复制
[whb@bite-alicloud ~]$ grep -r "hello" --include="*.txt" /home/whb
/home/whb/test/temp.txt:hello
/home/whb/test/dir/myfile.txt:hello bite tech

输出说明:-r选项递归搜索/home/whb目录,--include="*.txt"仅搜索后缀为.txt的文件,输出结果显示了匹配文件的路径、行号(若未指定-n则不显示)和匹配内容。

示例 6:使用正则表达式匹配

使用扩展正则表达式匹配 “hello” 或 “bite” 字符串,结合-E选项无需转义特殊字符:

代码语言:javascript
复制
[whb@bite-alicloud test]$ grep -E "hello|bite" temp.txt
hello
bite

# 不使用-E选项需转义|
[whb@bite-alicloud test]$ grep "hello\|bite" temp.txt
hello
bite

输出说明:-E选项支持扩展正则表达式,|表示 “或” 逻辑,成功匹配到包含 “hello” 或 “bite” 的行;若不使用-E选项,需对|进行转义(\|)。

三、top 指令:系统资源的 “实时监控中心”

top 指令是 Linux 下最常用的系统监控工具,能够实时显示系统的 CPU、内存、进程等资源使用情况,支持动态刷新,是排查系统性能问题、定位资源占用过高进程的核心工具。

3.1 指令语法

代码语言:javascript
复制
top [选项]

3.2 常用选项

  • -d <秒数>:指定刷新时间间隔,默认 1 秒,如top -d 3表示每 3 秒刷新一次。
  • -n <次数>:指定刷新次数,达到次数后自动退出,如top -n 5表示刷新 5 次后退出。
  • -p <进程 ID>:仅监控指定进程 ID 的进程,如top -p 1234
  • -u <用户名>:仅监控指定用户的进程,如top -u whb

3.3 界面字段说明

top 命令执行后会显示以下核心信息(分为系统概览和进程列表两部分):

系统概览(前 5 行)

  • 第 1 行:系统时间、运行时间、登录用户数、系统负载(1 分钟、5 分钟、15 分钟平均负载,数值越小系统越空闲)。
  • 第 2 行:进程总数、运行中进程数、睡眠进程数、停止进程数、僵尸进程数。
  • 第 3 行:CPU 使用率(us:用户空间 CPU 占比、sy:内核空间 CPU 占比、ni:优先级调整 CPU 占比、id:空闲 CPU 占比、wa:IO 等待 CPU 占比)。
  • 第 4 行:内存使用情况(total:总内存、used:已使用内存、free:空闲内存、buffers:缓存内存)。
  • 第 5 行:交换分区使用情况(total:总交换分区、used:已使用交换分区、free:空闲交换分区、cached:缓存交换分区)。

进程列表(字段说明)

  • PID:进程 ID(唯一标识进程)。
  • USER:进程所属用户。
  • PR:进程优先级(数值越小优先级越高)。
  • NI:进程 nice 值(调整优先级,范围 - 20~19,负值优先级更高)。
  • VIRT:进程占用的虚拟内存总量。
  • RES:进程占用的物理内存总量(不包括共享库)。
  • SHR:进程占用的共享内存大小。
  • S:进程状态(R:运行中、S:睡眠、D:不可中断睡眠、Z:僵尸进程、T:停止)。
  • % CPU:进程占用的 CPU 百分比。
  • % MEM:进程占用的内存百分比。
  • TIME+:进程累计占用的 CPU 时间。
  • COMMAND:进程启动命令。

3.4 交互快捷键(top 运行中使用)

  • q:退出 top。
  • k:终止指定 PID 的进程(输入 PID 后按回车,再输入 9 强制终止)。
  • P:按 CPU 使用率降序排序(默认排序方式)。
  • M:按内存使用率降序排序。
  • T:按进程累计 CPU 时间降序排序。
  • u:输入用户名,仅显示该用户的进程。
  • p:输入 PID,仅显示该进程。
  • 1:显示所有 CPU 核心的使用率(多 CPU 系统)。

3.5 实战示例

示例 1:基础监控(默认刷新)

执行top命令,实时监控系统资源使用情况:

代码语言:javascript
复制
[whb@bite-alicloud test]$ top
top - 18:35:22 up 2 days,  3:42,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8175872 total,  6543216 free,   897344 used,   735312 buff/cache
KiB Swap:  8388604 total,  8388604 free,        0 used.  7001208 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                         
 1234 root      20   0  125432  12348   8760 S  0.0  0.1   0:05.23 sshd                            
 5678 whb       20   0  104568   8764   6540 S  0.0  0.1   0:02.15 bash                            
 7890 whb       20   0  100896   4320   3560 R  0.0  0.1   0:00.01 top                             
...

输出说明:默认每 1 秒刷新一次,显示系统当前负载较低(1 分钟平均负载 0.00),CPU 空闲率 100%,内存使用率约 11%,所有进程均处于睡眠或运行状态,无僵尸进程。

示例 2:指定刷新间隔和次数

设置每 1 秒刷新一次,共刷新 5 次后自动退出:

代码语言:javascript
复制
[whb@bite-alicloud test]$ top -d 1 -n 5
top - 18:37:10 up 2 days,  3:44,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8175872 total,  6542984 free,   897576 used,   735312 buff/cache
KiB Swap:  8388604 total,  8388604 free,        0 used.  7000976 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                         
 7890 whb       20   0  100896   4320   3560 R  0.0  0.1   0:00.02 top                             
...
# 共刷新5次后自动退出

输出说明:-d 1指定刷新间隔 1 秒,-n 5指定刷新次数 5 次,适合在脚本中批量获取系统资源数据,无需手动退出。

示例 3:监控指定用户和进程

仅监控用户whb的进程,并按内存使用率排序:

代码语言:javascript
复制
[whb@bite-alicloud test]$ top -u whb
# 运行后按M键按内存使用率排序
top - 18:39:45 up 2 days,  3:47,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  15 total,   1 running,  14 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8175872 total,  6542752 free,   897808 used,   735312 buff/cache
KiB Swap:  8388604 total,  8388604 free,        0 used.  7000744 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                         
 5678 whb       20   0  104568   8764   6540 S  0.0  0.1   0:02.17 bash                            
 7890 whb       20   0  100896   4320   3560 R  0.0  0.1   0:00.03 top                             
 9012 whb       20   0   98764   3840   3200 S  0.0  0.0   0:00.05 vim                             
...

输出说明:-u whb仅显示用户whb的 15 个进程,按 M 键后按内存使用率降序排序,bash进程占用内存最多(约 8.5MB),top进程处于运行状态。

四、zip/unzip 指令:文件的 “压缩与解压工具”

zip 和 unzip 是 Linux 下常用的文件压缩和解压工具,支持.zip 格式的压缩包创建、解压、查看等操作,兼容 Windows 系统的压缩格式,适合跨平台文件传输。

4.1 指令语法

zip(压缩)
代码语言:javascript
复制
zip [选项] 压缩包名称.zip 待压缩的文件/目录
unzip(解压)
代码语言:javascript
复制
unzip [选项] 压缩包名称.zip [解压到的目录]

4.2 常用选项

zip 选项

  • -r:递归压缩,压缩目录时必须使用该选项,否则仅压缩目录本身,不包含子目录和文件。
  • -q:静默压缩,不显示压缩过程的详细信息。
  • -m:压缩后删除原始文件(移动文件到压缩包)。
  • -v:显示压缩过程的详细信息( verbose 模式)。
unzip 选项

  • -d <目录>:指定解压目录,若目录不存在则自动创建。
  • -l:查看压缩包内的文件列表,不解压。
  • -q:静默解压,不显示解压过程的详细信息。
  • -o:覆盖已存在的文件,不提示确认。
  • -x <文件>:排除压缩包内的指定文件,不解压该文件。

4.3 实战示例

示例 1:压缩文件和目录

创建测试文件和目录,分别压缩单个文件、多个文件和目录:

代码语言:javascript
复制
# 创建测试文件和目录
[whb@bite-alicloud test]$ touch file1.txt file2.txt
[whb@bite-alicloud test]$ mkdir test2
[whb@bite-alicloud test]$ echo "test" > test2/file3.txt

# 压缩单个文件
[whb@bite-alicloud test]$ zip file1.zip file1.txt
  adding: file1.txt (stored 0%)
[whb@bite-alicloud test]$ ls
file1.txt  file1.zip  file2.txt  test2

# 压缩多个文件
[whb@bite-alicloud test]$ zip files.zip file1.txt file2.txt
  adding: file1.txt (stored 0%)
  adding: file2.txt (stored 0%)
[whb@bite-alicloud test]$ ls
file1.txt  file1.zip  file2.txt  files.zip  test2

# 递归压缩目录(必须加-r选项)
[whb@bite-alicloud test]$ zip -r test2.zip test2/*
  adding: test2/file3.txt (stored 0%)
[whb@bite-alicloud test]$ ls
file1.txt  file1.zip  file2.txt  files.zip  test2  test2.zip

输出说明:zip file1.zip file1.txt压缩单个文件,zip files.zip file1.txt file2.txt压缩多个文件,zip -r test2.zip test2/*递归压缩test2目录下的所有文件(包括子目录),压缩过程中显示添加的文件及压缩比例(空文件压缩比例为 0%)。

示例 2:查看压缩包内容

使用unzip -l查看压缩包内的文件列表,无需解压:

代码语言:javascript
复制
[whb@bite-alicloud test]$ unzip -l test2.zip
Archive:  test2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        5  2023-01-11 18:45   test2/file3.txt
---------                     -------
        5                     1 file

输出说明:unzip -l显示了test2.zip压缩包内的文件名称、大小、创建时间,该压缩包包含 1 个文件test2/file3.txt,大小为 5 字节。

示例 3:解压到指定目录

test2.zip解压到/tmp目录,若目录不存在则自动创建:

代码语言:javascript
复制
[whb@bite-alicloud test]$ unzip test2.zip -d /tmp
Archive:  test2.zip
  inflating: /tmp/test2/file3.txt  

[whb@bite-alicloud test]$ ls /tmp/test2/
file3.txt

输出说明:-d /tmp指定解压目录为/tmp,解压后/tmp目录下自动创建test2子目录,文件file3.txt成功解压到该目录。

示例 4:静默解压与覆盖文件

使用-q选项静默解压,-o选项覆盖已存在的文件:

代码语言:javascript
复制
# 先创建同名文件
[whb@bite-alicloud test]$ mkdir -p /tmp/test2
[whb@bite-alicloud test]$ echo "old" > /tmp/test2/file3.txt

# 静默覆盖解压
[whb@bite-alicloud test]$ unzip -q -o test2.zip -d /tmp

# 验证文件内容
[whb@bite-alicloud test]$ cat /tmp/test2/file3.txt
test

输出说明:-q选项不显示解压过程,-o选项直接覆盖/tmp/test2/file3.txt文件(原内容 “old” 被替换为 “test”),无任何提示确认。

五、rzsz:Windows 与 Linux 的 “文件传输神器”

rzsz 是一套用于 Windows 客户端与 Linux 服务器之间通过 SSH 协议传输文件的工具,无需复杂配置,安装后可通过拖拽或命令行快速实现文件上传(rz)和下载(sz),是远程操作中文件传输的首选工具。

5.1 工具安装

rzsz 工具需在 Linux 服务器上安装,支持 yum 和 apt 两种包管理器:

代码语言:javascript
复制
# CentOS/RHEL系统(yum)
[root@bite-alicloud ~]$ yum install -y lrzsz

# Ubuntu/Debian系统(apt)
[root@bite-alicloud ~]$ apt install -y lrzsz

说明:安装后无需额外配置,直接在 XShell、SecureCRT 等支持 SSH 的终端工具中使用。

5.2 核心命令

  • rz:从 Windows 客户端上传文件到 Linux 服务器,执行后会弹出文件选择窗口,选择文件后自动上传到当前工作目录。
  • sz <文件 / 目录>:从 Linux 服务器下载文件 / 目录到 Windows 客户端,执行后会弹出保存路径选择窗口,选择路径后自动下载。

5.3 注意事项

  • 仅支持单个文件或目录传输,若需传输多个文件,建议先压缩为.zip 或.tar.gz 格式后再传输。
  • 传输目录时,sz 命令会自动将目录压缩为.tar.gz 格式后下载,无需手动压缩。
  • 传输大文件(如超过 1GB)时,建议使用 FTP 或 SCP 工具,rzsz 传输速度较慢且易中断。

5.4 实战示例

示例 1:上传文件(rz 命令)

从 Windows 上传test.txt文件到 Linux 服务器的/home/whb/test目录:

代码语言:javascript
复制
[whb@bite-alicloud test]$ rz
# 执行后弹出Windows文件选择窗口,选择test.txt文件,点击确定
rz waiting to receive.zmodem trl+C to cancel.
  100%  1024 bytes 1024 bytes/sec 00:00:01       0 Errors

[whb@bite-alicloud test]$ ls
test.txt

输出说明:执行rz命令后,按提示选择 Windows 本地的test.txt文件,文件自动上传到当前目录(/home/whb/test),传输完成后显示传输大小、速度和错误数(0 Errors 表示传输成功)。

示例 2:下载文件(sz 命令)

从 Linux 服务器下载test.txt文件到 Windows 客户端的D:\Downloads目录:

代码语言:javascript
复制
[whb@bite-alicloud test]$ sz test.txt
# 执行后弹出Windows保存路径选择窗口,选择D:\Downloads,点击确定
sz -v test.txt
  sending: test.txt (1024 bytes)

输出说明:执行sz test.txt命令后,选择 Windows 本地保存路径,文件自动下载到指定目录,传输完成后显示文件大小。

示例 3:下载目录(sz 命令)

从 Linux 服务器下载test2目录到 Windows 客户端,sz 自动压缩目录:

代码语言:javascript
复制
[whb@bite-alicloud test]$ sz -r test2  # -r递归下载目录
# 执行后弹出保存路径选择窗口,选择保存位置
sz -v -r test2
  creating archive test2.tar.gz...
  adding: test2/ (stored 0%)
  adding: test2/file3.txt (stored 0%)
  sending: test2.tar.gz (1024 bytes)

输出说明:-r选项递归下载目录,sz 命令自动将test2目录压缩为test2.tar.gz格式,再下载到 Windows 客户端,下载完成后需在 Windows 中解压该压缩包。

六、tar 指令:Linux 下的 “全能压缩解压工具”

tar 是 Linux 系统中最强大的文件打包压缩工具,支持多种压缩格式(gzip、bzip2 等),能够实现文件的打包、压缩、解压、查看等功能,是服务器备份、文件传输中不可或缺的工具。

6.1 指令语法

代码语言:javascript
复制
tar [选项] 压缩包名称 待打包/解压的文件/目录

6.2 核心参数说明

tar 命令的参数较多,核心参数组合如下(参数顺序无严格要求,但-f后必须紧跟压缩包名称):

参数

功能说明

-c

创建压缩包(打包)

-x

解压压缩包

-t

查看压缩包内的文件列表

-z

使用 gzip 压缩 / 解压(压缩包后缀为.tar.gz 或.tgz)

-j

使用 bzip2 压缩 / 解压(压缩包后缀为.tar.bz2)

-v

显示操作过程( verbose 模式)

-f

指定压缩包名称(必须紧跟压缩包名,如-f etc.tar.gz)

-C

指定解压目录(解压时使用)

-p

保留文件的原始权限(备份系统文件时常用)

-N "日期"

仅打包指定日期之后修改的文件

--exclude "文件 / 目录"

排除指定文件 / 目录,不纳入打包

6.3 实战示例

示例 1:打包不压缩(.tar 格式)

/etc目录打包为etc.tar(仅打包,不压缩):

代码语言:javascript
复制
[root@bite-alicloud ~]$ tar -cvf /tmp/etc.tar /etc
tar: Removing leading `/' from member names
/etc/
/etc/passwd
/etc/group
/etc/profile
...  # 省略大量文件列表

输出说明:-cvf组合参数表示 “创建打包 + 显示过程 + 指定压缩包名”,打包时会提示 “Removing leading /' from member names”,表示去除绝对路径的/,避免解压时覆盖系统原有目录;打包后的etc.tar` 文件仅为打包格式,未压缩,文件体积较大。

示例 2:gzip 压缩打包(.tar.gz 格式)

/etc目录打包并使用 gzip 压缩,生成etc.tar.gz(最常用的压缩格式):

代码语言:javascript
复制
[root@bite-alicloud ~]$ tar -zcvf /tmp/etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/passwd
/etc/group
/etc/profile
...

输出说明:-z选项启用 gzip 压缩,压缩后的文件后缀为.tar.gz,文件体积远小于纯打包的.tar格式;-cvf参数功能同上,显示打包压缩过程。

示例 3:查看压缩包内容(不解压)

使用-t选项查看etc.tar.gz压缩包内的文件列表:

代码语言:javascript
复制
[root@bite-alicloud ~]$ tar -ztvf /tmp/etc.tar.gz
drwxr-xr-x root/root         0 2023-01-01 00:00 etc/
-rw-r--r-- root/root       1000 2023-01-01 00:00 etc/passwd
-rw-r--r-- root/root        500 2023-01-01 00:00 etc/group
-rw-r--r-- root/root       2000 2023-01-01 00:00 etc/profile
...

输出说明:-ztvf组合参数表示 “gzip 格式 + 查看内容 + 显示过程 + 指定压缩包名”,输出结果显示了压缩包内每个文件的权限、所有者、大小、创建时间和名称。

示例 4:解压到指定目录

etc.tar.gz解压到/usr/local/src目录,保留文件原始权限:

代码语言:javascript
复制
[root@bite-alicloud ~]$ cd /usr/local/src
[root@bite-alicloud src]$ tar -zxvpf /tmp/etc.tar.gz
etc/
etc/passwd
etc/group
etc/profile
...

[root@bite-alicloud src]$ ls etc/
passwd  group  profile  ...

输出说明:-zxvpf组合参数表示 “gzip 格式 + 解压 + 显示过程 + 指定压缩包名 + 保留权限”,-C选项可直接指定解压目录(如tar -zxvpf /tmp/etc.tar.gz -C /usr/local/src),解压后/usr/local/src目录下生成etc子目录,文件权限与原始文件一致。

示例 5:打包时排除指定文件 / 目录

打包/home目录时,排除/home/dmtsai目录,生成home.tar.gz

代码语言:javascript
复制
[root@bite-alicloud ~]$ tar --exclude /home/dmtsai -zcvf /tmp/home.tar.gz /home
tar: Removing leading `/' from member names
/home/
/home/whb/
/home/whb/test/
/home/whb/test/file1.txt
...  # 不包含/home/dmtsai目录及文件

输出说明:--exclude /home/dmtsai选项指定打包时排除/home/dmtsai目录,该目录及其中的文件不会被纳入压缩包。

示例 6:仅解压压缩包中的单个文件

etc.tar.gz中仅解压etc/passwd文件到当前目录:

代码语言:javascript
复制
[root@bite-alicloud ~]$ tar -zxvf /tmp/etc.tar.gz etc/passwd
etc/passwd

[root@bite-alicloud ~]$ ls etc/passwd
etc/passwd

输出说明:在压缩包名称后指定要解压的文件路径(etc/passwd,注意路径与压缩包内一致,无前置/),仅解压该文件,避免解压整个压缩包浪费资源。

七、bc 指令:Linux 下的 “浮点运算计算器”

bc 是 Linux 系统内置的命令行计算器,支持整数和浮点运算,还可通过设置精度实现高精度计算,适合在终端中快速执行数学运算,无需启动专门的计算工具。

7.1 指令语法

代码语言:javascript
复制
bc [选项]

7.2 常用选项

  • -q:静默模式启动,不显示 bc 版本信息和欢迎信息。
  • -l:加载数学库,支持三角函数、对数函数等高级运算,同时默认设置浮点运算精度为 20 位。
  • scale=<数字>:设置浮点运算的小数位数(精度),如scale=4表示保留 4 位小数。

7.3 基本运算支持

  • 算术运算:+(加)、-(减)、*(乘)、/(除)、%(取余)、^(幂运算)。
  • 比较运算:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
  • 逻辑运算:&&(与)、||(或)、!(非)。
  • 数学函数(需加载-l选项):sin(x)(正弦)、cos(x)(余弦)、tan(x)(正切)、log(x)(自然对数)、sqrt(x)(平方根)等。

7.4 实战示例

示例 1:基础整数运算

启动 bc 计算器,执行简单整数运算:

代码语言:javascript
复制
[whb@bite-alicloud test]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+2*3
7
(10-5)/2
2
5^3
125
10%3
1
quit  # 输入quit退出bc

输出说明:默认情况下,bc 支持整数运算,除法运算结果仅保留整数部分((10-5)/2=2而非 2.5),输入quit可退出计算器。

示例 2:浮点运算(设置精度)

使用scale设置浮点精度,执行小数运算:

代码语言:javascript
复制
[whb@bite-alicloud test]$ bc -q
scale=4  # 设置保留4位小数
10/3
3.3333
2.5*4.2
10.5000
sqrt(2)  # 未加载-l选项,不支持sqrt函数
sqrt(2)
Runtime error (func=(main), adr=4): Function sqrt not defined.
quit

输出说明:scale=4设置浮点运算保留 4 位小数,10/3结果为 3.3333,2.5*4.2结果为 10.5000;未加载-l选项时,不支持高级数学函数(如sqrt),会提示运行时错误。

示例 3:加载数学库(高级运算)

使用-l选项加载数学库,支持三角函数、平方根等高级运算:

代码语言:javascript
复制
[whb@bite-alicloud test]$ bc -lq
scale=6  # 设置保留6位小数
sqrt(2)  # 平方根
1.414213
sin(3.1415926535)  # 正弦函数(参数为弧度)
.000000
cos(0)  # 余弦函数
1.000000
log(10)  # 自然对数
2.302585
2^100  # 大数幂运算
1267650600228229401496703205376
quit

输出说明:-l选项加载数学库后,支持sqrtsincoslog等函数,sin(3.1415926535)(π 弧度)结果接近 0,2^100成功计算出大数结果,scale=6确保小数结果保留 6 位。

示例 4:脚本模式执行运算

直接在命令行执行运算,无需进入交互式模式:

代码语言:javascript
复制
[whb@bite-alicloud test]$ echo "scale=4; 100/7" | bc
14.2857
[whb@bite-alicloud test]$ echo "scale=6; sqrt(10)" | bc -l
3.162277

输出说明:通过管道符|将运算表达式传递给 bc,echo "scale=4; 100/7" | bc直接输出 100/7 的结果(保留 4 位小数),echo "scale=6; sqrt(10)" | bc -l加载数学库计算 10 的平方根(保留 6 位小数)。

八、uname -r 指令:系统内核的 “版本查询工具”

uname 指令用于获取 Linux 系统的内核信息、硬件架构、操作系统名称等基础信息,其中uname -r是最常用的组合,专门用于查询内核版本号,是系统维护、软件安装(如驱动程序)时的必备命令。

8.1 指令语法

代码语言:javascript
复制
uname [选项]

8.2 常用选项

  • -r:显示内核版本号(核心选项)。
  • -a:显示所有系统信息,包括内核名称、主机名、内核版本号、内核编译时间、硬件架构、处理器类型、操作系统名称等。
  • -s:显示内核名称(如 Linux)。
  • -n:显示主机名。
  • -m:显示硬件架构(如 x86_64 表示 64 位系统)。
  • -p:显示处理器类型。
  • -o:显示操作系统名称(如 GNU/Linux)。

8.3 补充命令

查看操作系统版本(区别于内核版本):

代码语言:javascript
复制
# CentOS/RHEL系统
[whb@bite-alicloud test]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

# Ubuntu/Debian系统
[whb@bite-alicloud test]$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:  Ubuntu 20.04 LTS
Release:        20.04
Codename:       focal

说明:内核版本(uname -r)与操作系统版本是两个不同概念,例如 CentOS 7.9 系统可能使用 3.10.x 系列内核。

8.4 实战示例

示例 1:查询内核版本号(uname -r)
代码语言:javascript
复制
[whb@bite-alicloud test]$ uname -r
3.10.0-1160.83.1.el7.x86_64

输出说明:内核版本号3.10.0-1160.83.1.el7.x86_64各部分含义:

  • 3.10.0:主内核版本号。
  • 1160.83.1:内核更新版本号。
  • el7:表示该内核为 CentOS/RHEL 7 系列定制。
  • x86_64:表示内核适用于 64 位 x86 架构。
示例 2:查看所有系统信息(uname -a)
代码语言:javascript
复制
[whb@bite-alicloud test]$ uname -a
Linux bite-alicloud 3.10.0-1160.83.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

输出说明:uname -a显示完整系统信息,各字段含义:

  • Linux:内核名称。
  • bite-alicloud:主机名。
  • 3.10.0-1160.83.1.el7.x86_64:内核版本号。
  • #1 SMP Tue Nov 8 15:48:59 UTC 2022:内核编译时间和编译编号。
  • x86_64:硬件架构。
  • x86_64:处理器类型。
  • x86_64:硬件平台类型。
  • GNU/Linux:操作系统名称。
示例 3:查询硬件架构和处理器类型
代码语言:javascript
复制
[whb@bite-alicloud test]$ uname -m
x86_64
[whb@bite-alicloud test]$ uname -p
x86_64

输出说明:uname -muname -p均显示当前系统为 64 位 x86 架构,适合安装 64 位软件包。

九、重要热键:Linux 终端的 “效率加速器”

在 Linux 终端操作中,掌握以下核心热键能够大幅提升操作效率,避免重复输入和误操作,是每个 Linux 使用者必须熟练掌握的基础技能。

9.1 核心热键及功能说明

热键组合

功能说明

适用场景

Tab

命令补全 / 文件补全

输入命令或文件路径时,按 Tab 键自动补全,连续按两次显示所有可能选项

Ctrl + C

终止当前进程 / 命令

命令执行卡住、进入死循环或需要中断命令时使用

Ctrl + D

退出当前终端会话 / 表示输入结束(EOF)

替代quit或exit命令退出终端,或在输入文本时表示输入结束

Ctrl + Z

暂停当前进程(放入后台)

临时暂停正在执行的命令,后续可通过fg命令恢复到前台

Ctrl + A

光标跳转到命令行开头

输入长命令后,快速跳转到开头修改

Ctrl + E

光标跳转到命令行结尾

快速跳转到命令行末尾添加内容

Ctrl + U

删除光标前的所有字符(从光标到开头)

输入错误命令时,快速删除前面的内容

Ctrl + K

删除光标后的所有字符(从光标到结尾)

快速删除光标后的多余内容

Ctrl + W

删除光标前的一个单词

按单词为单位删除,比 Ctrl + U 更精准

Ctrl + L

清屏

替代clear命令,快速清空终端屏幕内容

Ctrl + R

搜索历史命令

输入关键字后,按 Ctrl + R 可搜索历史执行过的命令,按 Enter 执行找到的命令

!!

执行上一条命令

快速重复执行上一条命令,无需重新输入

!n

执行历史命令中第 n 条命令

通过history命令查看历史命令编号后,使用!n快速执行

!keyword

执行历史命令中最近一条以 keyword 开头的命令

如!ls执行最近一次的 ls 命令

9.2 实战示例

示例 1:Tab 补全(命令补全 + 文件补全)
代码语言:javascript
复制
# 命令补全:输入"pri"后按Tab键,自动补全为"printf"
[whb@bite-alicloud test]$ pri[TAB]
printf

# 文件补全:输入"file"后按Tab键,自动补全为当前目录下的"file1.txt"
[whb@bite-alicloud test]$ ls file[TAB]
file1.txt  file2.txt  # 连续按两次Tab显示所有匹配文件
[whb@bite-alicloud test]$ ls file1.txt
file1.txt

输出说明:Tab 键是 Linux 终端中最常用的热键,能够避免命令和文件路径的输入错误,大幅提升输入效率。

示例 2:Ctrl + C 终止进程
代码语言:javascript
复制
# 执行一个死循环命令
[whb@bite-alicloud test]$ while :; do echo "hello"; sleep 1; done
hello
hello
hello
^C  # 按Ctrl + C终止命令
[whb@bite-alicloud test]$ 

输出说明:死循环命令执行后,终端不断输出 “hello”,按 Ctrl + C 后命令立即终止,返回命令提示符。

示例 3:Ctrl + R 搜索历史命令
代码语言:javascript
复制
# 按Ctrl + R后输入"ls",搜索历史执行过的ls命令
[whb@bite-alicloud test]$ ^R
(reverse-i-search)`ls': ls -a -l -n
# 按Enter执行找到的命令"ls -a -l -n"
total 36
drwxrwxr-x 2 1003 1003 4096 Jan 11 17:59 .
drwx------ 22 1003 1003 4096 Jan 11 17:57 ..
-rw-rw-r-- 1 1003 1003 28667 Jan 11 18:29 temp.txt

输出说明:Ctrl + R 反向搜索历史命令,输入关键字后自动匹配最近的相关命令,按 Enter 即可执行,无需手动输入完整命令。

示例 4:Ctrl + A/Ctrl + E 快速跳转光标
代码语言:javascript
复制
# 输入长命令后,按Ctrl + A跳转到开头,添加"sudo"
[whb@bite-alicloud test]$ yum install -y lrzsz
^A  # 按Ctrl + A跳转到开头
[whb@bite-alicloud test]$ sudo yum install -y lrzsz  # 在开头添加sudo

# 按Ctrl + E跳转到结尾,添加"-q"选项
[whb@bite-alicloud test]$ sudo yum install -y lrzsz^E  # 按Ctrl + E跳转到结尾
[whb@bite-alicloud test]$ sudo yum install -y lrzsz -q

输出说明:对于长命令,Ctrl + A 和 Ctrl + E 能够快速跳转到命令行开头和结尾,避免手动按方向键移动光标。

示例 5:!! 重复执行上一条命令
代码语言:javascript
复制
# 执行一条命令
[whb@bite-alicloud test]$ ls -l
total 8
-rw-rw-r-- 1 whb whb 0 Jan 11 18:45 file1.txt
-rw-rw-r-- 1 whb whb 0 Jan 11 18:45 file2.txt

# 输入!!重复执行上一条命令
[whb@bite-alicloud test]$ !!
ls -l
total 8
-rw-rw-r-- 1 whb whb 0 Jan 11 18:45 file1.txt
-rw-rw-r-- 1 whb whb 0 Jan 11 18:45 file2.txt

输出说明:!!直接重复执行上一条命令,适合需要多次执行同一命令的场景,无需重新输入。

十、shutdown 指令:系统的 “安全关机与重启工具”

shutdown 指令用于安全关闭或重启 Linux 系统,能够优雅地终止系统服务和进程,避免数据丢失,是系统维护时(如更新内核、硬件升级)的必备命令,仅 root 用户或具有 sudo 权限的用户可执行。

10.1 指令语法

代码语言:javascript
复制
shutdown [选项] [时间] [提示信息]

10.2 常用选项

  • -h:关机(halt),系统服务停止后立即关闭电源。
  • -r:重启(reboot),系统服务停止后重新启动。
  • -c:取消已计划的关机或重启操作。
  • -t <秒数>:指定关机 / 重启前的延迟时间(秒),默认延迟 1 分钟(60 秒)。

10.3 时间参数说明

  • now:立即执行关机 / 重启(等同于-t 0)。
  • +n:n 分钟后执行关机 / 重启,如+5表示 5 分钟后。
  • HH:MM:指定具体时间执行,如23:30表示 23 点 30 分执行。

10.4 补充命令(功能类似)

  • halt:直接关机,等同于shutdown -h now
  • reboot:直接重启,等同于shutdown -r now
  • init 0:关机(通过系统运行级别控制,0 为关机级别)。
  • init 6:重启(6 为重启级别)。

10.5 实战示例

示例 1:立即关机
代码语言:javascript
复制
[root@bite-alicloud ~]$ shutdown -h now
# 或简写为
[root@bite-alicloud ~]$ halt

输出说明:-h now表示立即关机,执行后系统会依次停止所有服务和进程,然后关闭电源,普通用户执行会提示权限不足。

示例 2:定时关机(5 分钟后)
代码语言:javascript
复制
[root@bite-alicloud ~]$ shutdown -h +5 "系统将在5分钟后关机,请保存好工作数据!"
Shutdown scheduled for Wed 2023-01-11 19:50:00 CST, use 'shutdown -c' to cancel.

输出说明:-h +5指定 5 分钟后关机,后面的字符串为广播提示信息,所有登录用户都会收到该提示;执行后终端显示关机计划和取消命令。

示例 3:取消定时关机
代码语言:javascript
复制
[root@bite-alicloud ~]$ shutdown -c
Shutdown cancelled.

输出说明:执行shutdown -c后,系统取消之前计划的关机操作,所有登录用户会收到 “Shutdown cancelled” 的提示。

示例 4:指定时间重启
代码语言:javascript
复制
[root@bite-alicloud ~]$ shutdown -r 23:30 "系统将在23:30重启,用于内核更新,请提前保存数据!"
Shutdown scheduled for Wed 2023-01-11 23:30:00 CST, use 'shutdown -c' to cancel.

输出说明:-r 23:30指定 23 点 30 分重启系统,提示信息告知用户重启原因,适合需要提前通知所有用户的场景。

示例 5:立即重启
代码语言:javascript
复制
[root@bite-alicloud ~]$ shutdown -r now
# 或简写为
[root@bite-alicloud ~]$ reboot

输出说明:-r now表示立即重启,系统停止服务后重新启动,适用于无需延迟的紧急重启场景。


总结

本文详细介绍了 Linux 下 10 个核心进阶指令的语法、选项、实战示例及输出结果,涵盖命令别名配置(alias)、文本搜索(grep)、系统监控(top)、文件压缩解压(zip/unzip、tar)、跨平台文件传输(rzsz)、数学运算(bc)、系统信息查询(uname -r)、终端效率热键和系统关机重启(shutdown)等多个关键场景。 这些指令是 Linux 系统管理和日常运维的必备技能,熟练掌握它们能够大幅提升操作效率,解决工作中的各类实际问题。在实际使用中,建议结合man指令(如man grepman tar)查看各命令的完整参数说明,并通过反复练习加深理解。 Linux 指令的学习是一个循序渐进的过程,除了本文介绍的指令,还有更多高级用法和扩展命令值得探索。希望本文能为大家打下坚实的基础,谢谢大家的支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、alias 指令:命令的 “自定义快捷键”
    • 1.1 指令语法
    • 1.2 核心说明
    • 1.3 实战示例
      • 示例 1:设置临时别名(简化 ls 命令)
      • 示例 2:设置永久别名(简化目录创建与删除)
      • 示例 3:查看与删除别名
  • 二、grep 指令:文本内容的 “精准搜索工具”
    • 2.1 指令语法
    • 2.2 常用选项
    • 2.3 实战示例
      • 示例 1:基础文本搜索(匹配指定字符串)
      • 示例 2:忽略大小写搜索
      • 示例 3:显示匹配行的行号
      • 示例 4:反向选择(显示不包含指定字符串的行)
      • 示例 5:递归搜索目录下的所有文件
      • 示例 6:使用正则表达式匹配
  • 三、top 指令:系统资源的 “实时监控中心”
    • 3.1 指令语法
    • 3.2 常用选项
    • 3.3 界面字段说明
    • 3.4 交互快捷键(top 运行中使用)
    • 3.5 实战示例
      • 示例 1:基础监控(默认刷新)
      • 示例 2:指定刷新间隔和次数
      • 示例 3:监控指定用户和进程
  • 四、zip/unzip 指令:文件的 “压缩与解压工具”
    • 4.1 指令语法
      • zip(压缩)
      • unzip(解压)
    • 4.2 常用选项
      • zip 选项
      • unzip 选项
    • 4.3 实战示例
      • 示例 1:压缩文件和目录
      • 示例 2:查看压缩包内容
      • 示例 3:解压到指定目录
      • 示例 4:静默解压与覆盖文件
  • 五、rzsz:Windows 与 Linux 的 “文件传输神器”
    • 5.1 工具安装
    • 5.2 核心命令
    • 5.3 注意事项
    • 5.4 实战示例
      • 示例 1:上传文件(rz 命令)
      • 示例 2:下载文件(sz 命令)
      • 示例 3:下载目录(sz 命令)
  • 六、tar 指令:Linux 下的 “全能压缩解压工具”
    • 6.1 指令语法
    • 6.2 核心参数说明
    • 6.3 实战示例
      • 示例 1:打包不压缩(.tar 格式)
      • 示例 2:gzip 压缩打包(.tar.gz 格式)
      • 示例 3:查看压缩包内容(不解压)
      • 示例 4:解压到指定目录
      • 示例 5:打包时排除指定文件 / 目录
      • 示例 6:仅解压压缩包中的单个文件
  • 七、bc 指令:Linux 下的 “浮点运算计算器”
    • 7.1 指令语法
    • 7.2 常用选项
    • 7.3 基本运算支持
    • 7.4 实战示例
      • 示例 1:基础整数运算
      • 示例 2:浮点运算(设置精度)
      • 示例 3:加载数学库(高级运算)
      • 示例 4:脚本模式执行运算
  • 八、uname -r 指令:系统内核的 “版本查询工具”
    • 8.1 指令语法
    • 8.2 常用选项
    • 8.3 补充命令
    • 8.4 实战示例
      • 示例 1:查询内核版本号(uname -r)
      • 示例 2:查看所有系统信息(uname -a)
      • 示例 3:查询硬件架构和处理器类型
  • 九、重要热键:Linux 终端的 “效率加速器”
    • 9.1 核心热键及功能说明
    • 9.2 实战示例
      • 示例 1:Tab 补全(命令补全 + 文件补全)
      • 示例 2:Ctrl + C 终止进程
      • 示例 3:Ctrl + R 搜索历史命令
      • 示例 4:Ctrl + A/Ctrl + E 快速跳转光标
      • 示例 5:!! 重复执行上一条命令
  • 十、shutdown 指令:系统的 “安全关机与重启工具”
    • 10.1 指令语法
    • 10.2 常用选项
    • 10.3 时间参数说明
    • 10.4 补充命令(功能类似)
    • 10.5 实战示例
      • 示例 1:立即关机
      • 示例 2:定时关机(5 分钟后)
      • 示例 3:取消定时关机
      • 示例 4:指定时间重启
      • 示例 5:立即重启
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档