Linux常用基础命令
想继续学习shell命令:
Linux零基础Shell教学全集(可用于日常查询语句,目录清晰,内容详细)(自学尚硅谷B站shell课程后的万字学习笔记,附课程链接)-CSDN博客https://blog.csdn.net/2302_78022640/article/details/149726065?spm=1001.2014.3001.5502
下面文章请查看旁边目录翻阅。
文件和目录操作命令
cd - 切换目录
- 作用说明:用于切换当前工作目录,可通过绝对路径(如
/usr/local
)或相对路径(如./docs
)在不同目录间跳转。 - 参数:
- ~:切换到当前用户的主目录(如
/home/用户名
)。 - ..:切换到上一级目录。
- -:切换到上一次所在的目录。
- 目录路径:直接指定目标目录的路径。
- ~:切换到当前用户的主目录(如
- 代码案例:
# 切换到主目录
cd ~# 切换到上一级目录(若当前在/home/user/docs,则切换到/home/user)
cd ..# 切换到上一次所在目录(假设之前在/home/user,切换到docs后执行此命令返回/home/user)
cd -
pwd - 显示当前目录路径
- 作用说明:输出当前所在目录的绝对路径,帮助用户确认自己的位置。
- 参数:无参数。
- 代码案例:
# 显示当前目录路径(假设当前在/home/user/documents)
pwd
# 输出:/home/user/documents
ls - 列出目录内容
- 作用说明:列出指定目录的文件和子目录,默认显示当前目录内容。
- 参数:
- -l:以长格式显示,包含权限、所有者、大小、修改时间等详细信息。
- -a:显示所有内容(包括以
.
开头的隐藏文件 / 目录,如.bashrc
)。 - -h:与
-l
配合,以人类可读格式显示文件大小(如 KB、MB)。 - -r:反向排序(默认按字母升序)。
- -t:按修改时间排序(最新的排在前面)。
- 代码案例:
# 以长格式列出当前目录内容(包含隐藏文件)
ls -la# 按修改时间排序显示当前目录内容
ls -lt
mkdir - 创建目录
- 作用说明:用于创建新的目录,支持一次性创建多级目录。
- 参数:
- -p:递归创建目录(若父目录不存在则自动创建,如
mkdir -p a/b/c
会创建 a、a/b、a/b/c)。 - -m:创建时指定权限(如
mkdir -m 755 dir
创建权限为 755 的 dir 目录)。
- -p:递归创建目录(若父目录不存在则自动创建,如
- 代码案例:
# 创建名为"test"的目录
mkdir test# 递归创建多级目录"docs/reports/2023"
mkdir -p docs/reports/2023
touch - 创建空文件
- 作用说明:创建空文件,若指定文件已存在,则更新该文件的访问和修改时间。
- 参数:无常用必须参数,直接指定文件名即可(支持同时创建多个)。
- 代码案例:
# 创建两个空文件"note.txt"和"data.csv"
touch note.txt data.csv
vim - 高级文本编辑器
- 作用说明:Linux 系统中最常用的文本编辑器,支持语法高亮、多模式操作(命令模式、插入模式、可视模式)、宏录制、插件扩展等高级功能,适合编辑配置文件、代码等各类文本内容。
- 模式与操作:
- 命令模式(默认):用于导航、执行命令,无法直接输入文本。
- 移动光标:
h
(左)、j
(下)、k
(上)、l
(右),或用方向键。- 快速跳转:
G
(文件末尾)、gg
(文件开头)、数字G
(指定行,如10G
到第 10 行)。- 复制 / 粘贴:
yy
(复制当前行)、nyy
(复制 n 行)、p
(粘贴)。- 删除:
dd
(删除当前行)、ndd
(删除 n 行)、x
(删除当前字符)。- 查找 / 替换:
/关键词
(搜索)、n
(下一个匹配)、:%s/原词/替换词/g
(全局替换)。- 插入模式:按
i
(当前位置插入)、a
(光标后插入)、o
(下一行插入)进入,按Esc
返回命令模式。- 底线命令模式:命令模式下按
:
进入,用于保存、退出等操作。
:w
:保存文件。:q
:退出(未修改时)。:wq
或:x
:保存并退出。:q!
:强制退出,不保存修改。:set number
:显示行号(临时)。- 代码案例:
# 打开文件(若不存在则创建) vim config.ini# 进入插入模式,编辑文件内容 i # 进入插入模式开始编辑# 保存并退出 Esc # 返回命令模式 :wq # 保存并退出# 打开文件并跳到第20行 vim +20 app.log# 同时打开多个文件 vim file1.txt file2.txt
rm - 删除文件或目录
- 作用说明:用于删除文件或目录,需谨慎使用避免误删。
- 参数:
- -f:强制删除,不提示确认(即使文件只读)。
- -r:递归删除目录及其中所有内容(删除目录必须用此参数)。
- -i:删除前提示确认(默认删除非目录文件时可能提示,视系统配置而定)。
- 代码案例:
# 删除"note.txt"(会提示确认,输入y确认)
rm note.txt# 强制递归删除"test"目录及其中所有内容(无提示,谨慎使用)
rm -rf test
cp - 复制文件或目录
- 作用说明:用于复制文件或目录到指定位置。
- 参数:
- -i:若目标文件已存在,复制前提示确认是否覆盖。
- -r:递归复制目录(复制目录必须用此参数,否则仅复制目录名)。
- -v:显示复制过程(如 “‘a.txt’ -> ‘dir/a.txt’”)。
- 代码案例:
# 复制"file.txt"到"backup"目录
cp file.txt backup/# 递归复制"docs"目录到"archive"目录(若archive不存在则创建)
cp -r docs/ archive/
mv - 移动或重命名文件或目录
- 作用说明:可移动文件 / 目录到新位置,也可直接重命名(目标位置与原位置同目录时)。
- 参数:
- -i:目标文件存在时提示确认覆盖。
- -v:显示移动 / 重命名过程。
- -f:强制操作(覆盖时不提示)。
- 代码案例:
# 将"oldname.txt"重命名为"newname.txt"
mv oldname.txt newname.txt# 移动"data.csv"到"docs/data"目录(若data目录不存在则提示错误)
mv data.csv docs/data/
文件内容查看
cat - 查看文件内容
- 作用说明:一次性显示文件全部内容(适合短文件),也可合并多个文件内容。
- 参数:
- -n:显示内容时为每行添加行号(包括空行)。
- -b:仅为非空行添加行号。
- -s:压缩连续空行为一个空行。
- 代码案例:
# 查看"readme.txt"的全部内容
cat readme.txt# 查看"log.txt"并为每行添加行号
cat -n log.txt
tail - 显示文件末尾内容
- 作用说明:用于显示文件的末尾内容,默认显示最后 10 行,适合实时监控日志文件的新增内容。
- 参数:
- -n 行数:指定显示的行数(如
-n 20
显示最后 20 行)。 - -f:实时监控文件变化,新增内容会自动显示(常用于监控日志)。
- -F:类似
-f
,但会追踪文件重命名或创建(如日志轮询场景)。
- -n 行数:指定显示的行数(如
- 代码案例:
# 显示access.log的最后20行
tail -n 20 access.log# 实时监控error.log的新增内容(按Ctrl+C停止)
tail -f error.log# 监控可能被轮询的日志文件(自动追踪新生成的同名文件)
tail -F app.log
head - 显示文件开头内容
- 作用说明:用于显示文件的开头内容,默认显示前 10 行,快速预览大文件的前部分内容。
- 参数:
- -n 行数:指定显示的行数(如
-n 5
显示前 5 行)。 - -c 字节数:指定显示的字节数(如
-c 100
显示前 100 字节)。
- -n 行数:指定显示的行数(如
- 代码案例:
# 显示data.csv的前5行
head -n 5 data.csv# 显示config.ini的前200字节
head -c 200 config.ini
more - 分页查看文件内容
- 作用说明:用于分页显示长文件内容(按屏展示,支持翻页)。
- 参数:
- -d:显示提示信息 “[按空格继续,q 退出]”。
- -p:显示前先清屏。
- 操作键:空格(下一页)、Enter(下一行)、q(退出)。
- 代码案例:
# 分页查看长文件"large_file.log"(按q退出)
more large_file.log
less - 更灵活地分页查看文件内容
- 作用说明:分页查看文件内容,支持向前 / 向后翻页、搜索、跳转等高级操作,适合查看大型文件。
- 参数:
- -N:显示行号。
- -i:搜索时忽略大小写。
- -S:单行显示(不自动换行,适合查看长行)。
- 操作键:
- 空格:下一页
- b:上一页
- / 关键词:向前搜索(n 下一个,N 上一个)
- ? 关键词:向后搜索
- G:跳转到文件末尾
- 数字 G:跳转到指定行(如
100G
到第 100 行) - q:退出
- 代码案例:
# 分页查看system.log,显示行号
less -N system.log# 查看长文本文件,单行显示防止换行
less -S long_report.txt# 打开文件并直接搜索"ERROR"(忽略大小写)
less -i +/ERROR application.log
grep - 在文件中搜索指定内容
- 作用说明:在文件中搜索匹配指定关键词的行,并将找到的行输出。
- 参数:
- -i:忽略大小写(如
grep -i "hello"
匹配 Hello、HELLO 等)。 - -n:显示匹配行的行号。
- -r:递归搜索目录下所有文件(如
grep -r "error" /var/log
)。 - -v:显示不匹配关键词的行。
- -i:忽略大小写(如
- 代码案例:
# 在"app.log"中搜索包含"error"的行(显示行号)
grep -n "error" app.log# 递归搜索"/home/user"目录下所有文件中包含"todo"的内容(忽略大小写)
grep -ir "todo" /home/user
find - 查找文件或目录
- 作用说明:在指定目录下按条件(文件名、大小、时间等)查找文件或目录。
- 参数:
- -name "模式":按文件名查找(支持通配符,如
*.txt
)。 - -type f:仅查找文件(-type d 仅查找目录)。
- -size +10M:查找大小大于 10MB 的文件(-size -1k 查找小于 1KB 的文件)。
- -mtime -7:查找 7 天内修改过的文件(+30 查找 30 天前修改的文件)。
- -name "模式":按文件名查找(支持通配符,如
- 代码案例:
# 在当前目录下查找所有扩展名为".sh"的文件
find . -type f -name "*.sh"# 在"/var/log"目录下查找7天内修改过的大于100MB的文件
find /var/log -type f -mtime -7 -size +100M
用户和权限管理命令
chmod - 修改文件或目录权限
- 作用说明:修改文件 / 目录的访问权限(读 r、写 w、执行 x,对应所有者、所属组、其他用户)。
- 参数:
- 数字模式:用 3 位数字表示权限(r=4,w=2,x=1),如 755 表示所有者 rwx、组和其他 rx。
- 符号模式:u(所有者)、g(组)、o(其他)、a(所有)结合 +(加权限)、-(减权限)、=(设权限),如
u+x
给所有者加执行权。 - -R:递归修改目录及子内容的权限。
- 777:
rwxrwxrwx
,意味着文件所有者、所属用户组以及其他用户都具备读取、写入和执行的权限。 - 755:
rwxr-xr-x
,即文件所有者拥有读取、写入和执行权限,而所属用户组和其他用户只有读取和执行权限。
- 代码案例:
# 用数字模式设置"script.sh"权限为所有者rwx,组和其他rx(755)
chmod 755 script.sh# 用符号模式取消"file.txt"其他用户的写权限
chmod o-w file.txt
chown - 修改文件或目录的所有者
- 作用说明:修改文件 / 目录的所有者(可同时修改所属组)。
- 参数:
- -R:递归修改目录及子内容的所有者 / 组。
- 格式:
chown 用户名:组名 目标
(如chown user:group file
同时改所有者和组)。
- 代码案例:
# 将"docs"目录的所有者改为"user1"
chown user1 docs# 递归将"data"目录及内容的所有者改为"user2",所属组改为"dev"
chown -R user2:dev data/
useradd - 创建新用户
- 作用说明:用于创建新的系统用户,需 root 权限(普通用户需用
sudo
)。创建时可指定用户主目录、所属组、默认 shell 等属性,默认不自动创建主目录(需显式指定参数)。 - 参数:
- -m:自动创建用户主目录(默认路径为
/home/用户名
)。 - -g 组名 / 组 ID:指定用户的初始所属组(主组),需提前存在。
- -G 组名 1, 组名 2:指定用户的附加组(可多个,用逗号分隔)。
- -s shell 路径:指定用户默认登录 shell(如
/bin/bash
、/bin/sh
,默认通常为/bin/bash
)。 - -u UID:指定用户的 UID(用户 ID),需为未被占用的数字(0-65535,0 为 root)。
- -c "描述":添加用户描述信息(如用户全名或备注)。
- -m:自动创建用户主目录(默认路径为
- 代码案例:
# 创建用户"zhangsan",自动创建主目录,默认shell为bash
sudo useradd -m -s /bin/bash zhangsan# 创建用户"lisi",主组为"dev",附加组为"admin"和"test"
sudo useradd -m -g dev -G admin,test lisi# 创建用户"wangwu",指定UID为10086,描述为"临时测试用户"
sudo useradd -m -u 10086 -c "临时测试用户" wangwu
passwd - 修改用户密码
- 作用说明:用于修改用户密码。普通用户可直接修改自己的密码(需验证当前密码);root 用户可修改任意用户的密码(无需验证原密码),还可锁定 / 解锁用户密码。
- 参数:
- 无参数:修改当前登录用户的密码。
- 用户名:root 用户修改指定用户的密码(如
passwd zhangsan
)。 - -l 用户名:锁定用户(禁止登录,密码被加密存储为不可用状态)。
- -u 用户名:解锁被锁定的用户。
- -d 用户名:删除用户密码(用户登录无需密码,不推荐)。
- -e 用户名:强制用户下次登录时必须修改密码。
- 代码案例:
# 普通用户修改自己的密码(需先输入当前密码,再输入新密码)
passwd# root用户修改"zhangsan"的密码(直接设置新密码,无需原密码)
sudo passwd zhangsan
# 执行后按提示输入新密码并确认# 锁定用户"lisi"(禁止其登录系统)
sudo passwd -l lisi# 解锁用户"lisi"(恢复登录权限)
sudo passwd -u lisi# 强制"wangwu"下次登录必须修改密码
sudo passwd -e wangwu
su
命令(切换用户,switch user)
功能:切换到指定用户,需要输入目标用户的密码(若切换到 root,需 root 密码)。
常用用法:
su 用户名
:切换到指定用户,但不加载该用户的完整环境变量(如主目录的配置文件)。su - 用户名
(推荐):切换到指定用户并加载其完整环境变量(模拟 “登录” 该用户,环境更彻底)。- 若不指定用户名,默认切换到
root
用户(管理员)。
示例:
# 切换到普通用户 user1(需输入 user1 的密码)
su - user1 # 切换到 root 用户(需输入 root 密码,推荐用 - 加载完整环境)
su - # 从当前用户退出,回到上一个用户(如从 root 退回普通用户)
exit # 或按 Ctrl+D
sudo -i
或 sudo su
(临时切换到 root,需 sudo 权限)
功能:通过 sudo
临时获取 root 权限并切换到 root 用户,需输入当前用户的密码(而非 root 密码),前提是当前用户在 sudoers
配置文件中有权限(通常是加入 sudo
组的用户)。
示例:
# 切换到 root 用户(需当前用户有 sudo 权限,输入当前用户密码)
sudo -i # 等效命令(先通过 sudo 获取权限,再切换到 root)
sudo su - # 退出 root,回到原用户
exit
核心区别:
命令 | 适用场景 | 密码要求 | 环境变量加载 |
---|---|---|---|
su - 用户名 | 切换到任意用户(包括 root) | 目标用户的密码 | 完整加载目标用户环境 |
sudo -i | 切换到 root(需 sudo 权限) | 当前用户的密码 | 加载 root 用户完整环境 |
压缩与归档命令
tar - 打包压缩文件
- 作用说明:将多个文件或目录打包成一个文件,也可以对打包后的文件进行压缩或解压缩操作。
- 参数:
- -c:创建新的打包文件。
- -x:从打包文件中提取文件。
- -v:显示打包或解包的详细过程。
- -f 文件名:指定打包文件的名称。
- -z:使用 gzip 压缩或解压缩打包文件,与 gzip 结合使用。
- 代码案例:
# 将file1.txt、file2.txt和dir目录打包成files.tar文件,并显示详细过程
tar -cvf files.tar file1.txt file2.txt dir/# 将file1.txt和file2.txt打包并使用gzip压缩成files.tar.gz文件
tar -zcvf files.tar.gz file1.txt file2.txt
gzip - 压缩或解压缩文件
- 作用说明:对文件进行压缩或解压缩,压缩后的文件扩展名为.gz。
- 参数:
- -d:解压缩被 gzip 压缩的文件。
- -r:递归压缩目录下的所有文件。
- -v:显示压缩或解压缩的详细信息。
- 代码案例:
# 将file.txt文件压缩成file.txt.gz文件
gzip file.txt# 将file.txt.gz文件解压缩为file.txt文件
gzip -d file.txt.gz
zip - 创建压缩文件
- 作用说明:用于创建 ZIP 格式的压缩文件,支持压缩单个文件或目录,可设置压缩级别、递归处理子目录等,兼容 Windows、macOS 等多平台。
- 参数:
- -r:递归压缩目录及其所有子目录和文件(压缩目录必须用此参数)。
- -q:安静模式,不显示压缩过程信息。
- -9:最高压缩比(数字 0-9,0 为存储模式,9 为最高压缩)。
- -d:从已有的 ZIP 文件中删除指定文件。
- -x "文件":排除特定文件(如
-x "*.log"
排除所有.log 文件)。
- 代码案例:
# 压缩单个文件test.txt到archive.zip
zip archive.zip test.txt# 递归压缩目录docs及其所有内容到docs.zip
zip -r docs.zip docs/# 压缩目录并排除所有临时文件和log文件
zip -r project.zip project/ -x "*.tmp" "*.log"# 添加新文件到已有的ZIP文件
zip archive.zip newfile.txt# 删除ZIP文件中的oldfile.txt
zip -d archive.zip oldfile.txt
unzip - 解压 ZIP 文件
- 作用说明:用于解压 ZIP 格式的压缩文件,可指定解压目标路径、覆盖选项等,支持处理带密码保护的 ZIP 文件。
- 参数:
- -d 目录:指定解压目标目录(如不存在则自动创建)。
- -o:强制覆盖已存在的文件,不提示确认。
- -q:安静模式,不显示解压过程信息。
- -v:查看 ZIP 文件内容列表(不解压)。
- -P 密码:用于解压加密的 ZIP 文件(不推荐在命令行明文输入密码)。
- 代码案例:
# 将archive.zip解压到当前目录
unzip archive.zip# 将docs.zip解压到/tmp目录
unzip docs.zip -d /tmp# 查看project.zip的内容列表
unzip -v project.zip# 强制覆盖解压(不提示确认)
unzip -o backup.zip# 解压加密的ZIP文件(会提示输入密码)
unzip secure.zip
# 或使用-P参数(明文密码,不推荐)
unzip -P mypassword secure.zip
网络操作命令
ifconfig - 配置网络接口
- 作用说明:配置和显示网络接口的信息,如 IP 地址、子网掩码、MAC 地址等,也可用于启用或禁用网络接口。
- 参数:
- 接口名 up:启用指定的网络接口。
- 接口名 down:禁用指定的网络接口。
- 接口名 IP 地址:为指定的网络接口设置 IP 地址。
- 代码案例:
# 显示eth0网络接口的信息
ifconfig eth0# 为eth0网络接口设置IP地址为192.168.1.100
ifconfig eth0 192.168.1.100
ping - 测试网络连接
- 作用说明:测试与目标主机的网络连接是否通畅,通过发送 ICMP 回声请求包并接收回声应答包来判断。
- 参数:
- -c 次数:指定发送回声请求包的次数,默认会一直发送。
- -s 字节数:指定发送的回声请求包的数据部分的大小。
- -i 间隔秒数:指定发送两个回声请求包之间的间隔时间,默认是 1 秒。
- 代码案例:
# 测试与百度服务器的网络连接,默认一直发送请求包,按Ctrl+C停止
ping www.baidu.com# 向192.168.1.1发送4个回声请求包进行网络连接测试
ping -c 4 192.168.1.1
其他
# ping - 测试网络连通性
ping www.google.com # 测试与Google服务器的连通性# ifconfig - 显示网络接口信息(部分系统已被ip替代)
ifconfig eth0 # 显示eth0网络接口信息# ip - 网络配置工具(较新系统推荐)
ip addr show # 显示所有网络接口信息# netstat - 显示网络连接、路由表等
netstat -tulpn # 显示所有监听的TCP和UDP端口及对应进程# curl - 传输URL数据
curl https://example.com # 获取网页内容
curl -O file.zip # 下载文件# wget - 非交互式网络下载工具
wget https://example.com/file.zip # 下载文件
进程管理命令
ps - 查看进程状态
- 作用说明:查看系统当前进程的快照(静态信息)。
- 参数:
- -e:显示所有进程(系统中所有用户的进程)。
- -f:以全格式显示(包含 PID、PPID、UID、命令等)。
- -u 用户名:显示指定用户的进程(如
ps -u user
)。 - -aux:常用组合,显示所有进程的详细信息(BSD 风格)。
- 代码案例:
# 查看所有进程的详细信息(常用)
ps aux# 查看用户"user"的进程(全格式)
ps -f -u user
top - 实时显示进程动态
- 作用说明:实时动态监控进程(默认 3 秒刷新一次),显示 CPU、内存占用等信息。
- 参数:
- -d 秒数:设置刷新间隔(如
top -d 5
每 5 秒刷新)。 - -p PID:仅监控指定 PID 的进程(如
top -p 1234
)。 - -u 用户名:仅显示指定用户的进程。
- 操作键:q(退出)、k(终止进程,需输入 PID)、P(按 CPU 使用率排序)、M(按内存使用率排序)。
- -d 秒数:设置刷新间隔(如
- 代码案例:
# 实时监控进程(默认刷新)
top# 每10秒刷新一次,仅监控PID为1234的进程
top -d 10 -p 1234
kill - 终止进程
- 作用说明:向指定进程发送信号(默认发送 SIGTERM 信号),用于终止或控制进程。常见场景包括结束无响应程序、优雅关闭服务或强制终止顽固进程。
- 参数:
- - 信号:指定要发送的信号(可用信号编号或名称)。
- -15/SIGTERM:默认信号,请求进程正常终止(允许清理资源)。
- -9/SIGKILL:强制终止(不可被忽略或捕获,可能导致数据丢失)。
- -1/SIGHUP:重启进程(常用于重载配置文件)。
- -2/SIGINT:等同于 Ctrl+C,中断进程。
- PID:目标进程的 ID(可通过
ps
、top
或pgrep
获取)。
- - 信号:指定要发送的信号(可用信号编号或名称)。
- 代码案例:
# 正常终止PID为1234的进程(发送SIGTERM信号)
kill 1234# 强制终止PID为5678的进程(发送SIGKILL信号)
kill -9 5678# 重启Apache服务(发送SIGHUP信号)
kill -1 $(pgrep httpd)# 终止所有名为"chrome"的进程(结合pgrep获取PID)
kill $(pgrep chrome)# 强制终止所有用户"test"的进程
kill -9 $(ps -u test -o pid=)
系统信息:
表格
命令 | 详细说明 | 示例 |
---|---|---|
uname -a | 显示系统内核及硬件相关的完整信息,包括内核名称、主机名、内核版本号、内核发布号、硬件架构(如 x86_64)、处理器类型、操作系统类型等。 | uname -a |
hostname | 显示当前系统的主机名;若需修改主机名,可使用hostname 新主机名 (临时生效,永久修改需配置对应系统文件)。 | hostname |
uptime | 显示系统从开机到当前的运行时长(格式:时:分),当前登录用户数,以及 1 分钟、5 分钟、15 分钟内的系统平均负载(反映 CPU 繁忙程度)。 | uptime |
top/htop | 实时动态监控系统资源使用情况,包括进程的 CPU 占用率、内存占用、运行状态等;支持按资源占用排序(如按 CPU / 内存)。htop 是 top 的增强版,提供更友好的交互界面和更多功能(如鼠标操作)。 | top |
vmstat | 报告系统整体统计信息,包括虚拟内存使用、进程状态(运行 / 阻塞)、CPU 活动(用户态 / 系统态 / 空闲时间)、I/O 读写等;示例中1 5 表示每隔 1 秒输出 1 次,共输出 5 次。 | vmstat 1 5 |
free -h | 显示系统内存使用详情,包括物理内存(total/used/free)、交换内存(swap)、缓冲区(buffers)和缓存(cache)的使用量;-h 参数以人类可读单位(GB/MB)显示,更直观。 | free -h |
df -h | 查看所有挂载的文件系统的磁盘空间使用情况,包括总容量、已用空间、可用空间及挂载点;-h 参数以人类可读单位显示,示例可指定挂载点(如df -h / )查看根目录空间。 | df -h |
du -sh * | 统计当前目录下所有文件 / 目录的磁盘占用量(disk usage);-s 表示只显示总和,-h 以人类可读单位显示;示例中Documents/ 用于查看指定目录的大小。 | du -sh Documents/ |
arch | 显示当前系统的硬件架构类型,如 x86_64(64 位 x86)、arm64(64 位 ARM)、i386(32 位 x86)等,常用于判断软件兼容性。 | arch |
who | 显示当前登录到系统的用户信息,包括用户名、登录终端(如 tty1、pts/0)、登录时间,以及远程登录的主机 IP(若通过 SSH 等远程连接)。 | who |
date | 显示或设置系统当前日期和时间;支持自定义格式(通过+格式符 ),示例"+%Y-%m-%d %H:%M:%S" 表示按 “年 - 月 - 日 时:分: 秒” 显示。 | date "+%Y-%m-%d %H:%M:%S" |
cal | 显示日历,默认显示当前月份;可指定参数显示特定年份(如cal 2025 显示 2025 年全年)或月份(如cal 10 2025 显示 2025 年 10 月)。 | cal 2025 |
文件内容处理命令
sort - 排序文本内容
- 作用说明:对文本文件或标准输入进行排序,按行处理,默认按 ASCII 码升序排列。支持数字、日期等特殊排序规则。
- 参数:
- -n:按数字大小排序(而非字符串)。
- -r:降序排列(默认升序)。
- -k 字段号:按指定字段排序(字段以制表符或空格分隔)。
- -t 分隔符:指定字段分隔符(如
-t,
以逗号分隔)。 - -u:去重(仅保留唯一行,需先排序)。
- 代码案例:
# 对numbers.txt按数字升序排序
sort -n numbers.txt# 对passwd文件按第3个字段(UID)降序排序
sort -t: -k3 -r /etc/passwd# 对data.csv按第2列(字符串)升序排序并去重
sort -t, -k2 -u data.csv# 合并并排序两个文件
sort file1.txt file2.txt > merged.txt
cut - 按列提取文本
- 作用说明:从文本行中提取指定字段(列),支持按字符、字节或分隔符分割。常用于处理结构化文本(如 CSV、TSV)。
- 参数:
- -d 分隔符:指定字段分隔符(如
-d,
表示逗号分隔)。 - -f 字段号:指定要提取的字段(如
-f1,3
表示第 1 和第 3 字段)。 - -c 字符范围:按字符位置提取(如
-c1-5
表示前 5 个字符)。
- -d 分隔符:指定字段分隔符(如
- 代码案例:
# 提取passwd文件的用户名(第1字段,以冒号分隔)
cut -d: -f1 /etc/passwd# 提取data.csv的第2、4列
cut -d, -f2,4 data.csv# 提取每行的前10个字符
cut -c1-10 log.txt# 组合使用:提取第3列并排序
cut -d, -f3 data.csv | sort
wc - 统计文件行数、字数、字节数
- 作用说明:统计文件的行数(lines)、单词数(words)、字节数(bytes),默认输出三个统计值。
- 参数:
- -l:仅显示行数。
- -w:仅显示单词数。
- -c:仅显示字节数。
- -m:仅显示字符数(与
-c
不同,多字节字符会计为多个字符)。
- 代码案例:
# 统计readme.txt的行数、单词数和字节数
wc readme.txt
# 输出示例: 24 180 1024 readme.txt# 仅统计行数
wc -l access.log# 统计多个文件的总行数
wc -l file1.txt file2.txt
# 输出示例:
# 10 file1.txt
# 20 file2.txt
# 30 total# 统计当前目录下所有.sh文件的总行数
wc -l *.sh | tail -n 1
awk - 强大的文本处理工具
- 作用说明:一种编程语言,专门用于处理结构化文本。按行读取输入,将每行分割为字段,支持条件判断、循环、函数等,适合复杂的数据处理和报表生成。
- 基本语法:
awk '条件 {动作}' 文件
- 常用内置变量:
$0
:当前整行内容。$1,$2...
:第 1、2... 个字段(默认以空格或制表符分隔)。NF
:当前行的字段数。NR
:当前处理的行号。
- 代码案例:
# 提取passwd文件的用户名和UID(第1和第3字段)
awk -F: '{print $1, $3}' /etc/passwd# 计算data.csv第2列的总和(假设为数字)
awk -F, '{sum += $2} END {print sum}' data.csv# 筛选出分数大于80的学生(第3列>80)
awk -F, '$3 > 80 {print $1, $3}' scores.csv# 统计每个用户的进程数(ps输出的第1列)
ps aux | awk '{count[$1]++} END {for(user in count) print user, count[user]}'# 格式化输出:显示字段宽度对齐的表格
awk -F: '{printf "%-15s %-5d\n", $1, $3}' /etc/passwd
高级用法:
# 复杂条件:同时满足多个条件
awk -F, '$2 > 10 && $3 < 20 {print $1}' data.csv# 内置函数:字符串处理
awk '{print toupper($1)}' names.txt # 转换为大写# 自定义函数:计算平均值
awk -F, '{sum+=$2; count++} END {print "Average:", sum/count}' data.csv
sed - 流编辑器(Stream Editor)
作用:用于文本替换、插入、删除等操作,支持正则表达式。
常用参数:
-i
:直接修改文件内容(谨慎使用)。-e
:执行多个编辑命令。-n
:只输出经过处理的行。
示例:
# 替换文件中的字符串(将 "old" 替换为 "new")
sed 's/old/new/g' file.txt# 删除所有空行
sed '/^$/d' file.txt# 在第 5 行后插入内容
sed '5a 插入的内容' file.txt# 直接修改文件(添加 -i 参数)
sed -i 's/error/warning/g' log.txt
tr - 转换或删除字符(Translate)
作用:对标准输入进行字符替换、删除或压缩。
常用参数:
-d
:删除指定字符。-s
:压缩重复字符。
示例:
# 将小写转换为大写
echo "hello" | tr 'a-z' 'A-Z' # 输出 "HELLO"# 删除所有数字
echo "abc123" | tr -d '0-9' # 输出 "abc"# 压缩连续空格为单个空格
echo "a b c" | tr -s ' ' # 输出 "a b c"