Linux之文件重定向与查找

文件描述符#

作用#

  • 是内核为了高效管理已经被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统都是调用文件描述符
  • 文件描述符是一个非负整数,用来标明每一个被打开的文件 例如:第一个文件其描述符为0 第二个为1 依次类推
  • 可以将文件描述符看成文件的ID

输入输出标准说明#

  • STDIN(标准输入):默认的是键盘输入 文件描述符:0
  • STDOUT(标准输出):默认是显示器 也可以重定向到文件 文件描述符:1
  • STDERR(标准错误):默认是显示器 也可以重定向到文件 文件描述符:2

fd#

用来查看一个进程下打开了哪些文件

Copy
[root@SR ~]# vim /etc/passwd [root@SR ~]# ps -aux | grep passwd root 3703 0.9 0.1 48716 8616 pts/0 S+ 17:02 0:00 vim /etc/passwd [root@SR ~]# ll /proc/3703/fd 总用量 0 lrwx------. 1 root root 64 51 17:03 0 -> /dev/pts/0 lrwx------. 1 root root 64 51 17:03 1 -> /dev/pts/0 lrwx------. 1 root root 64 51 17:03 2 -> /dev/pts/0 lr-x------. 1 root root 64 51 17:03 3 -> /var/lib/sss/mc/passwd lrwx------. 1 root root 64 51 17:03 4 -> 'socket:[64492]' lrwx------. 1 root root 64 51 17:03 6 -> /etc/.passwd.swp ps:上述 0 1 2 4即是文件描述符

Copy
对文件描述符的操作就是对文件本身的操作。 我可以直接通过操作文件描述来修改文件。 查看和临时设置一个迚程最多可以打开几个文件,卲:一个迚程可以打开的文件描述符限制 [root@SR ~]# ulimit -n #查看一个迚程最多可以同时打开的文件数 1024 [root@SR ~]# ulimit -n 2048 #修改一个迚程最多可以同时打开的文件数为 2048 [root@SR ~]# ulimit -n 2048

重定向#

作用#

将输出的内容通过重定向可以指定到我们想要存储的文件 而不是直接输出到屏幕

输出重定向#

>#

将输出的内容输出到一个指定的文件 如果该文件有内容会被直接覆盖

Copy
[root@SR ~]# cat /proc/cpuinfo > cpu.txt 文件重定向 [root@SR ~]# [root@SR ~]# head -1 cpu.txt # 查看文件首行 [root@SR ~]# [root@SR ~]# echo hello world > cpu.txt # 再次重定向 [root@SR ~]# head -1 cpu.txt # 查看文件首行 发现原来的文件内容都被覆盖了

>>#

将输出的内容输出到一个指定的文件 其不会覆盖原文件的内容 而是会在尾部追加

Copy
[root@SR ~]# echo '测试>>尾部追加' > test.txt [root@SR ~]# [root@SR ~]# cat test.txt 测试>>尾部追加 [root@SR ~]# [root@SR ~]# echo '追加成功' >> test.txt [root@SR ~]# [root@SR ~]# cat test.txt 测试>>尾部追加 追加成功

输入重定向#

其输入方式不是从键盘进行输入 而是可以从其余方式进行输入 例如:文件

<#

Copy
[root@SR ~]# grep root < /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

错误重定向#

将在输入中产生的错误提示信息 重定向到文件中而不是在屏幕显示

2>#

Copy
[root@SR ~]# ll asjkd~ 2> b.txt [root@SR ~]# [root@SR ~]# cat b.txt ls: 无法访问'asjkd~': 没有那个文件或目录 PS 使用 2> 操作符时,会像使用 > 一样覆盖目标文件的内容,若追加而丌覆盖文件的内容卲可使用 2>> 操作符

null#

把null看成黑洞 写入到该null中的所有文件都会消失 同时读取数据也不会有任何显示

Copy
[root@SR ~]# echo '测试null' > /dev/null [root@SR ~]# [root@SR ~]# cat /dev/null

zero#

当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。 典型用法是用它来产生一个特定大小的空白文件

Copy
[root@SR ~]# dd if=/dev/zero of=b.txt bs=1M count=50 记录了50+0 的读入 记录了50+0 的写出 52428800 bytes (52 MB, 50 MiB) copied, 0.111958 s, 468 MB/s [root@SR ~]# ll -h b.txt -rw-r--r--. 1 root root 50M 51 18:02 b.txt [root@SR ~]# cat b.txt # 无任何显示

EOF#

作用#

  • EOF 本意是 End Of File,表明到了文件末尾。” EOF“通常不” <<“结合使用
  • <<EOF“表示后续的输入作为子命令戒子 shell 的输入,直到遇到” EOF
  • 再次返回到主调 shell,可将其理解为分界符(delimiter)。既然是分界符,那举形式自然丌是固定的
  • 这里可以将” EOF“可以迚行自定丿,但是前后的” EOF“必须成对出现丏丌能和 shell 命令冲突
Copy
[root@SR ~]# cat > a.txt << EOF > ajksdhkasjd > asjkdhaksd > asdkjhaskdj > EOF

管道符#

作用#

一个命令输出的结果作为另外一个命令输出的条件

语法#

command -a | command -b

Copy
管道命令只处理前面正确命令 不处理错误命令 管道右边的命令必须能够接受正确的数据输入流 管道符可以连接多个命令

tee#

作用#

会将标准输出的数据流输出到标准输出设备上同时保存到文件

可选参数#

-a#

尾部追加

查找命令#

which#

查看可执行文件的位置

whereis#

查看可执行文件位置以及相关文件

locate#

配合数据库缓存 快速查看相关文件

Copy
locate 命令和 find -name 功能差不多 是它的另外一种写法 相比较find其查找速度更加快速 因为在find中查找文件是根据目录查找 而那个locate查找数据是查找一个数据库/var/lib/mlocate/mlocate.db 这个数据库保存本地所有文件的信息 并且自动更新相关的配置信息在/etc/updatedb.conf查看定时任务信息在/etc/cron.daily/mlocate

grep#

其能根据正则进行数据匹配 并且把数据打印出来

可选参数#

-v

取反

^#

匹配以什么开头

$#

匹配以什么结束

^$#

匹配一个空行

-i#

忽略大小写

-n#

对过滤的内容加上行号

find#

根据条件进行文件查找

可选参数#

-name

根据文件名称进行查找

-perm#

根据文件权限进行查找

-user#

根据文件属主进行查找

-group#

根据文件属组进行查找

-mtime#

按照文件修改时间来查找文件

Copy
- n 表示文件更改时间距现在 n 天以内 + n表示文件更改时间距现在 n 天以前

-type#

根据文件类型进行文件查找

-size#

根据文件大小进行查找

-exec#

对匹配的文件执行该参数所给出的其他 linux 命令

-a#

多个条件并列

-o#

满足一个条件即可

-+#

超过

--#

低于

命令判断#

;#

连续执行 不考虑命令的正确性

&&#

逻辑与
只有前面的命令执行成功 才会执行后面的命令

||#

逻辑或
前面的命令执行成功 后面的命令则不执行 或者前面的命令执行失败 后面的才会执行

posted @   SR丶  阅读(4187)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
CONTENTS