首页 > 系统相关 >Linux I/O重定向与管道

Linux I/O重定向与管道

时间:2023-11-28 23:46:27浏览次数:36  
标签:输出 重定向 文件 命令 管道 Linux 输入

在生产环境中,每天凌晨需要备份数据库,这时工作人员会编写一个简单的脚本创建计划任务,把脚本执行结果放到一个或几个文件中以便第二天查看,这个过程就叫重定向。在使用"ps aux"命令时,为了快速找到所需要信息,经常使用grep命令进行过滤,此时就需要使用管道符。

I/O重定向

      I/O运行一个程序时 , 需要从某个位置读取输入信息 , 然后 cpu 处理, 最后将输出显示到屏幕或文件进程通过文件描述符的编号通道来获取输入并输出。

     Linux I/O重定向可以定义为,更改从命令读取输入到命令发送输出的方式。你可以重定向命令的输入和输出。对于重定向符号,可以是<、> 或者 | 。

     I/O重定向中的标准流

     Bash shell在I/O重定向中有三个标准流:

标准输入(stdin):stdin流编号为stdin(0)。bash shell从stdin获取输入。默认情况下,键盘用作输入。
标准输出(stdout):stdout流编号为stdout(1)。bash shell将输出发送到stdout。输出将显示。
标准错误(stderr):stderr流编号为stderr(2)。bash shell向stderr发送错误消息。显示错误消息。

     重定向到文件

     每个流都使用重定向命令。单括号'>'或双括号'>>'可用于重定向标准输出。如果目标文件不存在,将创建一个具有相同名称的新文件。

     覆盖:带有单括号“>”的命令将覆盖现有的文件内容。

>:标准输出
<:标准输入
2>:标准错误

     注意:写“1>”或“>”和“0<”或“<”是一回事。但对于stderr,必须编写“2>”。

用法:
cat > <fileName>

输入重定向

    输入重定向是指把命令的标准输入改变为指定的文件(包括设备文件),使命令从该文件中而不是从键盘中获取输入。输入重定向主要用于改变那些需要大量标准输入的命令的输入源。输入重定向的格式为:

命令 < 文件

    当提交这样的一个命令行时,Shell首先断开键盘与命令的stdin之间的关联,将指定的文件关联到stdin,然后运行命令。这样,该命令就会从这个文件中读取标准输入信息。

【例1】输入重定向的应用。

[root@localhost ~]# cat file
This is Linux world.
[root@localhost ~]# cat < file
This is Linux world.

输出重定向

    输出重定向是指把命令的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到文件中。很多情况下都可以使用输出重定向功能。输出重定向的一般形式为:

标准输出重定向:命令 > 文件
附加输出重定向:命令 >> 文件

    标准输出重定向就是将命令的标准输出保存到一个文件中,当提交这样的一个命令行时,Shell首先断开命令的标准输出stdout与屏幕之间的关联,找到指定的文件(若该文件不存在就新建一个),然后将这个文件关联到命令的标准输出上。随后Shel启动该命令运行。这样,该命令产生的所有标准输出信息都将写入这个文件中,而不是显示在屏幕上。

    附加输出重定向与标准输出重定向相似,只是当指定的文件存在时,标准输出重定向的做法是先将文件清空,再将命令的输出信息写入,而附加输出重定向则是保留文件内原有的内容,将命令的输出附加在后面。

【例2】输出重定向的应用。

[root@localhost ~]# echo "this is Linux world!" > file
[root@localhost ~]# cat file
this is Linux world!
[root@localhost ~]# echo "this is not Linux world!" > file
[root@localhost ~]# cat file
this is not Linux world!
[root@localhost ~]# echo "this is Linux world!" >> file
[root@localhost ~]# cat file
this is not Linux world!
this is Linux world!

 进程管道

      管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。

管道命令

      管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在一起。

1. 基础管道(|)

管道允许将一个命令的输出传递给另一个命令的输入,实现多个命令协同工作。例如:

$ command1 | command2

这将command1的输出作为command2的输入。

2. 管道和grep命令

