当前位置:首页>Linux>Linux 常用命令大全:grep、sed、find、tar 实操详解

Linux 常用命令大全:grep、sed、find、tar 实操详解

  • 2026-09-02 19:25:48
Linux 常用命令大全:grep、sed、find、tar 实操详解

字数 3030,阅读大约需 16 分钟

文件操作命令

创建文件

# 创建空文件
touch
 file.txt

# 创建多个文件

touch
 file1.txt file2.txt file3.txt

# 创建带内容的文件

echo
 "Hello World" > file.txt

# 追加内容

echo
 "Second line" >> file.txt

复制文件

# 复制文件
cp
 source.txt dest.txt

# 复制目录(递归)

cp
 -r /source/dir /dest/dir

# 保留属性复制

cp
 -p source.txt dest.txt

# 交互式复制(覆盖前询问)

cp
 -i source.txt dest.txt

# 显示进度

cp
 -v source.txt dest.txt

移动/重命名文件

# 移动文件
mv
 file.txt /new/location/

# 重命名文件

mv
 oldname.txt newname.txt

# 移动并重命名

mv
 file.txt /new/location/newname.txt

# 交互式移动

mv
 -i file.txt dest/

删除文件

# 删除文件
rm
 file.txt

# 删除多个文件

rm
 file1.txt file2.txt

# 交互式删除(推荐)

rm
 -i file.txt

# 强制删除(危险!)

rm
 -f file.txt

# 删除目录(递归)

rm
 -r /path/to/dir

# 强制删除目录(极度危险!)

rm
 -rf /path/to/dir

查找文件

# 按名称查找
find /home -name "*.txt"

# 按类型查找(f 文件,d 目录)

find /var -type f -name "*.log"

# 按大小查找(+100M 大于 100M)

find / -size +100M

# 按时间查找(-7 天以内)

find /home -mtime -7

# 查找并删除

find /tmp -name "*.tmp" -delete

# 查找并执行命令

find /var/log -name "*.log" -exec gzip {} \;

链接文件

# 软链接(类似 Windows 快捷方式)
ln
 -s /path/to/source linkname

# 硬链接(同一 inode)

ln
 source.txt hardlink.txt

# 查看链接

ls
 -l linkname

目录操作命令

创建目录

# 创建单个目录
mkdir
 newdir

# 创建多级目录(递归)

mkdir
 -p /path/to/deep/dir

# 创建多个目录

mkdir
 dir1 dir2 dir3

# 创建目录并设置权限

mkdir
 -m 755 newdir

切换目录

# 绝对路径
cd
 /home/longge/projects

# 相对路径

cd
 projects

# 返回上级

cd
 ..

# 返回主目录

cd
 ~
# 或

cd


# 返回上一个目录

cd
 -

# 查看当前目录

pwd

查看目录内容

# 基本列表
ls


# 详细列表

ls
 -l

# 显示隐藏文件

ls
 -a

# 详细 + 隐藏

ls
 -la

# 人类可读大小

ls
 -lh

# 按时间排序

ls
 -lt

# 按大小排序

ls
 -lS

# 递归显示

ls
 -lR

# 只显示目录

ls
 -d */

查看目录大小

# 查看目录总大小
du
 -sh /path/to/dir

# 查看子目录大小

du
 -h --max-depth=1 /path/to/dir

# 查看当前目录各文件大小

du
 -h * | sort -hr

文本查看命令

查看整个文件

# 查看小文件
cat
 file.txt

# 查看多个文件

cat
 file1.txt file2.txt

# 显示行号

cat
 -n file.txt

# 显示非空行号

cat
 -b file.txt

分页查看

# 分页查看(空格下一页,q 退出)
less file.txt

# 分页查看(不可后退)

more file.txt

# 查看前 N 行

head
 -n 20 file.txt

# 查看后 N 行

tail
 -n 20 file.txt

# 实时查看日志(按 Ctrl+C 退出)

