参考Linux 命令大全 | 菜鸟教程《Linux就该这么学》 第 3 版

服务

以下均以api.service服务为例演示,在对服务进行操作时,结尾的.service可以省略。

启停、重载、状态

作用 命令
启动服务 systemctl start api.service
停止服务 systemctl stop api.service
重启服务 systemctl restart api.service
重新加载配置文件 systemctl reload api.service
查看服务状态 systemctl status api.service

自启动

作用 命令
开机自启动 systemctl enable api.service
开机不自启动 systemctl disable api.service
查看是否开机自启动 systemctl is-enabled api.service
查看各个级别服务的自启情况 systemctl list-unit-files --type=service

常用系统工作命令

Linux命令格式为命令名称 [命令参数] [命令对象]

命令对象一般指要处理的文件、目录、用户等资源;命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用–与-作为前缀,段格式与短格式之间可以进行合并,合并后仅保留一个-(减号)即可。

echo命令

用于输出字符串或变量提取后的值到终端。格式为echo [字符串|$变量名]

image-20250815115554255

date命令

显示或设置系统时间。格式为date [选项] [+指定的格式]

选项

  • -s, –set=STRING:根据字符串设置系统时间。
  • -d, –date=STRING:通过字符串显示时间格式。

指定的格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
%%   输出字符 %
%a 星期几的缩写 (Sun..Sat)
%A 星期的完整名称(Sunday..Saturday)。
%b 缩写的月份名称(例如,Jan)
%B 完整的月份名称(例如,January)
%c 本地日期和时间(例如,Thu Mar 3 23:05:25 2005)
%d 日 (01..31)
%D 日期,等价于%m/%d/%y
%e 一月中的一天,格式使用空格填充,等价于%_d
%F 完整的日期;等价于 %Y-%m-%d
%H 小时 (00..23)
%I 小时 (01..12)
%j 一年中的第几天 (001..366)
%k 小时,使用空格填充 ( 0..23); 等价于 %_H
%l 小时, 使用空格填充 ( 1..12); 等价于 %_I
%m 月份 (01..12)
%M 分钟 (00..59)
%n 新的一行,换行符
%p 用于表示当地的AM或PM,如果未知则为空白
%P 类似 %p, 但是是小写的
%r 本地的 12 小时制时间(例如 11:11:04 PM)
%R 24 小时制 的小时与分钟; 等价于 %H:%M
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
%S 秒 (00..60)
%t 插入水平制表符 tab
%T 时间; 等价于 %H:%M:%S
%u 一周中的一天 (1..7); 1 表示星期一
%U 一年中的第几周,周日作为一周的起始 (00..53)
%w 一周中的一天(0..6),0代表星期天
%W 一年中的第几周,周一作为一周的起始(00..53)
%x 本地的日期格式(例如,12/31/99)
%X 本地的日期格式(例如,23:13:48)
%y 年份后两位数字 (00..99)
%Y 年
%Z 时区缩写 (如 EDT)
image-20250815122051786

示例

+指定格式

1
2
3
4
5
6
7
8
9
10
11
12
root@wq3stone:~# date
Fri 15 Aug 2025 12:40:56 PM CST
root@wq3stone:~# date '+%c'
Fri 15 Aug 2025 12:41:06 PM CST
root@wq3stone:~# date '+%D'
08/15/25
root@wq3stone:~# date '+%x'
08/15/2025
root@wq3stone:~# date '+%T'
12:41:49
root@wq3stone:~# date '+%X'
12:41:59 PM

当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。

-d参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@wq3stone:~# date +%Y%m%d                   # 显示年月日
20250815
root@wq3stone:~# date -d "+1 day" +%Y%m%d # 显示后一天的日期
20250816
root@wq3stone:~# date -d "-1 day" +%Y%m%d # 显示前一天的日期
20250814
root@wq3stone:~# date -d "-1 month" +%Y%m%d # 显示上一月的日期
20250715
root@wq3stone:~# date -d "+1 month" +%Y%m%d # 显示下一月的日期
20250915
root@wq3stone:~# date -d "-1 year" +%Y%m%d # 显示前一年的日期
20240815
root@wq3stone:~# date -d "+1 year" +%Y%m%d # 显示下一年的日期
20260815

