文章目录
- Linux下基本指令
-
- [ls 指令](#ls 指令)
- [pwd&&cd 命令](#pwd&&cd 命令)
-
- pwd指令
- [cd 指令](#cd 指令)
- [touch 指令](#touch 指令)
- [mkdir 指令](#mkdir 指令)
- [rmdir 指令 && rm 指令](#rmdir 指令 && rm 指令)
- [man 指令](#man 指令)
- [cp 指令](#cp 指令)
- [less 指令](#less 指令)
- [head 指令](#head 指令)
- [date 指令](#date 指令)
- [cal 指令](#cal 指令)
- [find 指令](#find 指令)
- [which 指令](#which 指令)
- [echo 指令](#echo 指令)
- [nano 指令](#nano 指令)
- [cat 指令](#cat 指令)
- [tac 指令](#tac 指令)
- [date 指令](#date 指令)
-
- [1. 显示时间(格式化输出)](#1. 显示时间(格式化输出))
- [2. 设置系统时间](#2. 设置系统时间)
- [3. 时间戳操作](#3. 时间戳操作)
- [4. 实用示例](#4. 实用示例)
- [whereis 指令](#whereis 指令)
- [grep 指令](#grep 指令)
- [top 指令](#top 指令)
- [zip 和 unzip 指令](#zip 和 unzip 指令)
-
- [zip 命令:创建 ZIP 压缩文件](#zip 命令:创建 ZIP 压缩文件)
- [unzip 命令:解压 ZIP 文件](#unzip 命令:解压 ZIP 文件)
- [关于 rz/sz 工具(文件传输补充)](#关于 rz/sz 工具(文件传输补充))
- [File 指令](#File 指令)
- tar指令
- bc指令
- 关机
Linux下基本指令
ls 指令
先补充知识

语法 : ls [选项] [目录或文件]
功能 :对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名 以及其他信息。
常用选项:
• -l 列出文件的详细信息
• -a 列出目录下的所有文件,包括以 . 开头的隐藏文件。
和 -l组合使用,次序不影响结果
- 注意:
以.开头的文件称为隐藏文件,而ls默认不显示隐藏文件
pwd&&cd 命令
Linux理论知识:路径的认识
• Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
• 理解路径存在的意义: 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性
• 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
• 相对路径:相对于当前用户所处目录,定位文件的路径方式
• 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
• 相对路径因为它的便捷性,一般在命令行中使用较多
pwd指令
语法 : pwd
功能 :显示用户当前所在的目录

cd 指令
语法 : cd 目录名
功能 :改变工作目录。将当前工作目录改变到指定的目录下
举例 :
返回到最近访问目录

返回上级目录

快速进入自己的家目录

touch 指令
Linux理论知识:文件类型的认识

命令语法
touch [选项]... 文件...
功能说明
touch命令主要有两个功能:
- 创建新的空文件(如果文件不存在)
- 修改文件的时间戳(如果文件已存在)
常用选项
-
-a:仅更改访问时间(access time)- 示例:
touch -a file.txt只更新文件的访问时间
- 示例:
-
-m:仅更改修改时间(modification time)- 示例:
touch -m file.txt只更新文件的修改时间
- 示例:
-
-c:不创建新文件- 示例:
touch -c non_exist.txt如果文件不存在,不会创建新文件
- 示例:
-
-t:使用指定时间戳- 格式:[[CC]YY]MMDDhhmm[.ss]
- 示例:
touch -t 202312311230.59 file.txt将时间设为2023年12月31日12:30:59
-
-d:使用字符串表示的时间- 示例:
touch -d "2 days ago" file.txt将时间设为两天前
- 示例:
实用示例
- 创建普通文件
bash
touch newfile.txt # 创建单个文件
touch file1.txt file2.txt file3.txt # 同时创建多个文件
- 查看文件时间
bash
stat filename # 查看文件的详细时间信息
输出示例:
Access: 2023-11-15 10:30:00.000000000 +0800
Modify: 2023-11-15 10:30:00.000000000 +0800
Change: 2023-11-15 10:30:00.000000000 +0800
- 修改文件时间
bash
touch -a -t 202311151200.00 file.txt # 将访问时间设为2023年11月15日12:00
touch -m -d "2023-11-20 18:30" file.txt # 将修改时间设为2023年11月20日18:30
mkdir 指令
语法 : mkdir [选项] dirname...
功能 :在当前目录下创建一个名为 "dirname"的目录
常用选项 :
• -p/--parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

rmdir 指令 && rm 指令
rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除命令
语法 : rmdir [-p] [dirName]
适用对象 :具有当前目录操作权限的所有使用者
功能 :删除空目录
常用选项 :
• -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm 命令可以同时删除文件或目录
语法 : rm [-f-i-r-v] [dirName/dir]
适用对象 所有使用者
功能 :删除文件或目录
常用选项 :
• -f 即使文件属性为只读(即写保护),亦直接删除
• -i 删除前逐一询问确认
• -r 删除目录及其下所有文件

man 指令
Linux 命令的参数繁多,我们很难全部记住。此时,可以通过查看联机手册(manual pages)来获取详细的帮助信息。

语法 : man [选项] 命令
常用选项:
-k:根据关键字搜索联机帮助。num:只在第num章节查找(例如man 2 open只查看系统调用章节)。-a:显示所有章节的内容。例如,man printf默认从第一章开始搜索,找到匹配项后即停止;使用-a选项后,按下q退出当前章节,它会继续向后搜索,直到遍历完所有章节。
man 手册章节说明 :
man 手册通常分为 9 章(不同系统可能略有差异),最常用的是前三个章节:
- 普通命令 :用户可执行的命令(如
ls,cp)。 - 系统调用 :操作系统提供的底层接口(如
open,write)。通过此章节,可以方便地查到调用函数所需的头文件。 - 库函数 :C 语言标准库函数(如
printf,fread)。 - 特殊文件 :通常指
/dev目录下的设备文件。 - 文件格式 :说明配置文件的格式和字段含义(如
/etc/passwd)。 - 游戏:为游戏保留的章节,由各个游戏自行定义。
- 杂项 :包含一些宏、协议和全局变量(如
environ)的说明。 - 系统管理命令 :通常只有 root 用户才能使用的命令(如
ifconfig)。 - 内核例程:内核相关的文档。

cp 指令
cp(copy 的缩写)命令用于在 Linux 系统中复制文件或目录。
语法 : cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录。
说明:
cp指令的基本功能是复制单个文件或目录。- 如果同时指定两个或两个以上的文件或目录,并且最后一个参数是一个已存在的目录,则
cp会将前面指定的所有文件或目录复制到该目标目录中。
常用选项:
-f或--force:强制复制,如果目标文件或目录已存在,则直接覆盖,不进行任何提示。-i或--interactive:交互式复制,在覆盖已存在的目标文件之前会询问用户进行确认。-r:递归处理,复制目录时,将该目录下的所有文件及子目录一并复制。如果源文件不是目录或符号链接,则按普通文件处理。## mv 指令
mv 命令是 move 的缩写,主要用于移动文件(相当于剪切 操作)或为文件/目录重命名(move (rename) files)。该命令也常用于备份文件或目录。
语法 : mv [选项] 源文件或目录 目标文件或目录
功能说明:
- 移动文件/目录 :当第二个参数是已存在的目录 时,
mv命令会将指定的源文件或目录移动到该目标目录中。此时,源参数可以有多个。 - 重命名文件/目录 :当第二个参数是不存在的文件或目录名 ,或者是一个已存在的文件名 时,
mv命令完成重命名操作。此时,源文件或目录通常只能有一个。
常用选项:
-f:force(强制)的缩写。如果目标文件已经存在,不会询问,直接覆盖。-i:interactive(交互式)的缩写。若目标文件已存在,则会询问是否覆盖。
示例:
bash
# 1. 移动文件到目录
mv file.txt /home/user/documents/
# 2. 重命名文件
mv oldname.txt newname.txt
# 3. 移动多个文件到目录
mv file1.txt file2.txt /home/user/documents/
# 4. 强制覆盖已存在文件(不提示)
mv -f source.txt destination.txt
# 5. 交互式移动(覆盖前询问)
mv -i source.txt destination.txt
注意 :* 是通配符,表示所有文件。例如,rm test/* -rf 表示删除 test 目录下的所有文件及子目录。
less 指令
less 是一个功能强大的文件内容分页查看工具,常被视为 Linux 系统中查看文件内容的"正统"工具。与 more 命令相比,less 在浏览文件时提供了更高的灵活性。
主要特点:
- 双向浏览 :使用
more时只能向前翻页,而less支持使用PageUp、PageDown等按键向前或向后翻页,查看文件内容更加方便。 - 搜索功能丰富:不仅支持向下搜索,还支持向上搜索,便于在文件中快速定位内容。
- 无需预加载 :在打开文件时,
less不会一次性加载整个文件到内存,因此即使查看大文件也能快速启动,节省系统资源。
语法 : less [选项] 文件
功能 :
用于分页查看文件内容,支持前后翻页、搜索、跳转等操作。
常用选项:
-i:搜索时忽略大小写。-N:显示每行的行号。/字符串:向下搜索指定的字符串。?字符串:向上搜索指定的字符串。n:重复上一次搜索(与/或?相关)。N:反向重复上一次搜索(与/或?相关)。q:退出less。
基本操作示例:
-
查看文件 :
bashless filename.txt -
显示行号 :
bashless -N filename.txt -
忽略大小写搜索 :
在less界面中,先按/,输入搜索词后按Enter。使用-i选项可忽略大小写。 -
退出 :
按q键即可退出less。
与 more 的对比:
more:只能向前翻页,功能相对简单。less:支持前后翻页、搜索、跳转等,功能更全面,是查看文件内容的更佳选择。## head 指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法:
head [参数]... [文件]...
功能:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
• -n<行数> 显示的行数
head 指令

head 命令用于显示文件开头部分的内容,默认情况下会输出文件的前 10 行。它常与 tail 命令一起使用,用于快速查看文件的开头或结尾。
语法 : head [选项] [文件]...
功能 :
将指定文件的开头内容输出到标准输出(屏幕)。如果未指定文件,则从标准输入读取数据。
常用选项:
-n <行数>:指定显示文件开头的行数。例如head -n 20 file.txt会显示文件的前 20 行。-c <字节数>:指定显示文件开头的字节数。例如head -c 100 file.txt会显示文件的前 100 个字节。-q:不显示包含给定文件名的文件头。-v:总是显示包含给定文件名的文件头(默认行为)。
实用示例:
-
查看文件前 10 行(默认) :
bashhead filename.txt -
查看文件前 5 行 :
bashhead -n 5 filename.txt -
查看多个文件的开头 :
bashhead -n 3 file1.txt file2.txt会分别显示
file1.txt和file2.txt的前 3 行,并在每个文件内容前显示文件名作为分隔。 -
与管道结合使用 :
bashls -l /usr/bin | head -n 15将
ls -l命令的输出通过管道传递给head,只显示前 15 行结果。## tail 指令
tail 命令用于显示文件的末尾内容,默认输出文件的最后 10 行。它在查看日志文件、监控实时输出等场景中非常有用。
语法 : tail [选项] [文件]...
功能 :
将指定文件的末尾内容输出到标准输出。如果未指定文件,则从标准输入读取。
常用选项:
-n <行数>:指定显示文件末尾的行数。例如tail -n 20 file.txt会显示文件的最后 20 行。-f:循环读取 。此选项会持续监视文件,当文件有新增内容时,tail会实时显示出来。常用于监控正在变化的日志文件。按Ctrl+C可退出监视模式。-c <字节数>:指定显示文件末尾的字节数。-q:不显示文件名头。-v:总是显示文件名头。
实用示例:
-
查看文件最后 10 行(默认) :
bashtail filename.txt -
查看文件最后 5 行 :
bashtail -n 5 filename.txt -
实时监控日志文件(最常用) :
bashtail -f /var/log/syslog此命令会持续显示
/var/log/syslog文件的新增内容,非常适合调试和监控应用程序日志。 -
显示文件的第 180 到 200 行 :
这需要结合head和tail命令,或者使用sed。一种常见的方法是:bashsed -n '180,200p' filename.txt或者使用管道:
bashhead -n 200 filename.txt | tail -n 21解释:先用
head取出前 200 行,再用tail从这 200 行中取出最后 21 行(即第 180 到 200 行)。 -
查看多个文件的末尾 :
bashtail -n 3 file1.log file2.log会分别显示每个日志文件的最后 3 行。
与重定向和管道 :
tail 常与重定向 (>, >>) 和管道 (|) 结合使用,进行日志截取、数据筛选等操作。例如,将最近 100 条日志保存到新文件:
bash
tail -n 100 /var/log/app.log > recent.log
date 指令
指定格式显示时间: date +%Y:%m:%d
用法: date [OPTION]... [+FORMAT]
-
在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
• %H : 小时(00...23)
• %M : 分钟(00...59)
• %S : 秒(00...61)
• %X : 相当于 %H:%M:%S
• %d : 日 (01...31)
• %m : 月份 (01...12)
• %Y : 完整年份 (0000...9999)
• %F : 相当于 %Y-%m-%d
-
在设定时间方面
• date -s //设置当前时间,只有root权限才能设置,其他只能查看。
• date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
• date -s 01:01:01 //设置具体时间,不会对日期做更改
• date -s "01:01:01 2008-05-23″ //这样可以设置全部时间
• date -s "01:01:01 20080523″ //这样可以设置全部时间
• date -s "2008-05-23 01:01:01″ //这样可以设置全部时间
• date -s "20080523 01:01:01″ //这样可以设置全部时间
-
时间戳
• 时间->时间戳:date +%s
• 时间戳->时间:date -d@1508749502
• Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
cal 指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。"阳历"又名"太阳历",系以地球绕行太阳一周为一年,为西方各国所通用,故又名"西历"。
命令格式: cal 参数 [年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
• -3 显示系统前一个月,当前月,下一个月的月历
• -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
• -y 显示当前年份的日历
find 指令
find 命令是 Linux 系统中功能最强大的文件搜索工具之一,它可以在指定的目录结构中递归搜索文件,并根据多种条件执行相应的操作。
主要特点:
- 功能强大:提供了丰富的查找条件,支持按文件名、类型、大小、时间、权限等多种属性进行筛选。
- 跨文件系统 :即使系统中包含网络文件系统(如 NFS),只要用户具有相应权限,
find命令同样有效。 - 资源消耗 :由于
find需要遍历目录树,在大型文件系统(例如超过 30GB)上执行时可能会消耗较多时间和系统资源。因此,对于复杂的搜索任务,建议将其放入后台执行。
语法 : find [路径] [选项] [操作]
功能 :
在指定的目录树中查找符合条件的文件,并可对找到的文件执行特定操作(如打印、删除、执行命令等)。
常用选项:
-name <模式>:按照文件名查找文件,支持通配符(如*.txt)。-type <类型>:按文件类型查找(f普通文件,d目录,l符号链接等)。-size <大小>:按文件大小查找(如+100M表示大于 100MB)。
基本示例:
-
按名称查找文件
bashfind ~ -name test.c在用户的主目录(~ 代表用户主目录)下查找文件名严格为 test.c 的文件。当该命令执行后输出两个文件路径,这意味着在用户主目录及其子目录下,找到了两个名为 test.c 的文件,每个文件路径代表一个找到的 test.c 文件的具体位置 。
例如,可能一个文件的路径是 ~/project1/test.c,另一个文件的路径是 ~/project2/test.c,这表明在 project1 和 project2 这两个项目目录下都存在 test.c 文件。
-
查找并删除旧文件
bashfind /var/log -name "*.log" -mtime +30 -delete查找
/var/log目录下 30 天前的.log文件并删除。 -
查找并执行命令
bashfind . -type f -name "*.sh" -exec chmod +x {} \;查找当前目录下所有
.sh脚本文件,并为其添加可执行权限。
注意事项:
find命令选项繁多,功能复杂,建议通过man find查看完整手册。- 使用
-exec选项时,{}表示找到的文件名,必须以\;结尾。 - 对于大型搜索,可结合
-maxdepth限制搜索深度以提高效率。
which 指令


功能:搜索系统指定的命令
echo 指令
echo 是 Linux 中最常用的命令之一,主要用于在终端输出文本或变量的值。它通常用于脚本中显示信息、调试,或者与管道、重定向结合使用。
语法 : echo [选项] [字符串]
功能:
- 将指定的字符串输出到标准输出(通常是终端屏幕)。
- 可以显示环境变量的值。
- 常与重定向符号(
>、>>)结合,将输出写入文件。
常用选项:
-n:输出字符串后不换行。-e:启用转义字符的解释(例如\n换行、\t制表符等)。-E:禁用转义字符的解释(默认行为)。
实用示例:
-
基本输出
bashecho "Hello, Linux!"输出:
Hello, Linux! -
显示变量值
bashname="Alice" echo "My name is $name"输出:
My name is Alice -
不换行输出
bashecho -n "Processing... " echo "Done."输出:
Processing... Done.(两行合并为一行) -
使用转义字符
bashecho -e "Line 1\nLine 2\tTabbed"输出:
Line 1 Line 2 Tabbed -
输出到文件
bashecho "This is a log entry" >> log.txt将文本追加到
log.txt文件末尾。 -
显示特殊字符
bashecho "The cost is \$100"输出:
The cost is $100(\$防止$被解释为变量)。
注意事项:
- 如果字符串中包含空格或特殊字符,建议用双引号括起来。
echo是 Shell 内置命令,不同 Shell(如 bash、zsh)可能略有差异,但基本用法一致。- 在脚本中,
echo常用于提示用户、输出结果或调试信息。
nano 指令
nano 是一个简单易用的命令行文本编辑器,特别适合 Linux 新手使用。它提供了直观的界面和底部快捷键提示,无需记忆复杂的命令即可完成基本的文本编辑任务。
语法 : nano [选项] [文件名]
功能:
- 创建新文本文件或编辑已有文件。
- 提供基本的文本编辑功能,如复制、粘贴、查找、替换等。
- 支持语法高亮(需配置)。
常用选项:
-B:创建备份文件(保存时会生成以~结尾的备份文件)。-C <目录>:设置备份文件的保存目录。-i:启用自动缩进。-l:显示行号。-m:启用鼠标支持(如果终端支持)。-v:以只读模式打开文件。
基本操作 :
启动 nano 后,屏幕底部会显示常用的快捷键提示,其中 ^ 表示 Ctrl 键:
Ctrl+G:显示帮助文档。Ctrl+O:保存文件(Write Out)。Ctrl+X:退出 nano。Ctrl+K:剪切当前行(或选中的文本)。Ctrl+U:粘贴已剪切的内容。Ctrl+W:查找文本。Ctrl+\:查找并替换文本。Ctrl+C:显示当前光标位置(行号、列号)。Ctrl+_:跳转到指定行号。Ctrl+T:检查拼写(如果系统安装了拼写检查工具)。
实用示例:
-
创建或编辑文件
bashnano myfile.txt如果
myfile.txt存在则打开编辑,不存在则创建新文件。 -
显示行号
bashnano -l myfile.txt在编辑界面左侧显示行号。
-
创建备份
bashnano -B myfile.txt保存时会在同一目录下生成
myfile.txt~备份文件。 -
以只读模式打开文件
bashnano -v config.conf防止意外修改配置文件。
保存与退出:
- 按
Ctrl+O保存文件,按Enter确认文件名。 - 按
Ctrl+X退出编辑器。如果文件有未保存的更改,nano 会提示是否保存。
注意事项:
- nano 是终端下的编辑器,不支持图形界面。
- 对于大文件,nano 可能不如
vim或emacs高效,但胜在简单易用。 - 快捷键提示始终显示在屏幕底部,方便随时查看。
cat 指令
cat(concatenate 的缩写)是 Linux 中用于查看文件内容、创建文件、合并文件以及将文件内容输出到终端的常用命令。它通常用于快速查看小文件内容,或与管道、重定向结合进行文本处理。
语法 : cat [选项] [文件...]
功能:
- 显示一个或多个文件的全部内容。
- 将多个文件内容连接(concatenate)后输出。
- 创建新文件或向已有文件追加内容(通常与重定向结合使用)。
常用选项:
-n:显示行号(对所有行编号)。-b:显示行号,但不对空行编号。-s:将连续的空行压缩为一行。
实用示例:
-
查看单个文件内容
bashcat filename.txt输出文件
filename.txt的全部内容。 -
查看多个文件内容
bashcat file1.txt file2.txt依次显示
file1.txt和file2.txt的内容。 -
显示行号
bashcat -n filename.txt输出文件内容,并在每行前显示行号。
-
创建新文件
bashcat > newfile.txt输入内容后按
Ctrl+D保存,将输入内容写入newfile.txt(会覆盖已有文件)。 -
追加内容到文件
bashcat >> existing.txt输入内容后按
Ctrl+D保存,将输入内容追加到existing.txt末尾。 -
合并多个文件
bashcat part1.txt part2.txt > combined.txt将
part1.txt和part2.txt的内容合并后输出到combined.txt。 -
与管道结合使用
bashcat filename.txt | grep "keyword"将文件内容通过管道传递给
grep命令进行搜索。
注意事项:
cat适合查看较小的文本文件,对于大文件建议使用less或more命令分页查看。- 使用
cat查看二进制文件可能导致终端显示乱码。 - 与重定向符号
>和>>结合时,注意前者会覆盖目标文件,后者会追加内容。## whereis 指令
功能:用于找到程序的源、二进制文件或手册
举例:
tac 指令
tac 是 cat 命令的"反向"版本,其名称正是 cat 倒过来拼写。它的主要功能是反向显示文件内容,即从最后一行开始,逐行向前显示到第一行。这在需要查看日志文件末尾内容、或者按时间倒序排列文本时非常有用。
语法 : tac [选项] [文件...]
功能:
- 将一个或多个文件的内容按行反向输出到标准输出(屏幕)。
- 如果指定多个文件,会按文件顺序依次反向显示每个文件的内容。
- 常与管道(
|)结合,对命令输出进行反向排序。
实用示例:
-
反向显示文件内容
bashtac file.txt将
file.txt的内容从最后一行开始显示到第一行。 -
反向显示多个文件
bashtac file1.txt file2.txt先反向显示
file1.txt的内容,再反向显示file2.txt的内容。 -
与管道结合,反向显示命令输出
bashls -l | tac将
ls -l的输出行反向显示(最后一行变成第一行)。 -
使用自定义分隔符
bashecho "a:b:c:d" | tac -s ':'输出:
d:c:b:a(以冒号:作为分隔符进行反向)。 -
查看日志文件的最新条目(倒序)
bashtac /var/log/syslog | head -20查看系统日志的最后 20 条记录(从最新到最旧)。
与 cat 的对比:
cat:按正常顺序(第一行到最后一行)显示文件内容。tac:按反向顺序(最后一行到第一行)显示文件内容。
注意事项:
tac通常用于文本文件,对二进制文件无意义。- 如果文件很大,
tac会先将整个文件读入内存,因此处理超大文件时需谨慎。 - 在需要按时间倒序查看日志等场景下,
tac比先cat再通过其他工具排序更直接高效。## alias 指令

功能:设置命令的别名
date 指令
date 命令用于显示或设置系统的日期和时间。它功能强大,支持多种时间格式的输出和设置,还能处理 Unix 时间戳。
语法 : date [选项]... [+格式]
功能:
- 显示当前日期和时间(默认行为)。
- 按照指定格式输出时间。
- 设置系统时间(需要 root 权限)。
- 进行时间戳与可读时间之间的转换。
1. 显示时间(格式化输出)
使用 + 号后接格式标记来指定输出格式。常用格式标记如下:
%H:小时(00-23)%M:分钟(00-59)%S:秒(00-61,60和61用于闰秒)%X:相当于%H:%M:%S,表示本地时间表示(时:分:秒)%d:日(01-31)%m:月份(01-12)%Y:完整年份(例如 2024)%F:相当于%Y-%m-%d(ISO 8601 日期格式)
示例:
bash
# 显示当前日期和时间(默认格式)
date
# 输出:Tue May 19 12:02:16 CST 2026
# 按指定格式显示
date +"%Y-%m-%d %H:%M:%S"
# 输出:2026-05-19 12:02:16
date +%F
# 输出:2026-05-19
2. 设置系统时间
使用 -s 选项设置系统时间,通常需要 root 权限。
示例:
bash
# 设置当前日期为 2008年5月23日,时间重置为 00:00:00
sudo date -s "20080523"
# 仅设置时间(不更改日期)
sudo date -s "01:01:01"
# 设置完整的日期和时间(多种格式均可)
sudo date -s "2008-05-23 01:01:01"
sudo date -s "01:01:01 2008-05-23"
sudo date -s "20080523 01:01:01"
3. 时间戳操作
Unix 时间戳(Unix epoch, Unix time, POSIX time)是指从 1970年1月1日 00:00:00 UTC 开始所经过的秒数,不考虑闰秒。
示例:
bash
# 获取当前时间的时间戳
date +%s
# 输出:例如 1747627336
# 将时间戳转换为可读时间
date -d @1508749502
# 输出:Tue Oct 24 09:05:02 CST 2017
# 也可以使用以下格式
date --date='@1508749502'
4. 实用示例
bash
# 显示昨天的时间
date -d "yesterday"
# 显示明天的时间
date -d "tomorrow"
# 显示一周后的时间
date -d "next week"
# 显示特定格式的昨天日期
date -d "yesterday" +%F
# 输出:2026-05-18
# 计算命令执行时间(结合脚本)
start=$(date +%s)
# 执行一些命令...
sleep 2
end=$(date +%s)
echo "耗时:$((end - start)) 秒"
注意事项:
- 修改系统时间通常需要
sudo权限。 - 格式字符串中的
+是固定前缀,不是运算符。 - 时间戳转换时,
@符号是必须的。 - 对于需要高精度时间戳的场景,可以使用
date +%s%N获取纳秒级时间戳。## grep 指令
语法: grep [选项] 搜寻字符串 文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:
• -i :忽略大小写的不同,所以大小写视为相同
• -n :顺便输出行号
• -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
whereis 指令
whereis 命令用于快速定位指定命令的二进制文件、源代码文件和手册页(man page)的路径 。它比 find 命令更高效,因为它只搜索系统预定义的几个标准目录(如 /bin, /usr/bin, /usr/share/man 等),而不是遍历整个文件系统。
语法 : whereis [选项] 命令名
功能:
- 查找并显示命令的二进制文件位置。
- 查找并显示命令的源代码文件位置(如果已安装)。
- 查找并显示命令的联机帮助手册(man page)位置。
常用选项:
-b:只查找二进制文件。-m:只查找手册页文件。-s:只查找源代码文件。-B <目录列表>:限制二进制文件的搜索目录。-M <目录列表>:限制手册页的搜索目录。-S <目录列表>:限制源代码文件的搜索目录。-f:终止目录列表,并开始指定要搜索的命令名。
实用示例:
-
查找
ls命令的相关文件bashwhereis ls输出可能类似于:
ls: /bin/ls /usr/share/man/man1/ls.1.gz这表示
ls的二进制文件位于/bin/ls,其手册页位于/usr/share/man/man1/ls.1.gz。 -
只查找
gcc的二进制文件bashwhereis -b gcc输出:
gcc: /usr/bin/gcc -
只查找
python3的手册页bashwhereis -m python3输出:
python3: /usr/share/man/man1/python3.1.gz -
在指定目录中查找
bash的二进制文件bashwhereis -B /bin -f bash这将在
/bin目录中查找bash的二进制文件。
与 which 命令的区别:
which命令只显示在PATH环境变量中列出的目录里找到的第一个可执行文件(即你输入命令时实际会执行的程序)。whereis命令搜索范围更广(包括二进制文件、源代码和手册页),且不依赖于PATH,它搜索的是系统预定义的标准目录。
注意事项:
whereis通常用于查找系统命令和工具,对于用户自定义的脚本或安装在非标准位置的程序可能无法找到。- 如果某个命令没有安装源代码或手册页,则对应的字段在输出中会省略。## zip/unzip 指令
语法: zip 压缩文件.zip 目录或文件
功能:将目录或文件压缩成zip格式
常用选项
• -r:递归处理,将指定目录下的所有文件和子目录一并处理
举例
将test2目录压缩: zip test2.zip test2/*
解压到tmp目录: unzip test2.zip -d /tmp
关于 rzsz
这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过拖拽的方式将文件上传过去.
1 sudo yum/apt install -y lrzlz
现场演示windows和Linux如何互传文件
grep 指令
grep(Global Regular Expression Print)是 Linux 系统中一个功能强大的文本搜索工具,它允许用户在文件或标准输入中查找匹配指定模式(字符串或正则表达式)的行,并将匹配到的行打印出来。
语法 : grep [选项] 搜寻字符串 文件
功能 :
在指定的一个或多个文件中搜索包含给定模式(字符串或正则表达式)的行,并将这些行输出到标准输出(屏幕)。如果未指定文件,grep 将从标准输入读取数据。
常用选项:
-i:忽略大小写(ignore case),将大写和小写字母视为相同。-n:显示匹配行的行号(line number)。-v:反向选择(invert match),即输出不包含搜寻字符串的行。
实用示例:
-
基本搜索
bashgrep "error" logfile.txt在
logfile.txt中查找包含字符串 "error" 的所有行。 -
忽略大小写搜索
bashgrep -i "warning" system.log在
system.log中查找 "warning"、"Warning"、"WARNING" 等(不区分大小写)。 -
显示行号
bashgrep -n "function" script.py在
script.py中查找 "function" 并显示每匹配行所在的行号。 -
反向搜索(排除某些行)
bashgrep -v "#" config.conf输出
config.conf中所有不包含 注释符#的行(常用于查看有效配置)。 -
递归搜索目录
bashgrep -r "TODO" ./src/在
./src/目录及其所有子目录的文件中搜索 "TODO" 字符串。 -
使用管道与其他命令结合
bashps aux | grep "nginx"在进程列表(
ps aux的输出)中查找包含 "nginx" 的行,常用于检查某个进程是否在运行。 -
搜索多个文件
bashgrep "pattern" file1.txt file2.txt file3.txt在多个文件中同时搜索相同的模式。
-
使用正则表达式
bashgrep -E "^[0-9]{3}-[0-9]{2}-[0-9]{4}$" data.txt使用扩展正则表达式查找符合美国社保号格式(如
123-45-6789)的行。
注意事项:
grep默认使用基础正则表达式(BRE),若需使用更丰富的元字符(如+,?,|,()),请加上-E选项或使用egrep。- 搜索字符串若包含空格或特殊字符(如
$,*,.),建议用单引号'括起来。 grep常与管道|结合,用于过滤前一个命令的输出结果。
top 指令
top 命令是 Linux 系统中一个功能强大的实时系统监控工具。它可以动态显示系统中正在运行的进程信息,包括 CPU 占用率、内存使用情况、系统负载、运行时间等,是系统管理员进行性能分析和故障排查的常用工具。
语法 : top [选项]
功能:
- 实时显示系统整体资源使用概况(CPU、内存、交换分区等)。
- 动态列出当前系统中占用资源最多的进程列表。
- 支持交互式操作,可对进程进行排序、终止等管理。
常用选项:
-d <秒数>:指定屏幕刷新间隔时间(默认 3 秒)。-p <PID>:仅监控指定进程 ID 的进程。-u <用户名>:仅显示属于指定用户的进程。-n <次数>:指定 top 命令运行的次数后自动退出。-b:以批处理模式运行,将输出重定向到文件,适合脚本中使用。
交互式快捷键(在 top 运行界面中使用):
P:按 CPU 使用率排序(默认)。M:按内存使用率排序。T:按进程运行时间排序。k:终止指定 PID 的进程(会提示输入 PID 和信号)。q:退出 top 程序。1:切换显示所有 CPU 核心的详细使用情况。
实用示例:
-
启动 top(默认 3 秒刷新)
bashtop -
每 5 秒刷新一次
bashtop -d 5 -
仅监控进程 ID 为 1234 的进程
bashtop -p 1234 -
以批处理模式运行,输出到文件
bashtop -b -n 1 > system_snapshot.txt将当前系统进程快照保存到文件。
输出信息解读:
- 第一行:系统运行时间、登录用户数、系统平均负载(1分钟、5分钟、15分钟)。
- 第二行:进程总数、运行中进程数、睡眠进程数、停止进程数、僵尸进程数。
- 第三行:CPU 使用率统计(用户空间、系统空间、空闲、等待 I/O 等)。
- 第四行:物理内存使用情况(总量、已用、空闲、缓存)。
- 第五行:交换分区使用情况。
- 下方列表:各进程的详细信息(PID、用户、CPU%、内存%、运行时间、命令等)。
注意事项:
top命令默认按 CPU 使用率降序排列进程。- 僵尸进程(Zombie)过多可能表示有进程未正常结束,需要关注。
- 系统平均负载(Load Average)若持续高于 CPU 核心数,表示系统可能过载。
zip 和 unzip 指令
zip 和 unzip 是 Linux 系统中用于处理 ZIP 压缩格式文件的常用命令。ZIP 是一种广泛使用的跨平台压缩格式,能够将多个文件或目录打包并压缩为单个 .zip 文件,便于存储和传输。
zip 命令:创建 ZIP 压缩文件
下载指令
cpp
centos:yum install zip unzip
ubuntu:apt install zip unzip
语法 : zip [选项] 压缩文件名.zip 文件或目录...
功能 :
将指定的文件或目录压缩成 ZIP 格式的归档文件。
常用选项:
-r:递归处理。当压缩对象是目录时,使用此选项可以递归地压缩该目录下的所有文件和子目录。
实用示例:
-
压缩单个文件
bashzip archive.zip file.txt将
file.txt压缩为archive.zip。 -
压缩整个目录(递归)
bashzip -r project.zip /path/to/project/将
/path/to/project/目录及其所有内容压缩为project.zip。 -
压缩多个指定文件
bashzip images.zip pic1.jpg pic2.png pic3.gif将三个图片文件打包压缩为
images.zip。 -
创建加密的 ZIP 文件
bashzip -e secret.zip confidential.doc压缩
confidential.doc为secret.zip,并设置解压密码。
unzip 命令:解压 ZIP 文件
语法 : unzip [选项] 压缩文件名.zip [-d 目标目录]
功能 :
解压 ZIP 格式的压缩文件,将其中包含的文件提取到当前目录或指定目录。
常用选项:
-d <目录>:指定解压目标目录。如果目录不存在,unzip会尝试创建它。-l:列表查看。不解压文件,仅列出压缩包内包含的文件列表。-o:覆盖解压。不询问用户,直接覆盖已存在的同名文件。-n:不覆盖解压。跳过已存在的文件,不进行覆盖。
实用示例:
-
解压到当前目录
bashunzip archive.zip -
解压到指定目录
bashunzip archive.zip -d /tmp/extract_here/将
archive.zip解压到/tmp/extract_here/目录下。 -
仅查看压缩包内容(不解压)
bashunzip -l archive.zip -
解压加密的 ZIP 文件
bashunzip secret.zip执行后会提示输入解压密码。
关于 rz/sz 工具(文件传输补充)
rz 和 sz 是 Linux 下与终端(如 XShell、SecureCRT)配合使用的文件传输工具,常用于在本地 Windows 机器和远程 Linux 服务器之间方便地传输文件。
sz(send ZMODEM):将选定的文件从 Linux 服务器发送(下载)到本地 Windows 机器。rz(receive ZMODEM):将文件从本地 Windows 机器上传到 Linux 服务器。
安装方法(以常见的包管理器为例):
bash
# 对于基于 Debian/Ubuntu 的系统
apt install -y lrzsz
# 对于基于 RHEL/CentOS 的系统
yum install -y lrzsz
基本使用 :
安装完成后,在支持 ZMODEM 协议的终端中:
- 上传文件到服务器 :在 Linux 命令行输入
rz,终端会弹出文件选择对话框,选择本地文件即可上传。 - 从服务器下载文件 :在 Linux 命令行输入
sz 文件名,终端会弹出对话框让你选择本地保存位置。
注意 :rz/sz 依赖于终端对 ZMODEM 协议的支持,并非所有终端模拟器都默认启用。主流的 XShell、SecureCRT、MobaXterm 等通常都支持。
File 指令

file 命令用于检测给定文件的类型。它通过分析文件的内容(而不是仅依赖文件扩展名)来判断文件是文本文件、二进制可执行文件、压缩文件、数据文件还是其他特殊格式。这对于处理未知文件或验证文件格式非常有用。
语法 : file [选项] 文件...
功能:
- 确定一个或多个文件的类型。
- 对于符号链接,默认会跟随链接并报告目标文件的类型。
- 输出人类可读的描述,例如 "ASCII text", "ELF 64-bit LSB executable", "Zip archive data" 等。
常用选项:
-b:简洁模式。输出时不显示文件名,只显示文件类型描述。-i:输出 MIME 类型字符串(如text/plain; charset=us-ascii),而不是人类可读的描述。-L:跟随符号链接。直接检查符号链接指向的目标文件(这是默认行为)。-h或--no-dereference:不跟随符号链接。报告符号链接本身的信息(如 "symbolic link to /usr/bin/bash")。-z:尝试查看压缩文件内部,并报告压缩包内文件的类型。
实用示例:
-
检查普通文件类型
bashfile /etc/passwd输出:
/etc/passwd: ASCII text -
检查可执行文件类型
bashfile /bin/ls输出:
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=..., for GNU/Linux 3.2.0, stripped
注意事项:
file命令的判断基于文件开头的**魔数(magic number)**和内容特征,因此非常可靠。- 对于纯文本文件,它还能尝试猜测文本的编码(如 UTF-8, ISO-8859-1)。
- 它是系统管理员和开发者在处理未知文件时的必备诊断工具。## tar 指令(重要)
tar指令

tar 命令是 Linux 中用于打包和归档文件的核心工具,其名称来源于 "Tape ARchive"(磁带归档)。它可以将多个文件或目录打包成一个单独的归档文件(通常称为 tarball),并且可以配合压缩程序(如 gzip、bzip2)进行压缩,便于备份、传输和分发。
语法 : tar [选项] 文件或目录...
核心功能:
- 打包(归档) :将多个文件/目录合并为一个
.tar文件。 - 解包(提取) :从
.tar归档中恢复原始文件。 - 压缩/解压 :配合压缩过滤器(如
-z,-j)直接创建或解压压缩归档。 - 列出内容:查看归档文件中包含哪些文件,而无需解压。
常用选项(必须熟记):
-c:创建新的归档文件(create)。-x:提取归档文件中的内容(extract)。-t:列出归档文件中的内容列表(list)。-z:通过 gzip 进行压缩或解压。通常与-c或-x联用,处理.tar.gz或.tgz文件。-j:通过 bzip2 进行压缩或解压。通常与-c或-x联用,处理.tar.bz2文件。-J:通过 xz 进行压缩或解压。处理.tar.xz文件,压缩率通常更高。-v:详细模式,显示正在处理的文件列表(verbose)。-f:指定归档文件名。此选项后必须紧跟文件名。这是最关键的选项之一。-C:改变至目录。在解压时,指定目标目录。
选项组合记忆口诀:
- 创建归档 :
tar -cvf - 查看内容 :
tar -tvf - 提取归档 :
tar -xvf - 压缩归档 :加上
-z(gzip),-j(bzip2),-J(xz)
实用示例:
-
打包目录(不压缩)
bashtar -cvf project_backup.tar /home/user/project/将
/home/user/project/目录打包为project_backup.tar。 -
打包并压缩(gzip)
bashtar -zcvf project_backup.tar.gz /home/user/project/ # 或 tar -cvzf project_backup.tgz /home/user/project/打包并使用 gzip 压缩,生成
project_backup.tar.gz或.tgz。 -
打包并压缩(bzip2,压缩率更高)
bashtar -jcvf project_backup.tar.bz2 /home/user/project/打包并使用 bzip2 压缩,生成
project_backup.tar.bz2。 -
查看压缩包内容
bashtar -ztvf project_backup.tar.gz列出
project_backup.tar.gz中的所有文件(使用-z因为这是 gzip 压缩的)。 -
解压到当前目录
bashtar -zxvf project_backup.tar.gz解压 gzip 压缩的归档文件到当前目录。
-
解压到指定目录
bashtar -zxvf project_backup.tar.gz -C /opt/restored_project/将归档文件解压到
/opt/restored_project/目录。-C选项的目标目录必须已存在。 -
仅解压特定文件
bashtar -zxvf project_backup.tar.gz path/to/important.conf仅从归档中提取
path/to/important.conf文件。 -
保留文件权限(常用于系统备份/恢复)
bashtar -zxvpf system_backup.tar.gz -C /解压时保留文件的原始权限和属性,并提取到根目录
/。 -
创建归档时排除某些文件
bashtar -zcvf backup.tar.gz --exclude="*.tmp" --exclude="logs/" /home/user/data/打包
/home/user/data/目录,但排除所有.tmp文件和logs/子目录。 -
追加文件到现有归档
bashtar -rvf existing.tar newfile.txt将
newfile.txt追加到existing.tar归档的末尾。注意 :此操作不支持压缩的归档(如.tar.gz)。
注意事项:
- 顺序重要 :
-f选项必须紧跟指定的文件名。习惯上把-f放在选项串的最后。 - 压缩格式识别 :通常通过文件扩展名选择对应选项:
.tar->-cvf/-xvf.tar.gz或.tgz->-zcvf/-zxvf.tar.bz2->-jcvf/-jxvf.tar.xz->-Jcvf/-Jxvf
- 安全警告 :解压来自不受信任来源的 tar 包时需谨慎,尤其是使用
-p(保留权限)或解压到系统目录时,可能被恶意文件覆盖。 - 绝对路径问题 :如果用绝对路径(如
/etc/passwd)创建归档,解压时可能会显示tar: Removing leading '/' from member names警告,这是安全特性,防止覆盖系统关键文件。建议在打包时先进入目录再使用相对路径。

bc指令


关机
语法:shutdown 选项]
常⻅选项:
• -h:将系统的服务停掉后,⽴即关机。
• -r:在将系统的服务停掉之后就重新启动
• -t sec:-t 后⾯加秒数,亦即『过⼏秒后关机』的意思