tail
 -f /var/log/syslog

# 实时查看 + 显示已有内容

tail
 -f -n 50 /var/log/syslog

查看文件行数/字数

# 行数、单词数、字节数
wc
 file.txt

# 只显示行数

wc
 -l file.txt

# 只显示单词数

wc
 -w file.txt

# 只显示字符数

wc
 -c file.txt

# 统计多个文件

wc
 -l *.txt

文本处理命令

搜索文本(grep)

# 基本搜索
grep "pattern" file.txt

# 忽略大小写

grep -i "pattern" file.txt

# 显示行号

grep -n "pattern" file.txt

# 反向匹配(不包含)

grep -v "pattern" file.txt

# 递归搜索目录

grep -r "pattern" /path/to/dir

# 显示匹配行前后 3 行

grep -C 3 "pattern" file.txt

# 显示匹配行后 5 行

grep -A 5 "pattern" file.txt

# 显示匹配行前 5 行

grep -B 5 "pattern" file.txt

# 使用正则表达式

grep -E "^[0-9]+" file.txt

# 统计匹配行数

grep -c "pattern" file.txt

文本替换(sed)

# 替换第一个匹配
sed 's/old/new/' file.txt

# 替换所有匹配

sed 's/old/new/g' file.txt

# 直接修改文件

sed -i 's/old/new/g' file.txt

# 备份后修改

sed -i.bak 's/old/new/g' file.txt

# 删除空行

sed '/^$/d' file.txt

# 删除包含 pattern 的行

sed '/pattern/d' file.txt

# 只打印匹配行

sed -n '/pattern/p' file.txt

# 替换第 N 行

sed '5s/old/new/' file.txt

# 替换行范围

sed '1,10s/old/new/g' file.txt

文本提取(cut)

# 按字段提取(冒号分隔)
cut
 -d: -f1 /etc/passwd

# 提取多个字段

cut
 -d: -f1,3,7 /etc/passwd

# 按字符位置提取

cut
 -c1-10 file.txt

# 按字节提取

cut
 -b1-5 file.txt

文本排序(sort)

# 基本排序
sort
 file.txt

# 逆序排序

sort
 -r file.txt

# 数字排序

sort
 -n file.txt

# 忽略大小写

sort
 -f file.txt

# 按指定字段排序(冒号分隔,第 3 字段)

sort
 -t: -k3 /etc/passwd

# 去重排序

sort
 -u file.txt

# 随机排序

sort
 -R file.txt

去重(uniq)

# 去重(需要先排序)
sort
 file.txt | uniq

# 统计重复次数

sort
 file.txt | uniq -c

# 只显示重复行

sort
 file.txt | uniq -d

# 只显示不重复行

sort
 file.txt | uniq -u

文本转换(tr)

# 小写转大写
cat
 file.txt | tr 'a-z' 'A-Z'

# 大写转小写

cat
 file.txt | tr 'A-Z' 'a-z'

# 删除指定字符

cat
 file.txt | tr -d '\r'

# 替换字符

cat
 file.txt | tr ':' '\t'

# 压缩重复字符

cat
 file.txt | tr -s ' '

系统信息命令

系统基本信息

# 查看系统信息
uname
 -a

# 查看内核版本

uname
 -r

# 查看主机名

hostname

# 查看运行时间

uptime


# 查看登录用户

who


# 查看当前用户

whoami

硬件信息

# 查看 CPU 信息
cat
 /proc/cpuinfo
# 或

lscpu

# 查看内存信息

cat
 /proc/meminfo
# 或

free -h

# 查看磁盘信息

df
 -h

# 查看磁盘分区

fdisk -l

# 查看 PCI 设备

lspci

# 查看 USB 设备

lsusb

系统负载

# 查看进程快照
ps aux

# 查看进程树

pstree

# 实时进程监控

top

# 增强版 top

htop

# 查看系统负载

