more 指令
功能 :类似 cat,对文件或其他输出进行分页显示。
语法 :more [选项] 文件名
常用选项
-n:指定输出行数(例如more -10 file.txt每次显示10行)。q:在查看界面按下q键即可退出。
举例
bash
# 生成一个2000多行的测试文件
cnt=0; while [ $ cnt -le 2000 ]; do echo "hello bite"; let cnt++; done > temp.txt
# 使用 more 指定每次输出 10 行
more -10 temp.txt
less 指令
功能:Linux 正统且功能极其强大的分页查看工具。
特点:
- 浏览更灵活 :相比
more更有弹性,支持[PageUp]/[PageDown]随意向前或向后翻页。 - 性能极佳:在查看之前不会加载整个文件,打开超大文件时速度极快。
- 搜索强大:拥有强大的搜索功能,不仅支持向下搜索,也支持向上搜索。
语法 :less [参数] 文件
常用选项与操作
| 选项/按键 | 功能说明 |
|---|---|
-i |
搜索时忽略大小写 |
-N |
显示每行的行号 |
/字符串 |
向下搜索"字符串" |
?字符串 |
向上搜索"字符串" |
n |
重复前一个搜索(与 / 或 ? 配合) |
N |
反向重复前一个搜索 |
q |
退出 less 界面 |
head 指令
功能 :用来显示档案的开头至标准输出中(常与 tail 指令搭配使用)。
默认行为 :默认打印其相应文件的前 10 行。
语法 :head [参数]... [文件]...
常用选项
-n <行数>:指定显示的行数(也可以简写为-行数)。
常用实例
bash
# 默认显示文件的前 10 行
head filename.txt
# 指定显示文件的前 5 行(两种写法效果相同)
head -n 5 filename.txt
head -5 filename.txt
tail 指令
功能:用于显示指定文件的末尾内容,不指定文件时则处理标准输入。常用于查看日志文件。
语法 :tail [参数] [文件]
常用选项
-n <行数>:指定显示的行数(也可以简写为-行数)。-f:循环读取(实时监控),常用于动态显示日志文件的更新。
常用实例
bash
# 默认显示文件的最后 10 行
tail filename.log
# 指定显示文件的最后 20 行(两种写法效果相同)
tail -n 20 filename.log
tail -20 filename.log
# 实时监控文件末尾的新增内容(按 Ctrl+C 退出)
tail -f filename.log
date 指令
功能:显示或设置系统的日期和时间。
语法 :date [OPTION]... [+FORMAT]
1. 指定格式显示时间
使用者可以通过 + 号后接格式标记来定制时间的显示方式。
常用格式标记:
%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
常用实例:
bash
# 指定格式显示时间(例如:2026:05:19)
date +%Y:%m:%d
# 显示完整日期和时间(例如:2026-05-19 22:25:19)
date +"%Y-%m-%d %H:%M:%S"
2. 设定系统时间
注意 :设置系统时间需要 root 权限,普通用户只能查看。
常用实例:
bash
# 设置当前时间(仅 root 可操作)
date -s "2026-05-19 22:25:19"
# 仅设置日期(时间会重置为 00:00:00)
date -s 20260519
# 仅设置时间(日期保持不变)
date -s 22:25:19
# 设置完整的日期和时间(支持多种格式组合)
date -s "01:01:01 2026-05-19"
date -s "20260519 01:01:01"
3. 时间戳操作
什么是 Unix 时间戳:从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
常用实例:
bash
# 将当前时间转换为时间戳
date +%s
# 将指定的时间戳转换为可读时间
date -d @1508749502
cal 指令
功能 :用来显示公历(阳历)日历。
命令格式 :cal [参数] [年份]
常用选项
-3:显示系统前一个月、当前月、下一个月的月历。-j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)。-y:显示当前年份的日历。
常用实例
bash
# 显示当前月份的日历
cal
# 显示指定年份的日历(例如2026年)
cal 2026
# 显示指定月份和年份的日历(例如2026年5月)
cal 5 2026
# 显示前一个月、当前月、下一个月的月历
cal -3
# 显示当前年份的完整日历
cal -y
find 指令
功能 :用于在文件树(目录结构)中查找文件,并可以执行相应的处理操作。
语法 :find [路径] [选项] [表达式]
核心特点
- 功能强大:提供了非常多的查找条件(如文件名、大小、时间、权限等),是 Linux 下最棒的命令之一。
- 实时查找:直接遍历目录结构,结果反映当前文件系统的真实状态。
- 跨文件系统:即使在网络文件系统 (NFS) 中同样有效(需具备相应权限)。
- 资源消耗:遍历大型文件系统(如超过 30GB)可能非常消耗资源且耗时,很多人倾向于将其放在后台执行。
常用选项与实例
-name:按照文件名查找文件(区分大小写)。-iname:按照文件名查找文件(忽略大小写)。-type:按文件类型查找(f=普通文件,d=目录,l=软链接)。-size:按文件大小查找(+大于,-小于, 无符号等于;单位如k,M,G)。-maxdepth:限制查找的目录深度。
常用实例:
bash
# 在当前目录及子目录中,按文件名精确查找
find . -name "test.txt"
# 在当前目录查找所有以 .log 结尾的文件(忽略大小写)
find . -iname "*.log"
# 查找指定目录下的所有普通文件
find /var/log -type f
# 查找当前目录下大于 100M 的文件
find . -size +100M
# 只在当前目录查找(不进入子目录),查找名为 a.txt 的文件
find . -maxdepth 1 -name "a.txt"
which 指令
功能 :用于在系统环境变量 $PATH 指定的路径中,查找并显示指定命令的绝对路径。
语法 :which [选项] 命令
常用选项
-a:显示所有匹配的可执行文件路径(默认只显示第一个找到的)。-s:不输出任何错误信息,常用于脚本中的条件判断。
常用实例
bash
# 查找 ls 命令的绝对路径
which ls
# 查找系统中所有名为 python 的可执行文件路径
which -a python
# 批量查找多个命令的路径
which ls cat cp
whereis 指令
功能 :用于定位程序的二进制文件、源代码文件以及帮助手册(man pages)的位置。
语法 :whereis [选项] 文件名
核心特点
- 查找范围固定 :
whereis不会全盘搜索,而是只在 Linux 的标准系统目录(如/bin,/usr/bin,/usr/share/man等)中查找,因此速度非常快。 - 结果更全面 :相比
which只能找到可执行文件,whereis能同时找到命令相关的文档和源码。
常用选项
-b:只查找二进制文件(Binary)。-m:只查找帮助手册文件(Manual)。-s:只查找源代码文件(Source)。
常用实例
bash
# 查找 ls 命令的所有相关文件(二进制、手册等)
whereis ls
# 输出示例:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
# 查找 libc.so 库文件及相关手册
whereis libc.so
# 输出示例:libc: /usr/lib64/libc.so /usr/share/man/man7/libc.7.gz
# 只查找二进制文件
whereis -b ls
alias 指令
功能 :用于设置命令的别名。可以将一串较长或复杂的命令简化为一个简短的自定义命令,从而提高日常工作效率。
语法 :alias 别名='实际执行的命令'
常用实例
bash
# 设置一个名为 hello 的别名,实际执行 'ls -a -l -n'
alias hello='ls -a -l -n'
# 使用 which 查看别名,可以看到它对应的实际命令
which hello
# 输出示例:alias hello='ls -a -l -n'
# 直接使用别名,效果等同于输入了完整的 ls 命令
hello
grep 指令
功能 :在文件中搜索指定的字符串(或正则表达式),并将包含该字符串的行打印出来。
语法 :grep [选项] 搜寻字符串 文件
常用选项
-i:忽略大小写,将大写和小写视为相同进行匹配。-n:在显示匹配行的同时,顺便输出该行的行号。-v:反向选择,显示出不包含"搜寻字符串"内容的那些行。
常用实例
bash
# 在指定文件中搜索包含 "error" 的行
grep "error" log.txt
# 忽略大小写,搜索包含 "warning" 的行
grep -i "warning" log.txt
# 搜索包含 "root" 的行,并显示行号
grep -n "root" /etc/passwd
# 反向选择,显示文件中所有不包含 "debug" 的行
grep -v "debug" app.log
top 指令
功能:实时动态查看系统的整体运行情况,包括 CPU、内存、进程等信息(类似 Windows 的任务管理器)。
常用选项:
-d:指定刷新的时间间隔(单位为秒)。-n:指定刷新的次数(达到次数后自动退出)。
常用实例:
bash
# 每隔 1 秒刷新一次,总共刷新 5 次后自动退出
top -d 1 -n 5
zip / unzip 指令
功能:
zip:将目录或文件压缩成.zip格式(.zip格式兼容性极好,在 Windows 和 Linux 之间传输文件非常方便)。unzip:将.zip格式的压缩包进行解压。
常用选项:
-r:递归处理,将指定目录下的所有文件和子目录一并打包压缩。-d:(unzip 专属)指定解压的目标目录。
常用实例:
bash
# 将 test2 目录压缩成 test2.zip(注意:压缩目录时必须加 -r)
zip -r test2.zip test2
# 将压缩包解压到当前目录
unzip test2.zip
# 将压缩包解压到指定的 /tmp 目录
unzip test2.zip -d /tmp
rzsz 工具 (lrzsz)
功能:用于 Windows 机器和远端的 Linux 机器通过支持 ZMODEM 协议的终端(如 XShell、SecureCRT)快速传输文件。
安装命令:
- CentOS/RHEL 系统:
sudo yum install -y lrzsz - Ubuntu/Debian 系统:
sudo apt install -y lrzsz
核心指令:
rz(Receive):从 Windows 上传文件到 Linux。执行后通常会弹出文件选择窗口,选中文件即可上传到当前目录。sz(Send):从 Linux 下载文件到 Windows。执行sz 文件名后,会弹出窗口让你选择文件保存在 Windows 上的位置。
常用实例:
bash
# 弹出窗口,选择 Windows 上的文件上传到 Linux 当前目录
rz
# 将 Linux 上的 log.txt 文件下载到 Windows 本地
sz log.txt
tar 指令
功能:Linux 下最常用的打包、压缩与解压工具。它可以将多个文件或目录打包成一个文件(归档),并可以调用压缩工具(如 gzip, bzip2)进行压缩。
核心参数:
-c:建立新的打包/压缩文件(Create)。-x:解开打包/压缩文件(Extract)。-t:查看打包/压缩文件里面有哪些文件(不实际解压)。-z:调用 gzip 属性进行压缩或解压(处理 .tar.gz 或 .tgz 格式)。-j:调用 bzip2 属性进行压缩或解压(处理 .tar.bz2 格式)。-v:在压缩/解压过程中显示详细处理的文件信息(Verbose)。-f:指定打包/压缩的文件名(注意:-f 后面必须紧跟文件名,不能再加其他参数)。-C:解压到指定的目录(Change directory)。-p:保留文件的原始权限属性(常用于系统备份)。
常用实例:
bash
# 1. 仅打包,不压缩(生成 .tar)
tar -cvf etc.tar /etc
# 2. 打包并用 gzip 压缩(生成 .tar.gz,最常用)
tar -zcvf etc.tar.gz /etc
# 3. 打包并用 bzip2 压缩(生成 .tar.bz2,压缩率通常更高)
tar -jcvf etc.tar.bz2 /etc
# 4. 查看压缩包内的文件列表
tar -ztvf etc.tar.gz
# 5. 将压缩包解压到当前目录
tar -zxvf etc.tar.gz
# 6. 将压缩包解压到指定的 /tmp 目录
tar -zxvf etc.tar.gz -C /tmp
# 7. 备份并保留文件的原始权限(修正了原文笔误,保留权限用 -p)
tar -zcvpf etc_backup.tar.gz /etc
# 8. 排除特定目录进行打包(例如备份 /home 和 /etc,但排除 /home/dmtsai)
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
参数顺序:-f 参数一定要放在所有参数的最后,并且后面直接跟文件名。例如 tar -zcvf 文件名.tar.gz 目录 是正确的,写成 tar -zcfv 就会报错。
绝对路径警告:使用绝对路径(如 /etc)打包时,tar 默认会提示 tar: Removing leading '/' from member names,这是为了安全起见,自动去掉了根目录的 /,解压时不会产生路径冲突。
解压单文件:如果只想解压压缩包里的某一个文件,可以先用 tar -ztvf 查看文件名,然后执行 tar -zxvf 压缩包名 具体的文件路径。
bc 指令
功能 :Linux 下的任意精度计算器工具。由于 Shell 原生的算术运算不支持小数,bc 常被用来进行方便的浮点运算,也支持基本的四则运算、科学计算甚至简单的编程逻辑。
常用实例:
bash
# 1. 基础浮点运算(最常用的场景)
# scale=2 表示保留小数点后2位
echo "scale=2; 10 / 3" | bc
# 输出:3.33
# 2. 简单的整数运算
echo "5 * 4 + 10" | bc
# 输出:30
# 3. 使用数学函数(如开平方、三角函数等)
# 需要加上 -l 参数来加载标准数学库
echo "scale=4; sqrt(10)" | bc -l
# 输出:3.1622
# 4. 进制转换(例如将十进制的 128 转换为十六进制)
echo "obase=16; 128" | bc
# 输出:80
# 5. 进入交互模式
bc
# 输入后直接回车,会进入类似计算器的交互界面,可以直接输入算式计算,输入 quit 退出
uname 指令
功能 :获取电脑和操作系统的相关信息(如内核版本、硬件架构等)。
语法 :uname [选项]
常用选项:
-a或--all:详细输出所有信息(包括内核名称、主机名、内核版本号、硬件架构、操作系统名称等)。-r:仅查看内核发行版本号(排查驱动或软件兼容性时非常常用)。-m:查看硬件架构(判断系统是 32 位还是 64 位,如 x86_64 表示 64 位)。
常用实例:
bash
# 查看系统所有详细信息
uname -a
# 仅查看内核版本
uname -r
# 查看硬件架构(判断是 32 位还是 64 位系统)
uname -m
Linux 终端重要热键
-
[Tab] 按键 :具有『命令补全』和『文件/路径补齐』的功能。
(在 Linux 下使用频率最高的按键,敲几个字母按 Tab 就能自动补全命令或文件名,省时又不易出错。)
-
[Ctrl] + c 按键 :强制让当前的程序『停掉』。
(当程序卡死、或者输出太多你想强行终止时,直接按它。)
-
[Ctrl] + d 按键 :通常代表『键盘输入结束 (EOF - End Of File)』。
(常用于退出当前的交互环境,比如退出
bc计算器、退出 Python 环境;在空行输入时,它的作用等同于exit,可以直接退出当前终端。)