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为bashsudo 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 - 用户名
sudo -i
压缩与归档命令
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.zipzip archive.zip test.txt# 递归压缩目录docs及其所有内容到docs.zipzip -r docs.zip docs/# 压缩目录并排除所有临时文件和log文件zip -r project.zip project/ -x \"*.tmp\" \"*.log\"# 添加新文件到已有的ZIP文件zip archive.zip newfile.txt# 删除ZIP文件中的oldfile.txtzip -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.100ifconfig 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=)
系统信息:
表格
hostname 新主机名
(临时生效,永久修改需配置对应系统文件)。1 5
表示每隔 1 秒输出 1 次,共输出 5 次。-h
参数以人类可读单位(GB/MB)显示,更直观。-h
参数以人类可读单位显示,示例可指定挂载点(如df -h /
)查看根目录空间。-s
表示只显示总和,-h
以人类可读单位显示;示例中Documents/
用于查看指定目录的大小。+格式符
),示例\"+%Y-%m-%d %H:%M:%S\"
表示按 “年 - 月 - 日 时:分: 秒” 显示。cal 2025
显示 2025 年全年)或月份(如cal 10 2025
显示 2025 年 10 月)。文件内容处理命令
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\"