w

# 查看最后登录

last

网络命令

网络配置

# 查看 IP 地址
ip addr
# 或(旧版)

ifconfig

# 查看路由表

ip route
# 或

route -n

# 查看 DNS 配置

cat
 /etc/resolv.conf

# 查看网络接口

ip link show

网络连通性

# Ping 测试
ping -c 4 google.com

# 跟踪路由

traceroute google.com
# 或

tracepath google.com

# 测试端口连通性

telnet host port
# 或

nc -zv host port

网络诊断

# 查看监听端口
netstat -tulpn
# 或(新版)

ss -tulpn

# 查看网络连接

netstat -an
# 或

ss -an

# DNS 查询

nslookup domain.com
# 或

dig domain.com

# 查看主机名解析

cat
 /etc/hosts

下载文件

# 下载文件
wget https://example.com/file.zip

# 指定输出文件名

wget -O myfile.zip https://example.com/file.zip

# 断点续传

wget -c https://example.com/file.zip

# 后台下载

wget -b https://example.com/file.zip

# 使用 curl 下载

curl -O https://example.com/file.zip

# 指定输出文件名

curl -o myfile.zip https://example.com/file.zip

进程管理命令

查看进程

# 查看所有进程
ps aux

# 查看当前用户进程

ps u

# 查看进程树

pstree

# 按名称查找进程

ps aux | grep nginx

# 查看进程详细信息

cat
 /proc/PID/status

终止进程

# 正常终止
kill
 PID

# 强制终止

kill
 -9 PID

# 按名称终止

pkill processname

# 按名称终止(交互确认)

killall -i processname

# 优雅终止(发送 SIGTERM)

kill
 -15 PID

后台任务

# 后台运行
command
 &

# 查看后台任务

jobs


# 将后台任务调到前台

fg
 %1

# 将前台任务调到后台(先 Ctrl+Z)

bg
 %1

# 断开终端继续运行

nohup
 command &

# 或使用 screen

screen -S sessionname

进程优先级

# 以指定优先级启动(-20 最高,19 最低)
nice
 -n 10 command

# 修改运行中进程优先级

renice -n 5 -p PID

压缩解压命令

tar(打包工具)

# 创建 tar 包
tar -cvf archive.tar file1 file2

# 创建 gzip 压缩

tar -czvf archive.tar.gz /path/to/dir

# 创建 bzip2 压缩

tar -cjvf archive.tar.bz2 /path/to/dir

# 解压 tar 包

tar -xvf archive.tar

# 解压 gzip 压缩

tar -xzvf archive.tar.gz

# 解压 bzip2 压缩

tar -xjvf archive.tar.bz2

# 查看 tar 包内容

tar -tvf archive.tar

# 解压到指定目录

tar -xzvf archive.tar.gz -C /target/dir

# 只解压特定文件

tar -xzvf archive.tar.gz file1.txt

zip/unzip

# 压缩文件
zip archive.zip file1 file2

# 压缩目录(递归)

zip -r archive.zip /path/to/dir

# 解压文件

unzip archive.zip

# 解压到指定目录

unzip archive.zip -d /target/dir

# 查看压缩包内容

unzip -l archive.zip

gzip/gunzip

# 压缩文件
gzip file.txt
# 生成 file.txt.gz


# 解压文件

gunzip file.txt.gz
# 或

gzip -d file.txt.gz

# 查看压缩文件内容

zcat file.txt.gz

命令组合技巧

管道(|)

# 将前一个命令的输出作为后一个命令的输入
ps aux | grep nginx

# 多段管道

ps aux | grep nginx | grep -v grep | wc -l

# 查看日志中的错误

tail
 -f /var/log/syslog | grep -i error

重定向(> >>)

# 覆盖输出
echo
 "hello" > file.txt

# 追加输出

echo
 "world" >> file.txt

# 错误重定向

command
 2> error.log

# 标准输出和错误都重定向

