Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 834|回复: 0

Linux重定向和管道

[复制链接]

242

主题

327

帖子

2221

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2221
发表于 2023-7-12 20:22:36 | 显示全部楼层 |阅读模式
重定向

标准错误重定向是一种Linux/Unix操作系统中常见的输入输出重定向技术,用于将程序的错误输出(stderr)重定向到文件或程序的标准输出(stdout)上,从而实现对程序输出结果的控制和管理。

在Linux/Unix系统中,每个进程都有三个标准的I/O流:

标准输入(stdin):通常输入设备为键盘;
标准输出(stdout):通常输出设备为屏幕;
标准错误(stderr):通常输出设备为屏幕,用于输出错误信息。
当程序执行时,如果没有进行重定向操作,三个I/O流将连接到终端设备(通常为屏幕和键盘)。当程序发生错误时,错误信息会输出到标准错误流(stderr),并打印在屏幕上。这时,用户不方便对错误信息进行保存、查看和处理。

使用标准错误重定向技术,可以将程序的错误输出流(stderr)重定向到文件或程序的标准输出流(stdout)上,以方便对程序的输出进行控制、管理和分析。例如,将错误日志输出到一个文件:

command > output.txt 2> error.txt   (注意这里>代表标准输出流,>2代表错误流,等于command的输出被分流了)

需要注意的是,标准输入、标准输出和标准错误三者之间是相互独立的,因此需要对它们进行单独的重定向操作。


管道命令

命令A|命令B --> 命令A的输出当做命令B的输入

管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

例如,统计系统设备目录 /dev 下有多少个文件或子目录:

ls -l /dev | wc -l
————————————————
版权声明:本文为CSDN博主「路上阡陌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51431003/article/details/130340869

ls -l > out.file 2>&1 &
解释:
ls -l > out.file //将ls的输出重定向到文件out.file
2>&1 //在shell中,文件描述符通常是:STDIN,STDOUT,STDERR,即:0,1,2,由此可以看出,它将ls -l > out.file在输出过程中产生的错误信息也放在了STDOUT,即:1中,你可以作实验,如果命令产生了错误,那么错误信息也就在out.file中.
最后的& ,不用说,是放在后台运行.

ref:  http://www.yesweb.net/202304/4339.html

Linux tee命令

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。


tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。


  • -a或--append  附加到既有文件的后面,而非覆盖它.
  • -i或--ignore-interrupts  忽略中断信号。
  • --help  在线帮助。
  • --version  显示版本信息。


xargs  指令 用于将命令A的输出放在命令B之后,作为命令B的参数使用。
如下:
commnad A | xargs command B

实例
使用指令"tee"将用户输入的数据同时保存到文件"file1"和"file2"中,输入如下命令:
$ tee file1 file2                   #在两个文件中复制内容
以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:
My Linux                        #提示用户输入数据

My Linux                        #输出数据,进行输出反馈  


此时,可以分别打开文件"file1"和"file2",查看其内容是否均是"My Linux"即可判断指令"tee"是否执行成功。


ref: 另一处管道和重定向说明:https://blog.unicoder.cn/forum.p ... d=81&extra=page%3D1






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-17 07:04 , Processed in 0.010047 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表