-s参数

1
2
3
4
5
6
7
date -s                         # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01 # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" # 这样可以设置全部时间
date -s "01:01:01 20120523" # 这样可以设置全部时间
date -s "2012-05-23 01:01:01" # 这样可以设置全部时间
date -s "20120523 01:01:01" # 这样可以设置全部时间

只有取得权限者(比如说 root)才能设定系统时间。当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

reboot命令

重启系统,默认只有root用户有此权限

poweroff命令

关闭系统,默认只有root用户有此权限

wget命令

用于在终端中下载网络文件,格式为wget [参数选项] 下载地址

下载控制选项

选项 说明 示例
-O <文件名> 指定保存文件名 wget -O myfile.zip https://example.com/file.zip
-P <目录> 指定下载目录 wget -P ~/downloads https://example.com/file.zip
-c 断点续传 wget -c https://example.com/bigfile.iso
-b 后台下载 wget -b https://example.com/largefile.mp4

连接设置选项

选项 说明 示例
--limit-rate=<速度> 限速下载 wget --limit-rate=200k https://example.com/file.iso
-t <次数> 设置重试次数 wget -t 5 https://example.com/unstable.file
--timeout=<秒> 设置超时时间 wget --timeout=30 https://example.com/slow.file

递归下载选项

选项 说明 示例
-r 递归下载 wget -r https://example.com/directory/
-l <深度> 设置递归深度 wget -r -l 2 https://example.com/
-np 不追溯至父目录 wget -r -np https://example.com/path/

实用示例与应用场景

示例 1:下载单个文件并重命名

wget -O linux_distro.iso https://example.com/ubuntu-22.04.iso

说明

  • 从指定 URL 下载 Ubuntu 22.04 镜像
  • 使用 -O 选项将文件保存为自定义名称 linux_distro.iso

示例 2:限速下载大文件

wget --limit-rate=500k -c https://example.com/large_video.mp4

说明

  • --limit-rate=500k 将下载速度限制在 500KB/s
  • -c 支持断点续传,网络中断后可继续下载

示例 3:递归下载整个网站

wget -r -l 5 --convert-links --wait=2 https://example-site.com

说明

  • -r 启用递归下载
  • -l 5 设置最大递归深度为 5 层
  • --convert-links 转换链接适合本地浏览
  • --wait=2 每次下载间隔 2 秒,减轻服务器负担

高级技巧与注意事项

1. 批量下载文件

创建一个包含多个 URL 的文本文件 urls.txt,然后使用:

wget -i urls.txt

2. 下载 FTP 资源

wget ftp://username:password@ftp.example.com/file.zip

注意:密码会显示在命令历史中,建议使用 --ftp-user--ftp-password 选项分开设置。

3. 常见问题解决

问题 1:证书错误

wget --no-check-certificate https://example.com

问题 2:下载被拒绝(403 Forbidden)

wget --user-agent="Mozilla/5.0" https://example.com

ps命令

ps命令用于查看进程状态。格式为ps [参数]

参数

  • a:显示所有进程(包括其他用户的进程)
  • u:用户以及其他详细信息
  • x:显示没有控制终端的进程

输出各字段的含义如下:

  • USER: 进程的拥有者
  • PID: 进程的 ID
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小
  • RSS: 占用的物理内存大小
  • TTY: 终端的次要设备号
  • STAT: 进程的状态(如 R 表示运行,S 表示睡眠,Z 表示僵尸进程等)
  • START: 进程的启动时间
  • TIME: 进程的累计 CPU 时间
  • COMMAND: 启动进程的命令

常用示例

1
ps -ef | grep node

显示包含node的详细信息

top命令

动态监视进程活动与系统负载等信息,相当于任务管理器。

参数

  • -d <秒数>:指定 top 命令的刷新时间间隔,单位为秒。
  • -n <次数>:指定 top 命令运行的次数后自动退出。
  • -p <进程ID>:仅显示指定进程ID的信息。
  • -u <用户名>:仅显示指定用户名的进程信息。
image-20250815132654756

系统整体的统计信息

第一行

