Linux 学习笔记(四):文件检索与管道重定向

一、 检索工具:find 与 grep

  1. find(找文件) :去磁盘里寻找特定的文件 。例如:find /home -name "*.txt" 找出所有 txt 文件。

  2. grep(找内容) :在文件里面寻找匹配的字符串 。例如:grep "error" log.txt 找出文件中含 error 的行。

  • 面试技巧 :which 找可执行命令位置,whereis 找程序的二进制、源码和手册。

二、 检索工具的高阶参数

grep 常用选项:

  • -i:忽略大小写。

  • -n:显示行号。

  • -v:反向选择(显示不包含该字符串的行)。

find 常用选项:

  • -name:按文件名查找。

  • -type:按文件类型查找(f 为普通文件,d 为目录)。

三、 灵魂所在:管道符 | 与重定向 > >>

1. 管道符 |

管道的核心思想是:前一个命令的输出,作为后一个命令的输入。

实战场景:我想在 /etc 目录下找所有带 "ssh" 名字的文件。

bash 复制代码
ls /etc | grep "ssh"

进阶场景:未来查看系统进程,过滤特定服务:

bash 复制代码
ps aux | grep "nginx"

2. 重定向 > 与 >>

默认情况下,命令的输出会打印在屏幕上。用重定向可以改变输出位置。

  • >:覆盖写入。如果文件存在,旧内容会被清空。

  • >>:追加写入。新内容会加到文件末尾,常用作日志记录。

bash 复制代码
echo "测试覆盖" > test.log
echo "测试追加" >> test.log

四、 终端实用小技巧:清屏

当终端屏幕被大量输出占满时,有三种清屏方式:

  1. clear 命令:最标准的清屏指令。

  2. Ctrl + L 快捷键:强烈推荐,无需敲回车,瞬间清空当前视口,效率最高。

  3. reset 命令:当终端因为输出二进制文件导致乱码,或者终端卡死时,使用此命令可以彻底重置终端状态。

注意:clear 只是把内容顶到了上面,如果向上滚动鼠标滚轮,依然能看到之前的输出记录。如果想清空命令历史,可以使用 history -c。

五**、**面试/进阶冷知识

  • clear 真的把屏幕内容删了吗?

    没有。在 Linux 中,clear 或者 Ctrl + L 只是把之前的输出内容"往上翻"推到了缓冲区。如果你往上滚动鼠标滚轮,还是能看到之前的记录。

  • 想彻底清空历史记录怎么办?

    输入 history -c,这会把你敲过的历史命令记录清空。

总结

find 找文件,grep 找内容。而管道符 | 就像流水线,把无数个简单的小命令串联成了极其强大的工具。面试中,能把 grep 和管道结合使用,是基本功的体现。

自我实战操作

实战 1:grep 文本搜索(配合管道)
bash 复制代码
cd ~
# 创建一个包含各种信息的文件
echo -e "Error: connection failed\nSuccess: user login\nWarning: disk full" > status.log

# 1. 查找包含 Error 的行
grep "Error" status.log

# 2. 忽略大小写(-i)
grep -i "error" status.log

# 3. 反向查找(-v),即看除了包含 error 以外的行
grep -v "Error" status.log

# 4. 显示行号(-n)
grep -n "Error" status.log
实战 2:find 文件查找
bash 复制代码
# 1. 准备环境
mkdir -p mydir/subdir
touch mydir/test1.txt mydir/test2.c mydir/subdir/test3.txt

# 2. 按名称查找 (-name)
find ~/mydir -name "*.txt"

# 3. 按类型查找 (-type d 代表目录,f 代表普通文件)
find ~/mydir -type d
find ~/mydir -type f
实战 3:which 与 whereis
bash 复制代码
which ls
whereis ls
# 观察两者的区别,whereis 给出的信息更多
实战 4:体验管道的威力(管道 + grep)
bash 复制代码
# 1. 我们想看看 /etc 目录下有哪些跟 ssh 有关的文件
ls /etc | grep "ssh"

# 2. 假设我们要查看进程,找出 nginx 的进程(目前没安装,所以没输出,但记住这个语法)
ps aux | grep "nginx" 
实战 5:重定向 (> 与 >>)
bash 复制代码
# 1. 覆盖写入(相当于清空并写新内容)
echo "第一行" > redirect.txt
cat redirect.txt

# 2. 追加写入(在末尾加)
echo "第二行" >> redirect.txt
cat redirect.txt

# 3. 覆盖的坑:本来文件有两行,你这么干就剩一行了
echo "我覆盖了前面的" > redirect.txt
cat redirect.txt
相关推荐
王夏奇1 小时前
AI工具学习
网络·学习
Warolitbos1 小时前
【数据库】SQL进阶15题,窗口函数/索引/事务一页速查
数据库·sql·学习·mysql·面试
帷幕落秋2 小时前
Linux 网络基础
linux
高晶2 小时前
ARM 嵌入式 Linux 命令系统 BusyBox 实战指南
linux·设计模式·程序员
愤怒火龙果3 小时前
蓝队笔记整理04 安全设备、内网处置与云上防护
笔记·网络安全
祥Sir的SRE笔记3 小时前
CPU 100% 不一定是故障:压测打满、业务饱和、突变打满的判断与排查
linux·面试·性能优化·dba·sre·故障定位·性能排查
剑藏锋4 小时前
嵌入式学习(48)-大彩串口屏TFT指令解析
学习
郝亚军4 小时前
在win11上用openssl生成私钥、再从私钥导出公钥、...
linux·运维·服务器
cxyxixiy4 小时前
数智码力:数据核对不用人工比对,Python 快速完成多表格差异校验
开发语言·python·学习