重定向和管道——让Linux如虎添翼

2024-03-23 23:48

本文主要是介绍重定向和管道——让Linux如虎添翼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux操作系统设计了重定向和管道,让“组合”的威力硕大无比,这是Windows无法比拟的,废话少说,下面看看几个例子。

首先利用vi编辑器写个简单的C程序吧,就叫avg.c吧,如下图所示。


程序逻辑很简单,就是输入sum和n然后输出sum/n的值。

下面编译、运行一把,如下图所示。


接下来见识一下重定向的威力,可以将标准输出重定向到一个文件中,如下图所示。图中用./avg.out >>avg.txt命令将标准输出重定向到avg.txt文件中,终端不再输出提示信息,直接输入80,10,再cat avg.txt,可以看到标准输出已经重定向到avg.txt文件中。再次输入./avg.out >>avg.txt命令,输入80,20,标准输出再次追加到文件中。


如果希望标准输出以覆盖的显示重定向到avg1.txt文件中,输入命令./avg.out >avg.txt即可,注意只有一个“>”,如下图所示。


那么可不可以重定向到标准输入流呢?答案是肯定的。首先新建一个文件input.txt,里面存放待输入程序的数据80,10,如下图所示。


接下来,通过命令./avg.out <input.txt即可将文件重定向到标准输入流,如下图所示。


还可以将错误流重定向到文件,通过命令./avg.out 1>>a.txt 2>>b.txt,将标准输出流重定向到a.txt文件。错误流重定向到b.txt,如下图所示。


接下来该见识一下管道的威力了,据此,在写一个简单的C程序input.c,如图下图所示。


这回,通过管道,把input.out和avg.out连接起来,一个程序完成输入数据并求和及其统计输入个数,一个求平均值,据此,通过管道,完成了诸如输入公司每个员工的工资,求公司员工的平均工资,输入学生各科成绩,求学生的平均成绩之类的功能。输入./input.out | ./avg.out命令即可完成功能,如下图所示。


那么,将管道和重定向集合起来会怎么样呢?威力会更大!如下图所示。


正如你所料的,这回你可以把数据保存在文件了,然后通过一条命令./input.out <input.txt | ./avg.out >>output.txt即可将两个可执行文件连接起来,最后将运行结果重定向到output.txt文件中。

至此,Linux的重定向和管道的用法就差不多了,我们可以看到,通过重定向和管道机制,可以将几个功能简单的小程序组合起来,完成更加强大的功能,Linux就是靠这种机制,使自己如虎添翼,无懈可击!

这篇关于重定向和管道——让Linux如虎添翼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839891

相关文章

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l