1
2
3
4
5
top - 13:46:29 up 3 days, 30 min,  2 users,  load average: 0.00, 0.00, 0.00
# top:当前系统时间。
# up:机器运行了多长时间。
# users:当前登录用户数。
# load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行

1
2
3
4
5
6
Tasks: 110 total,   1 running, 107 sleeping,   2 stopped,   0 zombie
# Tasks:当前有多少进程。
# running:正在运行的进程数。
# sleeping:正在休眠的进程数。
# stopped:停止的进程数。
# zombie:僵尸进程数。

第三行

1
2
3
4
5
6
7
8
9
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
# us:用户空间占CPU的百分比
# sy:内核空间占CPU的百分比
# ni:调整过nice值的进程消耗掉的CPU时间
# id: 空闲CPU占用率。
# wa: 等待输入输出的CPU时间百分比,一般这个值高代表磁盘io较大。
# hi:硬中断占用百分比,硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)
# si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)。
# st:Steal Time(窃取时间) ,当系统运行在虚拟化环境(如虚拟机)中时,物理 CPU 资源被同一物理机上的其他虚拟机占用,导致当前虚拟机无法使用 CPU 的时间比例。

第四行

1
2
3
4
5
MiB Mem :   1872.6 total,    341.1 free,    638.1 used,    893.5 buff/cache
# total:物理内存总量。
# free:空闲内存量。
# used:使用的内存量。
# buffer/cache:用作内核缓存的内存量。

第五行

1
2
3
4
5
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1075.4 avail Mem 
# total:交换区内存总量。
# free:空闲交换区总量。
# used:使用的交换区总量。
# buffer/cache:缓冲的交换区总量。

进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1624 root 20 0 157612 18204 12096 S 2.0 1.0 3:44.32 AliYunDunMonito
1603 root 20 0 148488 40856 7196 S 0.7 2.3 1:27.12 AliYunDun
1 root 20 0 125632 4072 2620 S 0.0 0.2 0:01.36 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H

# PID: 进程id
# USER: 进程所有者的用户名
# PR: 优先级
# NI: nice值,负值表示高优先级,正值表示低优先级
# VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
# RES: 代表进程实际使用的物理内存(未被换出到磁盘),单位kb。
# SHR: 共享内存大小,单位kb
# S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
# %CPU: 上次更新到现在的CPU时间占用百分比
# %MEM: 进程使用的物理内存百分比
# TIME+: 进程使用的CPU时间总计,单位1/100秒
# COMMAND: 命令名/命令行

在此页面还可以输入以下按键执行相应的功能(注意大小写区分的)

参数 含义
? 显示在top当中可以输入的命令
P 以CPU的使用资源排序显示
M 以内存的使用资源排序显示
N 以pid排序显示
T 由进程使用的时间累计排序显示
k 给某一个pid一个信号,可以用来杀死进程(9)
r 给某个pid重新定制一个nice值(即优先级)
q 退出top(用Ctrl+C也可以退出top)

pidof命令

查询某个指定服务进程的PID值,格式为pidof [参数] [服务名称]

image-20250815140103180

kill命令

kill 命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15),即终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。

语法

1
kill [options] <PID>

<PID> 是要终止进程的进程 ID。

最常用的信号是:

  • SIGKILL(信号9):立即结束进程,不能被捕获或忽略。
  • SIGTERM(信号15):正常结束进程,可以被捕获或忽略。
  • SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。
  • SIGCONT(信号18):继续执行被暂停的进程。
  • SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。

killall命令

killall命令用于终止某个指定名称的服务对应的全部进程,格式为killall [参数] [进程名称]

常用选项

  • -e | –exact:进程名需要完全匹配
  • -I | –ignore-case:忽略大小写
  • -g | –process-group:终止进程组
  • -i | –interactive:终止前询问用户确认
  • -l | –list:列出所有信号名称
  • -q | –quiet:进程未结束时不输出任何信息
  • -r | –regexp:将进程名解释为正则表达式
  • -s | –signal:发送指定信号
  • -u | –user:终止指定用户的进程
  • -v | –verbose:显示详细执行过程
  • -w | –wait:等待所有进程结束
  • -V | –version:显示版本信息
  • –help:显示帮助信息

系统状态检测命令

ifconfig命令

ifconfig用于获取网卡配置与网络状态等信息,格式为ifconfig [网络设备] [参数]

