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
相关推荐
§ꦿCFོ༉13 分钟前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
2603_969694852 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea2 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
唐墨1233 小时前
linux kernel 比较数据大小的宏定义
linux·算法
程序开发阿元4 小时前
密码不进工具:一个独立开发者的服务器凭据管理办法
linux·ssh
Go Work6 小时前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct6 小时前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
AR-26710-7 小时前
Linux Day33——定时任务+lvm
linux·运维
墨痕诉清风8 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
byte轻骑兵8 小时前
实战 4:BlueZ 源码中添加自定义设备过滤规则
linux·物联网·bluez·电脑蓝牙·嵌入式蓝牙