结合管道和grep命令,可以更灵活地进行文本搜索和过滤。例如:

$ cat file.txt | grep "pattern"

这将显示file.txt中包含特定模式的行。

常用选项:

  • -i:忽略大小写进行匹配。
  • -v:反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号。
  • -r:递归查找子目录中的文件。
  • -l:只打印匹配的文件名。
  • -c:只打印匹配的行数。

2. 管道和awk/sed命令

使用管道结合awksed等文本处理工具,可以实现复杂的文本操作。例如:

$ cat data.txt | awk '{print $1}' | sed 's/old/new/'

这将从data.txt中提取第一列,然后用sed替换文本。

标签:输出,重定向,文件,命令,管道,Linux,输入
From: https://www.cnblogs.com/sangzhi/p/17863461.html

相关文章

  • Linux LVM磁盘
    逻辑卷概念  LVM,LogicalVolumeManger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备。  LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底......
  • Linux--文件查找、打包压缩以解压
    文件查找1.echo命令查看PATH变量的值: 2.which命令在环境变量PATH设置的目录中查找符合条件的命令条件:参数:n<文件名长度>指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。p<文件名长度>与-n参数相同,但此处的<文件名长度>包括了文件的路径。w指定......
  • linux安装opencv
    安装步骤:1、去官方网站下载使用的压缩包: https://opencv.org/releases.html2、上传到服务器并解压文件cd/usr/local/unzipopencv-2.4.13.zip3、创建编译目录,用于存放编译文件在/usr/local/下mkdiropencv4、安装和配置依赖支持如果没有cmake,去cmake的官网http://cmake......
  • Linux学习记录:yum管理器
    1.yum是CentOS和RedHat中的Shell前端软件包管理器。2.yum基础源官方源:更新yum仓库本地缓存 3.yum的使用首先要确认网络是否联通,在这里我们可以ping一下外网来测试 然后查看软件包 最左边的是各种操作系统下的软件名称,中间是发行版本,最右边的是发行商。 安装软件......
  • 嵌入式linux主机通过分区镜像生成固件,DD备份分区后打包成固件,px30刷机教程 ,rockchip
    我这边有一个工控路由器因为刷机变砖了,网上下载不到固件,自己暂时还没有搞过编译。我找到了同型号的路由器,把它的系统制作成镜像。具体操作分为三步:第一步,直接用DD命令备份了几个分区,分区我暂时还不知道,直接用分区编号命名:ddif=/dev/mmcblk1p1of=/media/usb0/mmcblk1p1ddi......
  • Linux下的I-O重定向与管道
    Linux下的I/O重定向与管道一、I/O设备Linux中,对系统进行操作时,就需要I/O设备与系统产生交互,同时会产生三种数据,标准输入(0)、标准输出(1)、标准错误(2)。其中标准输入(stdin)默认接受来自键盘的输入,标准输出(stdout)和标准错误(stderr)默认向终端窗口输出,改变默认输出和出入的位......
  • 学习linux“存储管理”收获与心得
    学习Linux的存储管理是一个非常重要的课题,它涉及到如何有效地管理和利用计算机系统中的存储资源。在学习过程中,我收获了以下几点心得体会:   首先,了解文件系统的概念和原理是非常重要的。文件系统是操作系统用来组织和管理存储设备上的文件和目录的一种机制。在Linux中,常用......
  • Linux的安装
    1.Linux简介Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操......
  • 初始Linux
    1.1云计算简介从广义上说,云计算是与信息技术、软件、互联网相关的一种服务,这种计算资源共享池叫做“云”,云计算把许多计算资源集合起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。也就是说,计算能力作为一种商品,可以在互联网上流通,就像水、电、煤气一样,可以......
  • I/O重定向与管道
    1.I/O”I/O”代表输入/输出程序输出的两种类型:程序要实现的功能的结果、程序的执行状态(错误)程序的运行结果会被输送到标准输出文件(stdout),程序的执行状态会被输送到标准错误文件(stderr),程序从标准输入(stdin)设备得到输入。重定向的作用在于更改程序的输出、输入。 2.标准输出......