image-20250815142122606

uname命令

uname命令用于查看系统内核与系统版本等信息,格式为uname [-a]

uptime命令

与top命令的第一行数据一样

free命令

free命令用于显示当前系统中内存的使用量

输出信息

  • total:总物理内存
  • used:已经使用的物理内存
  • free:没有使用过的物理内存
  • shared:多进程共享内存
  • buff/cache:读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放
  • available:还可以被应用程序使用的物理内存

who命令

查看当前登入主机的用户终端信息

image-20250815143959320

last命令

查看所有系统的登录信息

history命令

查看历史执行过的命令,可以使用!编码数字来重复执行某一次的命令,若使用-c参数,会清除所有的历史命令记录。

默认保存近1000条命令,可以修改/etc/profile中的HISTSIZE变量值修改保存命令数

历史命令被存储在用户家目录中的.bash_history文件中,可以使用cat ~/.bash_history查看

工作目录切换命令

pwd命令

显示当前所处的工作目录

cd命令

切换工作路径,格式为cd [目录名称]

除此以外,cd命令还有以下用法

  • cd ..进入上级目录
  • cd ~切换到当前用户的家目录
  • cd ~username切换到其他用户的家目录
  • cd -切换到上次所处的目录
  • cd /切换到根目录

ls命令

显示目录中的文件信息,默认是当前目录。

参数

  • -a--all:显示全部文件(包含隐藏文件)
  • -l:显示当前目录下文件的详细信息
  • -d:查看目录属性信息
  • -R--recursive:递归显示当前目录中的所有文件和子目录

文本文件编辑命令

cat命令

查看内容较少的纯文本文件,格式为cat [选项] [文件]

可以使用-n参数显示行号

image-20250815185421242
  • 显示文件内容:cat filename 会将指定文件的内容输出到终端上。
  • 连接文件:cat file1 file2 > combined_file 可以将 file1 和 file2 的内容连接起来,并将结果输出到 combined_file 中。
  • 创建文件:可以使用 cat 命令来创建文件,例如 cat > filename,然后你可以输入文本,按 Ctrl+D 来保存并退出。
  • 在终端显示文件:可以将 cat 与管道(|)结合使用,用来显示其他命令的输出,例如 ls -l | cat 会将 ls -l 的输出通过 cat 打印到终端上。

实例

查看文件内容:显示文件 filename 的内容。

1
cat filename

创建文件:将标准输入重定向到文件 filename,覆盖该文件的内容。

1
cat > filename

追加内容到文件:将标准输入追加到文件 filename 的末尾。

1
cat >> filename

连接文件:将 file1 和 file2 的内容合并到 file3 中。

1
cat file1 file2 > file3

显示多个文件的内容:同时显示 file1 和 file2 的内容。

1
cat file1 file2

使用管道:将 cat 命令的输出作为另一个命令的输入。

1
cat filename | command

查看文件的最后几行:显示文件 filename 的最后 10 行。

1
cat filename | tail -n 10

使用 -n 选项显示行号:显示文件 filename 的内容,并在每行的前面加上行号。

1
cat -n filename

使用 -b 选项仅显示非空行的行号:

1
cat -b filename

使用 -s 选项合并空行:显示文件 filename 的内容,并合并连续的空行。

1
cat -s filename

使用 -t 选项显示制表符:显示文件 filename 的内容,并用 ^I 表示制表符。

1
cat -t filename

使用 -e 选项显示行结束符:显示文件 filename 的内容,并用 $ 表示行结束。

1
cat -e filename

把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

1
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

1
cat -b textfile1 textfile2 >> textfile3

清空 /etc/test.txt 文档内容:

1
cat /dev/null > /etc/test.txt

more命令

more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。

参数

  • -num 一次显示的行数
  • +num 从第 num 行开始显示
image-20250816004515819

常用操作命令

  • Enter 向下n行,需要定义。默认为1行
  • Ctrl+F 向下滚动一屏
  • 空格键 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号
  • V 调用vi编辑器
  • !命令 调用Shell,并执行命令
  • q 退出more

head命令

head 命令可用于查看文件的开头部分的内容。

参数

  • -n:行数,默认为10
  • -c:字节数