command
 > output.log 2>&1

# 丢弃输出

command
 > /dev/null 2>&1

命令分隔符

# 顺序执行(无论前一个是否成功)
command1 ; command2

# 成功才执行下一个

command1 && command2

# 失败才执行下一个

command1 || command2

# 组合使用

command1 && command2 || echo "Failed"

命令替换

# 使用 $()
echo
 "Today is $(date)"

# 使用反引号(旧语法)

echo
 "Today is `date`"

# 嵌套使用

echo
 "Files: $(ls -la | wc -l)"

xargs(参数传递)

# 将输入转换为参数
find . -name "*.txt" | xargs rm

# 安全处理含空格的文件名

find . -name "*.txt" -print0 | xargs -0 rm

# 限制每次处理的参数数量

find . -name "*.txt" | xargs -n 10 rm

# 交互式确认

find . -name "*.txt" | xargs -p rm

避坑指南

坑 1:rm -rf 误删

# ❌ 错误:变量为空时删除根目录
rm
 -rf $MYDIR/*

# ✅ 正确:先检查变量

if
 [ -n "$MYDIR" ]; then
    rm
 -rf "$MYDIR"/*
fi


# 或使用交互式

rm
 -ri "$MYDIR"/*

坑 2:cp 覆盖重要文件

# ❌ 错误:直接覆盖
cp
 new.conf /etc/nginx/nginx.conf

# ✅ 正确:先备份

cp
 /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
cp
 new.conf /etc/nginx/nginx.conf

# 或使用交互式

cp
 -i new.conf /etc/nginx/nginx.conf

坑 3:grep 匹配意外内容

# ❌ 错误:匹配到 grep 自身
ps aux | grep nginx

# ✅ 正确:排除 grep 进程

ps aux | grep nginx | grep -v grep

# 或使用正则

ps aux | grep [n]ginx

坑 4:管道丢失错误

# ❌ 错误:只检查最后一个命令
command1 | command2 | command3

# ✅ 正确:启用管道错误检查

set
 -o pipefail
command1 | command2 | command3

坑 5:文件名含空格

# ❌ 错误:空格导致参数分裂
for
 file in *.txt; do
    rm
 $file
done


# ✅ 正确:加引号

for
 file in *.txt; do
    rm
 "$file"
done


# 或使用 find

find . -name "*.txt" -print0 | xargs -0 rm

练习题

基础题

  1. 1. 查找 /home 目录下所有 .log 文件
  2. 2. 统计当前目录下 .txt 文件的总行数
  3. 3. 将 /var/log/syslog 中包含 "error" 的行提取到新文件

进阶题

  1. 4. 找出系统中大于100M 的文件,并按大小排序
  2. 5. 批量将当前目录下所有 .txt 文件转为 .bak 备份
  3. 6. 监控 nginx 访问日志,实时显示 404 错误

答案

# 1
find /home -name "*.log"

# 2

wc
 -l *.txt | tail -1

# 3

grep "error" /var/log/syslog > errors.txt

# 4

find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -h

# 5

for
 f in *.txt; do cp "$f" "${f%.txt}.bak"; done

# 6

tail
 -f /var/log/nginx/access.log | grep " 404 "

📊 命令速查表

功能
命令
示例
查看文件
catcat file.txt
分页查看
lessless file.txt
查看末尾
tailtail -f log.txt
搜索文本
grepgrep "error" log.txt
文本替换
sedsed 's/a/b/g' file.txt
查找文件
findfind /home -name "*.txt"
查看进程
psps aux
终止进程
killkill -9 PID
查看磁盘
dfdf -h
查看目录大小
dudu -sh /dir
压缩
tar -czvftar -czvf archive.tar.gz dir/
解压
tar -xzvftar -xzvf archive.tar.gz
下载
wgetwget url
网络测试
pingping google.com
端口监听
ssss -tulpn

最新文章

随机文章