Linux命令行的核心理念与实用指南(进阶版)
在Linux系统的操作体系中,命令行是开发者、运维人员与系统交互的“桥梁”。相较于图形界面,命令行虽看似门槛更高,却能以更灵活的方式调用系统资源、执行复杂任务,尤其在服务器管理、批量操作、自动化脚本编写等场景中,其高效性无可替代。本文将从核心理念切入,逐层拆解基础指令、进阶用法、专项工具与实用技巧,帮助不同阶段的使用者夯实基础、突破瓶颈,真正掌握Linux命令行的“精髓”。
一、Linux命令行的三大核心理念:理解设计逻辑
要熟练使用Linux命令行,首先需理解其底层设计逻辑——这三大核心理念贯穿了所有命令的使用场景,是高效操作的“底层思维”。
1. 一切皆文件:Linux的“统一抽象”哲学
Linux系统将硬件设备、进程、目录、网络接口等几乎所有资源都抽象为“文件”,并通过统一的文件系统层级(如/dev
管理硬件、/proc
管理进程、/home
存储用户数据)进行组织。这种设计的优势在于:
- 操作一致性:无论操作的是普通文本文件(如
/etc/profile
)、硬件设备(如/dev/sda
表示第一块硬盘),还是进程信息(如/proc/1234/status
表示PID为1234的进程状态),都可使用cat
(查看)、chmod
(修改权限)、rm
(删除)等相同命令,无需记忆不同类型资源的专属操作方式。 - 示例场景:查看系统CPU信息时,无需专门工具,直接执行
cat /proc/cpuinfo
即可;调整声卡音量,可通过修改/dev/snd/
目录下的设备文件实现。
2. 小程序,大组合:“模块化”解决复杂问题
Linux的命令设计遵循“单一职责原则”——每个命令只专注于一个核心功能,但通过“管道(|
)”和“重定向(>
/>>
/<
)”机制,可将多个简单命令组合,实现复杂需求。这种“模块化”思维的优势在于:
- 灵活性高:无需为特定场景开发专用工具,只需组合现有命令。例如,“统计日志中包含‘error’的行数”,可通过
grep "error" app.log | wc -l
实现(grep
筛选内容,wc -l
统计行数)。 - 学习成本低:掌握20-30个核心命令,即可应对80%以上的日常场景。
- 常用组合示例:
- 查找当前目录下近7天修改过的
.log
文件,并显示文件大小:find . -name "*.log" -mtime -7 | xargs ls -lh
- 查看系统中占用CPU最高的5个进程:
ps aux | sort -k3nr | head -n5
- 查找当前目录下近7天修改过的
3. 纯文本的力量:配置与日志的“友好格式”
Linux的配置文件(如/etc/sysctl.conf
)、日志文件(如/var/log/messages
)几乎都以纯文本格式存储,而非二进制格式。这种设计的核心优势在于:
- 易编辑、易解析:无需专用编辑器,通过
vim
、nano
等命令即可修改配置;同时,命令行工具(如grep
、sed
、awk
)可直接处理文本内容,便于日志分析、配置批量修改。 - 跨平台兼容性:纯文本文件可在不同Linux发行版(如Ubuntu、CentOS)、甚至不同操作系统(如Windows、macOS)间无缝传输,无需担心格式兼容问题。
- 示例场景:修改SSH服务端口时,直接编辑
/etc/ssh/sshd_config
文件(纯文本),将Port 22
改为Port 2222
,重启服务即可生效。
二、基础必备指令:从“会用”到“用熟”
以下15个基础指令是Linux命令行的“基石”,涵盖目录操作、文件管理、权限控制等核心场景。本节不仅介绍功能,更会拆解“常用选项”“易错点”和“实战示例”,帮助读者规避误区、高效使用。
1. 目录操作类指令
(1)ls
:列出目录内容
- 核心功能:查看当前或指定目录下的文件/目录列表,是最常用的“浏览”命令。
- 常用选项:
-l
(long):以“长格式”显示,包含文件权限、所有者、大小、修改时间等详细信息(推荐日常使用)。-a
(all):显示所有文件/目录,包括以.
开头的隐藏文件(如.bashrc
、.gitignore
)。-R
(recursive):递归列出子目录内容,适合查看多层级目录结构。-h
(human-readable):以“人类可读格式”显示文件大小(如1K
、2M
、3G
),搭配-l
使用(ls -lh
)。
- 实战示例:
- 查看
/home/user/docs
目录的详细信息(含隐藏文件):ls -la /home/user/docs
- 递归查看
/var/log
目录下所有.log
文件:ls -lR /var/log | grep "\.log$"
- 查看
- 易错点:
ls -l
显示的“大小”字段,对目录而言表示“目录项占用的磁盘块大小”,而非目录内所有文件的总大小(需用du -sh 目录名
查看目录总大小)。
(2)pwd
:显示当前工作目录
- 核心功能:查看当前所在的绝对路径,避免“迷路”(尤其在多层级目录中)。
- 常用场景:执行
cd
切换目录后,或在脚本中确认当前路径时使用。 - 示例:若当前在
/home/user/project/src
目录,执行pwd
会输出:/home/user/project/src
。
(3)cd
:切换工作目录
- 核心功能:切换到指定目录,是“导航”目录的核心命令。
- 常用用法:
- 绝对路径切换:从根目录(
/
)开始指定路径,如cd /home/user/docs
。 - 相对路径切换:基于当前目录,如
cd ../docs
(..
表示上一级目录)、cd ./src
(.
表示当前目录,可省略)。 - 快捷切换:
cd ~
(切换到当前用户的主目录,如/home/user
)、cd -
(切换到上一次所在的目录,类似“返回”功能)。
- 绝对路径切换:从根目录(
- 实战示例:
- 从
/home/user
切换到/var/log
:cd /var/log
- 从
/home/user/project/src
切换到/home/user/project/docs
:cd ../docs
- 切换到上一次所在的目录:
cd -
(若上一次在/home/user
,执行后会返回该目录)。
- 从
(4)mkdir
:创建目录
- 核心功能:创建一个或多个目录,支持递归创建多层级目录。
- 常用选项:
-p
(parents):递归创建父目录(若父目录不存在),是最常用的选项。例如,创建project/docs/api
时,若project
和project/docs
不存在,mkdir -p
会自动创建这两个父目录。-m
(mode):创建目录时指定权限(如mkdir -m 755 docs
,表示目录权限为rwxr-xr-x
),默认权限由umask
决定(通常为755
)。
- 实战示例:
- 在当前目录创建
test
目录:mkdir test
- 递归创建
work/project/backend
目录:mkdir -p work/project/backend
- 创建权限为
700
(仅所有者可读写执行)的private
目录:mkdir -m 700 private
。
- 在当前目录创建
2. 文件操作类指令
(1)touch
:创建空文件或修改文件时间
- 核心功能:有两个常用场景:① 创建空文件;② 修改文件的“访问时间”(atime)和“修改时间”(mtime)(若文件已存在)。
- 常用选项:
-d
(date):指定文件的时间,格式支持“2025-09-12”“1 week ago”等。-m
(modify):仅修改文件的“修改时间”(mtime)。-a
(access):仅修改文件的“访问时间”(atime)。
- 实战示例:
- 在当前目录创建
note.txt
空文件:touch note.txt
- 创建
report.md
,并将其时间设为2025年9月10日:touch -d "2025-09-10" report.md
- 修改
log.txt
的访问时间为当前时间(文件内容不变):touch -a log.txt
。
- 在当前目录创建
(2)rm
:删除文件或目录
- 核心功能:删除文件或目录,是“风险较高”的命令(删除后难以恢复),需谨慎使用。
- 常用选项:
-i
(interactive):删除前提示确认(推荐日常使用,避免误删),如rm -i file.txt
会提示“rm: remove regular file ‘file.txt’? ”,输入y
确认删除。-r
(recursive):递归删除目录及其内所有文件/子目录(删除目录必须用此选项),如rm -r docs
会删除docs
目录及其中所有内容。-f
(force):强制删除,不提示确认(即使文件不存在也不报错),谨慎使用(如rm -rf dir
会强制删除dir
目录,无法恢复)。
- 实战示例:
- 交互式删除
old.txt
文件:rm -i old.txt
- 递归删除
temp
目录(含确认提示):rm -ir temp
- 强制删除
backup
目录(无提示,慎用):rm -rf backup
。
- 交互式删除
- 安全建议:避免直接使用
rm -rf /
(会删除根目录所有文件,导致系统崩溃);删除重要文件前,建议先通过ls
确认文件路径,或使用mv
将文件移到trash
(回收站)目录(需手动配置)。
(3)cp
:复制文件或目录
- 核心功能:将文件/目录从“源路径”复制到“目标路径”,支持批量复制。
- 常用选项:
-i
(interactive):目标文件已存在时,提示是否覆盖(推荐使用,避免覆盖重要文件)。-r
(recursive):递归复制目录及其内所有内容(复制目录必须用此选项)。-p
(preserve):保留源文件的权限、时间戳等属性(如复制配置文件时,需保留原权限)。-a
(archive):等同于-dR --preserve=all
,适合复制目录(保留所有属性,包括符号链接),常用于备份。
- 实战示例:
- 将
note.txt
复制到docs
目录:cp note.txt docs/
(若docs
不存在,会将note.txt
重命名为docs
;若docs
存在,会复制到docs/note.txt
)。 - 递归复制
src
目录到backup
目录(保留属性):cp -a src/ backup/src_backup
。 - 交互式复制
config.conf
到/etc
目录(避免覆盖现有文件):cp -i config.conf /etc/
。
- 将
(4)mv
:移动文件/目录或重命名
- 核心功能:有两个常用场景:① 移动文件/目录到指定路径;② 重命名文件/目录(源路径和目标路径在同一目录时)。
- 常用选项:
-i
(interactive):目标文件已存在时,提示是否覆盖(推荐使用)。-v
(verbose):显示移动过程的详细信息(如“renamed ‘old.txt’ -> ‘new.txt’”)。
- 实战示例:
- 将
report.md
重命名为report_202509.md
(同一目录):mv report.md report_202509.md
。 - 将
docs
目录移动到work
目录:mv docs/ work/
(若work/docs
不存在,直接移动;若存在,会将docs
放入work/docs
下)。 - 交互式移动
data.csv
到/var/data
目录:mv -i data.csv /var/data/
。
- 将
(5)cat
/tac
:查看文件内容(正序/倒序)
- 核心功能:
cat
:正序查看文件内容(适合查看小文件,如配置文件片段),也可用于合并文件(如cat file1.txt file2.txt > combined.txt
)。tac
:倒序查看文件内容(从最后一行开始显示,适合查看日志的最新内容,无需翻页)。
- 常用选项:
-n
(number):显示行号(查看代码或配置文件时,便于定位行)。-A
(show-all):显示所有字符(包括换行符$
、制表符^I
,适合排查文件格式问题)。
- 实战示例:
- 查看
config.conf
文件内容(带行号):cat -n config.conf
。 - 合并
part1.txt
和part2.txt
到full.txt
:cat part1.txt part2.txt > full.txt
。 - 倒序查看
app.log
的最后10行(最新日志):tac app.log | head -n10
。
- 查看
(6)less
/more
:分页查看文件内容
- 核心功能:查看大文件(如日志文件、长文档)时,分页显示内容(避免一次性加载过多内容导致卡顿),
less
功能比more
更强大(支持前后翻页、搜索)。 less
常用操作(进入less
界面后):- 按
Enter
:向下滚动1行。 - 按
Space
:向下滚动1页。 - 按
b
:向上滚动1页。 - 按
/关键词
:向下搜索“关键词”(按n
查看下一个结果,N
查看上一个结果)。 - 按
q
:退出less
界面。
- 按
- 实战示例:
- 分页查看
large_log.log
文件:less large_log.log
。 - 在
less
中搜索“error”关键词:进入less
后,输入/error
,按Enter
。 more
查看readme.md
(仅支持向下翻页,按q
退出):more readme.md
。
- 分页查看
(7)head
/tail
:查看文件的开头/结尾内容
- 核心功能:
head
:默认查看文件前10行,可指定行数(适合查看文件头部信息,如日志的起始部分)。tail
:默认查看文件后10行,可指定行数,且支持“实时追踪”(适合查看日志的最新内容,如程序运行日志)。
- 常用选项:
-n 数字
:指定查看的行数(如head -n5 file.txt
查看前5行,tail -n20 log.txt
查看后20行),可省略n
(如head -5
、tail -20
)。-f
(follow):实时追踪文件内容(tail
专属选项),文件新增内容会实时显示(按Ctrl+C
停止追踪)。
- 实战示例:
- 查看
app.log
的前5行(日志起始信息):head -5 app.log
。 - 实时追踪
server.log
的最新内容(程序运行时查看日志):tail -f server.log
。 - 查看
data.csv
的后15行(数据末尾部分):tail -n15 data.csv
。
- 查看
3. 系统与权限类指令
(1)man
:查看命令手册
- 核心功能:Linux的“内置帮助文档”,几乎所有命令都有
man
手册,包含命令功能、选项说明、示例等(是学习命令的“权威资料”)。 - 常用操作(进入
man
界面后):- 按
Enter
:向下滚动1行。 - 按
Space
:向下滚动1页。 - 按
/关键词
:搜索手册中的“关键词”。 - 按
q
:退出man
界面。
- 按
- 实战示例:
- 查看
ls
命令的手册:man ls
(可了解ls
的所有选项,如-l
、-a
的详细说明)。 - 查看
man
命令本身的手册:man man
(了解man
的使用方法)。
- 查看
(2)sudo
:以超级用户(root)权限执行命令
- 核心功能:普通用户默认无修改系统配置、删除系统文件等权限,通过
sudo
可临时获取root
权限(需输入当前用户密码,密码默认不显示,输入后按Enter
)。 - 常用场景:安装软件(
sudo apt install nginx
)、修改系统配置(sudo vim /etc/sysctl.conf
)、删除系统文件(sudo rm /var/log/old.log
)等。 - 注意事项:
- 仅授权用户可使用
sudo
(授权配置在/etc/sudoers
文件中,需root
用户编辑)。 - 避免频繁使用
sudo
(尤其sudo rm -rf
),防止误操作破坏系统。
- 仅授权用户可使用
- 实战示例:
- 更新Ubuntu系统的软件包列表:
sudo apt update
。 - 编辑
/etc/hosts
文件(需root
权限):sudo vim /etc/hosts
。
- 更新Ubuntu系统的软件包列表:
(3)chmod
:修改文件/目录的权限
- 核心功能:Linux文件/目录的权限分为“所有者(owner)”“所属组(group)”“其他用户(others)”三类,每类用户有“读(r,4)”“写(w,2)”“执行(x,1)”三种权限。
chmod
用于修改这些权限。 - 常用用法:
- 符号模式(易懂,推荐新手):
chmod [用户类型][+/-/=][权限] 文件/目录
。- 用户类型:
u
(所有者)、g
(所属组)、o
(其他用户)、a
(所有用户)。 - 操作符:
+
(添加权限)、-
(移除权限)、=
(设置权限,覆盖原有)。 - 权限:
r
(读)、w
(写)、x
(执行)。
- 用户类型:
- 数字模式(高效,适合熟练者):用3个数字(分别对应所有者、所属组、其他用户)表示权限,数字为“读(4)+写(2)+执行(1)”的和(如
755
表示rwxr-xr-x
)。
- 符号模式(易懂,推荐新手):
- 实战示例:
- 给
script.sh
文件的所有者添加“执行”权限(使其可运行):chmod u+x script.sh
。 - 设置
docs
目录的权限为“所有者读写执行,所属组读执行,其他用户读执行”(rwxr-xr-x
):chmod 755 docs
。 - 移除
data.txt
文件“其他用户”的“写”权限:chmod o-w data.txt
。
- 给
三、专项功能指令:应对特定场景
除基础指令外,Linux还有一批“专项功能”指令,针对时间管理、查找与文本处理、压缩解压、系统监控等场景,是提升工作效率的“利器”。
1. 时间与日历类指令
(1)date
:显示或设置系统时间
- 核心功能:查看当前系统时间,或修改系统时间(需
sudo
权限),支持自定义时间格式。 - 常用格式选项(通过
+
指定格式):%Y
:4位年份(如2025)。%m
:2位月份(01-12)。%d
:2位日期(01-31)。%H
:24小时制小时(00-23)。%M
:分钟(00-59)。%S
:秒(00-59)。
- 实战示例:
- 显示当前时间(默认格式):
date
(输出如“Sat Sep 13 10:30:00 CST 2025”)。 - 以“2025-09-13 10:30:00”格式显示时间:
date +%Y-%m-%d %H:%M:%S
(注意:格式中若有空格,需用引号包裹,如date "+%Y-%m-%d %H:%M:%S"
)。 - 修改系统时间为2025年9月13日10:35:00(需
sudo
):sudo date -s "2025-09-13 10:35:00"
。
- 显示当前时间(默认格式):
(2)cal
:显示日历
- 核心功能:查看指定月份或年份的日历,默认显示当前月份的日历。
- 常用选项:
-y
(year):显示全年日历。月份 年份
:显示指定月份的日历(如cal 9 2025
显示2025年9月的日历)。
- 实战示例:
- 显示当前月份的日历:
cal
。 - 显示2025年全年的日历:
cal -y 2025
。 - 显示2024年12月的日历:
cal 12 2024
。
- 显示当前月份的日历:
2. 查找与文本处理类指令
(1)find
:按条件查找文件/目录
- 核心功能:在指定目录下,按“文件名、大小、修改时间、权限”等条件查找文件/目录,功能强大,是“文件定位”的核心工具。
- 常用条件选项:
-name "模式"
:按文件名匹配(支持通配符*
、?
,如"*.txt"
匹配所有.txt
文件)。-size [+/-]大小
:按文件大小查找(单位:b
(字节)、k
(KB)、M
(MB)、G
(GB),如-size +100M
查找大于100MB的文件)。-mtime [+/-]天数
:按“修改时间”查找(-mtime -7
查找近7天修改过的文件,-mtime +30
查找30天前修改过的文件)。-type 类型
:按文件类型查找(f
表示普通文件,d
表示目录,l
表示符号链接)。-exec 命令 {} \;
:对找到的文件执行指定命令({}
表示找到的文件,\;
表示命令结束)。
- 实战示例:
- 在
/home/user
目录下,查找所有.log
文件(包括子目录):find /home/user -name "*.log"
。 - 在当前目录下,查找近3天修改过的、大于50MB的普通文件:
find . -type f -mtime -3 -size +50M
。 - 查找
/var/log
目录下,10天前修改过的.log
文件,并删除(需谨慎):find /var/log -name "*.log" -mtime +10 -exec rm -i {} \;
(-i
确保删除前确认)。
- 在
(2)grep
:在文件中搜索文本
- 核心功能:在一个或多个文件中,搜索包含指定“关键词”的行,支持正则表达式,是“日志分析、代码搜索”的常用工具。
- 常用选项:
-i
(ignore-case):忽略大小写(如grep -i "error"
会匹配“Error”“ERROR”等)。-n
(line-number):显示匹配行的行号(便于定位)。-v
(invert-match):反向匹配(显示不包含关键词的行)。-r
(recursive):递归搜索目录下的所有文件(如grep -r "username" /home/user
)。-E
(extended-regexp):支持扩展正则表达式(如grep -E "error|warning"
匹配“error”或“warning”)。
- 实战示例:
- 在
app.log
中,搜索包含“error”的行(带行号):grep -n "error" app.log
。 - 在
/home/user/project
目录下,递归搜索包含“database”的所有文件(忽略大小写):grep -ir "database" /home/user/project
。 - 在
config.conf
中,显示不包含“#”(注释行)的行:grep -v "^#" config.conf
(^#
表示以“#”开头的行)。
- 在
(3)sed
:文本替换与处理
- 核心功能:流编辑器(Stream Editor),用于对文本进行批量替换、删除、插入等操作,支持正则表达式,常用于脚本中的文本处理。
- 常用用法:
sed [选项] '命令' 文件名
。 - 核心命令:
s/旧内容/新内容/选项
:替换文本(s
表示“substitute”),选项g
表示“全局替换”(默认仅替换每行第一个匹配项)。d
:删除指定行(如sed '3d' file.txt
删除第3行,sed '/error/d' file.txt
删除包含“error”的行)。i
:在指定行前插入内容(如sed '2i new line' file.txt
在第2行前插入“new line”)。
- 常用选项:
-i
(in-place):直接修改原文件(默认仅输出到终端,不修改原文件,添加-i
后会修改原文件,建议先备份)。-E
:支持扩展正则表达式。
- 实战示例:
- 将
file.txt
中所有“old”替换为“new”(仅输出到终端,不修改原文件):sed 's/old/new/g' file.txt
。 - 直接修改
config.conf
,将所有“port 22”替换为“port 2222”:sed -i 's/port 22/port 2222/g' config.conf
(修改前建议备份:cp config.conf config.conf.bak
)。 - 删除
log.txt
中包含“debug”的行(直接修改原文件):sed -i '/debug/d' log.txt
。
- 将
3. 压缩与解压类指令
(1)tar
:打包与压缩(.tar
/.tar.gz
/.tar.bz2
)
- 核心功能:
tar
本身是“打包”工具(将多个文件/目录打包成一个.tar
文件),结合压缩算法(如gzip
、bzip2
)可实现压缩,常见压缩格式为.tar.gz
(gzip
压缩,最常用)和.tar.bz2
(bzip2
压缩,压缩率更高但速度慢)。 - 常用选项(打包压缩与解压的选项对称,便于记忆):
- 打包压缩(
c
表示“create”创建包,z
表示gzip
压缩,j
表示bzip2
压缩,v
表示“verbose”显示过程,f
表示“file”指定包文件名):.tar.gz
格式:tar -czvf 包名.tar.gz 源文件/目录
(如tar -czvf docs.tar.gz docs/
)。.tar.bz2
格式:tar -cjvf 包名.tar.bz2 源文件/目录
(如tar -cjvf data.tar.bz2 data/
)。
- 解压(
x
表示“extract”提取,z
/j
对应压缩格式,v
显示过程,f
指定包文件名,C
指定解压目录):- 解压
.tar.gz
:tar -xzvf 包名.tar.gz -C 目标目录
(如tar -xzvf docs.tar.gz -C /home/user
)。 - 解压
.tar.bz2
:tar -xjvf 包名.tar.bz2 -C 目标目录
。
- 解压
- 查看包内容(不解压):
tar -tvf 包名.tar.gz
(t
表示“list”列出内容)。
- 打包压缩(
- 实战示例:
- 将
work/project
目录打包压缩为project.tar.gz
:tar -czvf project.tar.gz work/project/
。 - 解压
data.tar.bz2
到/var/data
目录:tar -xjvf data.tar.bz2 -C /var/data
。 - 查看
docs.tar.gz
包中的内容:tar -tvf docs.tar.gz
。
- 将
(2)zip
/unzip
:处理.zip
格式(跨平台)
- 核心功能:
zip
用于创建.zip
格式的压缩文件(跨平台,可在Windows、macOS中解压),unzip
用于解压.zip
文件。 - 常用选项:
zip
:-r
(recursive):递归压缩目录(如zip -r docs.zip docs/
)。-q
(quiet):安静模式,不显示压缩过程。
unzip
:-d
(directory):指定解压目录(如unzip docs.zip -d /home/user
)。-l
(list):查看.zip
文件中的内容(不解压)。
- 实战示例:
- 将
note.txt
和docs
目录压缩为archive.zip
:zip -r archive.zip note.txt docs/
。 - 解压
archive.zip
到/home/user/backup
目录:unzip archive.zip -d /home/user/backup
。 - 查看
archive.zip
中的内容:unzip -l archive.zip
。
- 将
4. 系统监控类指令
(1)top
:实时监控系统资源
- 核心功能:实时显示系统的CPU、内存、进程等资源使用情况,默认每3秒刷新一次,是“排查系统卡顿、高资源占用进程”的核心工具。
top
界面核心字段说明:- 顶部状态栏:显示系统时间、运行时间、用户数、CPU使用率(
us
用户空间、sy
内核空间、id
空闲)、内存使用率(Mem
物理内存、Swap
交换分区)。 - 进程列表:包含PID(进程ID)、USER(进程所有者)、%CPU(CPU使用率)、%MEM(内存使用率)、COMMAND(进程命令)等字段。
- 顶部状态栏:显示系统时间、运行时间、用户数、CPU使用率(
- 常用操作(进入
top
界面后):- 按
P
:按CPU使用率降序排序(默认)。 - 按
M
:按内存使用率降序排序。 - 按
k
:输入PID,终止指定进程(需谨慎)。 - 按
q
:退出top
界面。
- 按
- 实战示例:
- 启动
top
监控:top
。 - 在
top
中,按M
查看内存使用率最高的进程,定位内存泄漏的程序。
- 启动
(2)df
/free
:查看磁盘与内存使用情况
-
df
:查看磁盘空间- 核心功能:显示文件系统的磁盘空间使用情况(总容量、已用容量、可用容量、使用率、挂载点)。
- 常用选项:
-h
(human-readable):以“人类可读格式”显示(如1G
、200M
),推荐使用。 - 示例:查看所有文件系统的磁盘空间:
df -h
(输出如/dev/sda1 50G 20G 27G 43% /
,表示/
分区总容量50G,已用20G,使用率43%)。
-
free
:查看内存使用情况- 核心功能:显示系统的物理内存(Mem)、交换分区(Swap)的使用情况(总容量、已用容量、可用容量)。
- 常用选项:
-m
(mebibytes):以MB为单位显示;-g
(gibibytes):以GB为单位显示。 - 示例:以MB为单位查看内存使用:
free -m
(输出如Mem: 7824 1200 5600 124 1024
,表示物理内存总7824MB,已用1200MB,可用5600MB)。
四、常用快捷键与实用技巧:提升操作效率
掌握以下快捷键和技巧,可大幅减少命令输入量,避免重复操作,提升命令行使用效率。
1. 命令行编辑快捷键
快捷键 | 功能描述 | 常用场景 |
---|---|---|
Tab | 命令/文件名补全(输入前几个字符,按Tab 自动补全) | 输入长命令(如systemctl ,输入sys 按Tab )、长文件名(如report_20250913.md ,输入rep 按Tab ) |
Ctrl + C | 终止当前正在执行的命令(如终止tail -f 、top 等持续运行的命令) | 命令执行时间过长,或需强制停止程序时 |
Ctrl + D | 退出当前Shell会话(等同于exit 命令) | 关闭终端窗口前,或退出远程登录(如SSH)时 |
Ctrl + A | 光标跳转到命令行开头 | 输入长命令后,需修改开头内容时(如sudo apt install nginx ,需将sudo 改为sudo -E ) |
Ctrl + E | 光标跳转到命令行结尾 | 输入长命令后,需在结尾添加内容时(如cd /home/user/project ,需添加/src ) |
Ctrl + U | 删除光标前的所有内容(从光标到命令行开头) | 输入错误命令后,快速删除前半部分(如cd /hom/user ,光标在m 后,按Ctrl+U 删除cd /ho ) |
Ctrl + K | 删除光标后的所有内容(从光标到命令行结尾) | 输入命令后,需删除后半部分(如ls -l /home/user/docs ,光标在l 后,按Ctrl+K 删除 /home/user/docs ) |
Ctrl + R | 搜索历史命令(输入关键词,按Enter 执行匹配的命令,按Ctrl+R 继续查找上一个) | 忘记完整命令,仅记得关键词时(如搜索“tar”,按Ctrl+R 输入tar ,会显示历史中的tar 命令) |
2. 历史命令与别名技巧
(1)history
:查看历史命令
- 核心功能:显示当前用户执行过的历史命令(默认保存1000条,可通过
HISTSIZE
环境变量修改)。 - 常用用法:
- 查看所有历史命令:
history
。 - 执行历史命令中的第123条:
!123
(history
输出中,每条命令前的数字为“历史编号”)。 - 执行上一条命令:
!!
(等同于按Up
键后按Enter
)。 - 执行最近一次以“sudo”开头的命令:
!sudo
。
- 查看所有历史命令:
- 示例:执行历史中第50条命令(假设第50条是
tar -czvf project.tar.gz project/
):!50
。
(2)alias
:设置命令别名(简化长命令)
- 核心功能:为常用的长命令设置“别名”,输入别名即可执行原命令,减少输入量。
- 常用用法:
- 临时别名(当前Shell会话有效,重启后失效):
alias 别名='原命令'
(如alias ll='ls -lh'
,设置后输入ll
等同于ls -lh
)。 - 永久别名(所有Shell会话有效):将别名添加到用户主目录的
.bashrc
文件(Ubuntu)或.bash_profile
文件(CentOS)中,然后执行source ~/.bashrc
生效。
- 临时别名(当前Shell会话有效,重启后失效):
- 实战示例:
- 设置临时别名:
alias rm='rm -i'
(每次执行rm
时自动添加-i
,提示确认)、alias gs='git status'
(Git用户常用,简化git status
)。 - 设置永久别名:
- 编辑
.bashrc
文件:vim ~/.bashrc
。 - 在文件末尾添加:
alias ll='ls -lh'
、alias gs='git status'
。 - 生效别名:
source ~/.bashrc
(或重启终端)。
- 编辑
- 设置临时别名:
五、总结:从“入门”到“精通”的路径
Linux命令行的学习并非“一蹴而就”,而是一个“实践-总结-再实践”的过程。建议按照以下路径逐步提升:
- 夯实基础:先掌握本文第二部分的“基础必备指令”(如
ls
、cd
、cp
、rm
、man
),确保能完成日常的目录导航、文件管理操作。 - 场景突破:针对工作中遇到的具体场景(如日志分析、文件压缩、系统监控),深入学习第三部分的“专项功能指令”(如
grep
、tar
、top
),并结合实际需求练习组合使用(如grep + find
、tar + zip
)。 - 效率提升:熟练掌握第四部分的“快捷键与实用技巧”(如
Tab
补全、Ctrl+R
搜索历史命令、alias
设置别名),减少重复操作,形成自己的“高效操作习惯”。 - 自动化进阶:当掌握足够多的命令后,学习编写Shell脚本(如
.sh
文件),将重复的命令组合成脚本(如批量备份文件、定时清理日志),实现“自动化操作”,这是Linux命令行的“高阶应用”。
最终,Linux命令行的核心价值在于“以最小的操作成本,实现最灵活的系统控制”。只要坚持实践,不断总结,就能逐步体会其高效与便捷,成为Linux系统的“掌控者”。