tail命令

tail 命令可用于查看文件结尾部分的内容。

参数

  • -f:循环读取,把最尾部的内容显示在屏幕上,并且不断刷新,只要文件更新就可以看到最新的文件内容。
  • -n:显示文件的尾部的行数
  • -c:显示文件的尾部的字节数

显示文件 notes.log 的内容,从第 20 行至文件末尾:

1
tail -n +20 notes.log

tr命令

wc命令

统计文件的行数、单词数、字节数,若不指定文件名称、或是所给予的文件名为”-“,则wc指令会从标准输入设备读取数据。

参数

  • -c或–bytes或–chars 只显示Bytes数。
  • -l或–lines 显示行数。
  • -w或–words 只显示字数。

stat命令

显示inode内容(文件状态信息)

1
2
3
4
5
6
7
8
9
root@wq3stone:/home/project/nav# stat test
File: test
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: fc03h/64515d Inode: 402733 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-08-16 01:28:22.984012957 +0800
Modify: 2025-08-16 01:28:13.471715469 +0800
Change: 2025-08-16 01:28:13.471715469 +0800
Birth: -

cut命令

按列提取文本

diff命令

比较文件的差异

文件目录管理命令

touch命令

参数说明

  • -a:改变档案的读取时间记录。
  • -m:改变档案的修改时间记录。
  • -d:设定时间与日期,可以使用各种不同的格式。

mkdir命令

创建目录,格式为mkdir [-p] dirName

参数说明

  • -p 确保目录名称存在,不存在的就建一个。

在工作目录下的test1目录中,建立一个名为test2的子目录。若 test1目录原本不存在,则新建一个。(注:本例若不加-p参数,且原本test1目录不存在,则产生错误。)

1
mkdir -p test1/test2

cp命令

将文件或目录从一个位置复制到另一个位置,同时可以选择保留原文件的属性(如权限、时间戳等)。格式为cp [options] source dest

命令参数

  • -r-R:递归复制目录及其内容(用于复制目录)。
  • -i:交互模式,覆盖前提示用户确认。
  • -f:强制复制,覆盖目标文件而不提示。
  • -v:显示详细的复制过程(verbose)。
  • -p:保留文件的原始属性(如权限、时间戳等)。
  • -a:归档模式,等同于 -dpR,保留所有文件属性和递归复制目录。
  • -u:仅当源文件比目标文件新时才复制(更新模式)。
  • -l:创建硬链接而不是复制文件。
  • -s:创建符号链接(软链接)而不是复制文件。

mv命令

为文件或目录改名、或将文件或目录移入其它位置。

参数说明

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  • -n: 不要覆盖任何已存在的文件或目录。
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
命令格式 运行结果
mv source_file(文件) dest_file(文件) 将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录) 将文件 source_file 移动到目标目录 dest_directory 中
mv source_directory(目录) dest_directory(目录) 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
mv source_directory(目录) dest_file(文件) 出错

/usr/home下的所有文件和目录移到当前目录下,命令行为:

1
mv /usr/home/* .

rm命令

删除一个文件或目录。

参数

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

实例

删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”,例如:

1
2
3
4
5
6
# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y
# rm homework
rm: 无法删除目录"homework": 是一个目录
# rm -r homework
rm:是否删除 目录 "homework"? y

删除当前目录下的所有文件及目录,命令行为:

1
rm  -r  * 

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

dd命令

file命令

打包压缩与搜索命令

tar命令

基本操作选项

  • -c:创建一个新的归档文件。

  • -x:解压归档文件。

  • -t:列出归档文件的内容。

  • -r:向现有归档文件中追加文件。

  • -u:仅追加比归档文件中已有文件更新的文件。

  • -d:找到归档文件中与文件系统不同步的差异。

  • -A:将一个 .tar 文件追加到另一个 .tar 文件中。

  • -f <file>:指定归档文件的名称(必须放在选项列表的最后)

实例

1、创建归档文件:将文件 file1、file2 和 directory 打包到一个名为 archive.tar 的归档文件中。

1
tar -cvf archive.tar file1 file2 directory
  • -c: 创建新的归档文件
  • -v: 显示详细输出,列出被添加到归档中的文件
  • -f: 指定归档文件的名称

2、解压归档文件:解压名为 archive.tar 的归档文件,还原其中包含的文件和目录。

1
tar -xvf archive.tar
  • -x: 解压归档文件
  • -v: 显示详细输出,列出被解压的文件
  • -f: 指定要解压的归档文件的名称

3、压缩归档文件:将名为 directory 的目录打包成一个归档文件,然后使用 gzip 进行压缩,生成名为 archive.tar.gz 的文件。

1
tar -czvf archive.tar.gz directory
  • -c: 创建新的归档文件
  • -z: 使用 gzip 压缩归档文件
  • -v: 显示详细输出,列出被添加到归档中的文件
  • -f: 指定归档文件的名称

4、列出归档文件中的内容:列出名为 archive.tar 的归档文件中包含的所有文件和目录。

1
tar -tvf archive.tar
  • -t: 列出归档文件中的内容
  • -v: 显示详细输出,列出归档文件中的所有文件和目录
  • -f: 指定要列出内容的归档文件的名称

5、追加文件到已存在的归档中:将名为 newfile 的文件添加到已存在的名为 archive.tar 的归档文件中。

1
tar -rvf archive.tar newfile
  • -r: 向已存在的归档中追加文件
  • -v: 显示详细输出,列出被添加到归档中的文件
  • -f: 指定已存在的归档文件的名称

6、创建一个经过 gzip 压缩的归档文件:打包 directory 目录下的所有文件和子目录,并使用 gzip 压缩,生成名为 archive.tar.gz 的归档文件。

1
tar -zcvf archive.tar.gz directory
  • -z: 表示要使用 gzip 进行压缩。
  • -c: 表示创建新的归档文件。
  • -v: 表示详细输出,列出被添加到归档中的文件。
  • -f archive.tar.gz: 指定归档文件的名称为 archive.tar.gz

7、解压一个已经被 gzip 压缩的归档文件:解压 example.tar.gz 文件,并在当前目录下恢复其中包含的文件和目录。

1
tar -zxvf example.tar.gz
  • -z: 表示要使用 gzip 解压归档文件。
  • -x: 表示解压操作。
  • -v: 表示详细输出,列出被解压的文件。
  • -f example.tar.gz: 指定要解压的归档文件的名称为 example.tar.gz

指定压缩格式

tar 可以结合不同的压缩程序来创建和解压压缩归档文件。

z : 使用 gzip 压缩。

1
2
tar -czvf archive.tar.gz directory
tar -xzvf archive.tar.gz

j: 使用 bzip2 压缩。

1
2
tar -cjvf archive.tar.bz2 directory
tar -xjvf archive.tar.bz2

J: 使用 xz 压缩。

1
2
tar -cJvf archive.tar.xz directory
tar -xJvf archive.tar.xz

grep命令

常用选项:

  • -i:忽略大小写进行匹配。
  • -v:反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号。
  • -r:递归查找子目录中的文件。
  • -l:只打印匹配的文件名。
  • -c:只打印匹配的行数。

实例

1、在文件 file.txt 中查找字符串 “hello”,并打印匹配的行:

1
grep hello file.txt

2、在文件夹 dir 中递归查找所有文件中匹配正则表达式 “pattern” 的行,并打印匹配行所在的文件名和行号:

1
grep -r -n pattern dir/

3、在标准输入中查找字符串 “world”,并只打印匹配的行数:

1
echo "hello world" | grep -c world

4、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

1
grep test *file 

结果如下所示:

1
2
3
4
$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件  
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

5、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容,使用的命令为:

1
grep -r update /etc/acpi 

输出结果如下:

1
2
3
4
5
6
7
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”  
#下包含“update”的文件
/etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)
Rather than
/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of
IO.) Rather than
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update

6、反向查找。前面各个例子是查找并打印出符合条件的行,通过”-v”参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:

1
grep -v test *test*

结果如下所示:

1
2
3
4
5
6
7
8
9
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linux is a free unix-type opterating system.

egrep命令

使用正则表达式匹配文本,格式为egrep [范本模式] [文件或目录]

参数说明:

  • [范本模式] :查找的字符串规则。
  • [文件或目录] :查找的目标文件或目录。

find命令