46 关于Linux的I/O重定向

I/O重定向是一个过程,这个过程捕捉一个文件、或命令、或程序、或脚本、甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件、或命令、或程序、或脚本。

1、I/O重定向符合包含了基本I/O重定向符号和高级I/O重定向符号两大类。

基本I/O重定向符号(须要注意的是能够使用FD文件描写叙述符作为文件名):

cmd1 | cmd2:管道符,将cmd1的标准输出作为cmd2的标准输入

> filename:将标准输出写到文件filename之中

< filename:将文件filename的内容读入到标准输入之中

>> filename:将标准输出写到文件filename之中,若filename文件已存在,则将标准输出追加到filename已有内容之后

>| filename:即使noclobber选项已开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉

n>| filename :即使noclobber选项已开启,仍然强制将FD为n的输出写到文件filename之中,即将filename文件覆盖掉

n> filename:将FD为n的输出写到文件filename之中

n< filename :将文件filename的内容读入到FD n之中

n>> filename:将FD为n的输出写到文件filename之中,若filename文件已存在,则将FD为n的输出追加到filename已有内容之后

<<delimiter :此处文档(Here-document)

高级I/O重定向符号

n>&m:将FD为m的输出复制到FD为n的文件

n<&m:将FD为m的输入复制到FD为n的文件

n>&-:关闭FD为n的输出

n<&-:关闭FD为n的输入

&>file:将标准输出和标准错误输出重定向到文件

--------I/O重定向和管道的差别

首先须要注意的是管道|事实上也是I/O重定向的一个操作部分

1、管道左边是一个能够送到标准输出(stdout)的命令,右边是一个从标准输入接受(stdin)的命令;假设I/O重定向符左边是有输出的命令,右边仅仅能是文件,假设I/O重定向符左边是能接受输入的命令,右边仅仅能是文件。

2、在管道运行的时候启动了两个进程,该进程分别运行左右两边的命令;而I/O重定向符值则在同一个进程中完毕

---------在Linux中有两个重要的特殊文件:

/dev/null:这是一个空设备文件,被送到当中的所有的数据都会被丢弃,能够将标准输出和错误输出所有重定向到该文件里,此时既能够将错误信息所有丢弃。

标准写法是>/dev/null 2>&1

当中>/dev/null表示丢弃文件;

2>&1当中2和1分别表示标准输出stdout和标准出错stderr,>&表示等同于,也就是将标准出错输出2重定向于标注输出1,因为标准输出已经被重定位到了/dev/null,所以标准出错的输出也被扔掉了。

该写法也能够是1>/dev/null 2>/dev/null,差别在这样的情况下标准输出和标准出错都被送到/dev/null,这个文件被打开了两遍;而>/dev/null 2 >& 1则是将标准输出送到/dev/null,而标准出错则是从管道送到/dev/null,/dev/null仅仅被打开了一次,当中/dev/null能够换成其它不论什么文件。

/dev/tty:当该文件被打开的时候shell会将其自己主动重定向到一个终端(包含显示控制台、远程登陆伪中断或者串口)。

时间: 2024-10-11 21:38:00

46 关于Linux的I/O重定向的相关文章

Linux管道及IO重定向小练习

1.统计/usr/bin目录下的文件个数 [[email protected] ~]# ls /usr/bin | wc -l 1306 [[email protected] ~]# 2.取出当前系统上所有用户的SHELL,要求,每种SHELL只显示一次,并且按顺序进行显示 [[email protected] ~]# cut -d: -f7 /etc/passwd | sort -u /bin/bash /bin/nologin /bin/sync /bin/tcsh /sbin/halt /

linux 将debug信息重定向到LCD(屏幕)

/*********************************************************************** * linux 将debug信息重定向到LCD(屏幕) * 说明: * 我们经常会想做的这件事就是将输出信息输出到屏幕,而不是需要debug口 * 来做这件事. * * 2016-10-4 深圳 南山平山村 曾剑锋 *********************************************************************

linux bash 中的重定向

在 linux 中,这些重定向都是等价的 $ file command arg1 arg2 arg3 $ command > file arg1 arg2 arg3 $ command arg1 > file arg2 arg3 $ command arg1 arg2 > file arg3 $ command arg1 arg2 arg3 > file

Linux上的IO重定向及管道-&&gt; &&gt;&gt; 2&gt; 2&gt;&gt; 2&gt;&1 2&gt;&gt;&1 | tee tr

IO重定向: 输出重定向:> 特性:覆盖输出 输出重定向:>> 特性:追加输出 # set -C 禁止覆盖输出重定向至已存在的文件: 此时可使用强制覆盖输出:>| # set +C 关闭上述特性 错误输出流重定向:2>, 2>>  只会将错误的信息输出到指定的地方 合并正常输出流和错误输出流: (1) &>, &>> (2) COMMAND > /path/to/somefile 2>&1 COMMAND &g

Linux基础入门--IO重定向及管道

IO重定向及管道 一直都提到,程序:指令+数据 其实程序也有IO,数据的来源有多个地方:文件.外部 可用于输入的设备:文件(linux一切皆文件) 键盘设备.文件系统上的常规文件加载内容.网卡等: 可用于输出的设备:文件(linux一切皆文件) 显示器.文件系统上的常规文件输出保存.网卡等: 程序的数据流有三种: 输入的数据流:<-- 标准输入(stdin),是键盘: 输出的数据流:--> 标准输出(stdout),显示器: 错误输出流:  --> 错误输出(stderr),显示器: f

(010) Linux之I/O重定向

十年运维系列之基础篇 - Linux 作者:曾林 联系:[email protected] 网站:www.jplatformx.com 版权:文章未经同意请勿转载 一.引言 这里我们来讨论Linux中命令行一个很酷的功能,那就是I/O重定向.I/O是输入/输出的缩写.这个功能可以把命令行的输入重定向为从文件中获取内容,也可以把命令行的输出结果重定向到文件中.如果我们将多个命令行关联起来,将形成非常强大的功能——管道.

Linux基础之IO重定向及管道详解(涉及tr、tee命令)

我在刚开始接触IO重定向时,经历了由懂到不懂然后了然的过程,当然现在的我也不可能说对于IO重定向就彻底懂了,只是在解决一些问题或实现某些结果时不会因为IO重定向的问题而迷惑了.     什么叫IO重定向? 为了解释这个问题,我们要先明白什么叫IO,什么叫做程序的数据流. 什么叫IO? 在Linux或计算机领域IO指的是信息的输入和输出. 在Linux中可用于输入的设备:文件(Linux中一切皆文件) 具体包括:键盘设备.文件系统上的常规文件.网卡等. 在Linux中用于输出的设备:文件 具体包括

Linux shell管道与重定向及实例分析

一.管道 管道命令操作符是:"|",它仅能处理由前面一个命令的正确输出信息,也就是standard output的信息,对于stdandard error信息没有直接处理能力:然后,传递给下一个命令,作为标准输入standard input. linux管道执行过程: 管道命令使用说明: command1正确输出,作为command2的输入,然后command2的输出作为command3的输入,command3的输出打印到屏幕上: 通过管道:command1.command2的正确输出

Linux权限及IO重定向笔记

权限管理: r: w: x: 三类用户: u: 属主 g: 属组 o: 其他用户 chown: 改变文件属主(只有管理员可以使用此命令) # chown USERNAME file,... 把file的属主改成这个用户 -R 修改目录及其内部文件或子目录的属主 --reference=/path/to/somefile file,... 将file的属主&属组一同设定成与path的属主&属组一致 chown USERNAME:GRPNAME file,... 同时改变owner, grou