linux IO重定向应用

原创 2017年01月03日 19:36:18

IO重定向

程序:指令+数据
    程序:IO

    可用于输入的设备: 文件
        键盘设备, 文件系统上的常规文件,网卡等
    可用于输出的设备: 文件
        显示器, 文件系统上的常规文件,网卡等

    程序的数据流有三种
        输入的数据流: <-- 标准输入(stdin), 如键盘
        输出的数据流: --> 标准输出(stdout), 如显示器
        错误输出流:   --> 错误输出(stderr), 显示器

    fd: file descriptor, 文件描述符
        标准输入:0
        标准输出:1
        错误输出:2

IO重定向:
    输出重定向: >
        特性: 覆盖输出
    例如:

image_1b5fssh191mf51f9r1stp1ifq1bn79.png-11.5kB 
输出重定向: >> 
例如: 
image_1b5fsu535pd014c1beh1vel18kem.png-13.3kB 
特性: 追加输出

    # set -C (大写C)
        禁止覆盖输出重定向至已存在的文件
        此时可使用强制覆盖重定向: >|
    例如:开启此功能后,>已经不能覆盖已经存在的文件了,file1覆盖file2文件时提示错误,不过我们可以用>|强制覆盖, >>输出重定向不受影响,同时file1覆盖file3也不受影响,因为file3文件是不存在,此命令只针对已存在文件

image_1b5ft3fdc1r2qu2kcsc13q21rno1g.png-8.6kB 
# set+C 
关闭上述特性 
例如:关闭后,file1文件覆盖file2文件就不会报错了 
image_1b5ftakbpaob1hc31f104k4g3q1t.png-3.5kB

    错误输出重定向: 2>, 2>>
    例如:file4文件不存在,我们用>把file4覆盖file2时出现错误,我们用2>输出时,就正常了,我们再看file2文件内容,错误提示的内容已经存在file2文件里了,意思就是把错误的信息也输出到file2文件里,2>>就是就是追加的意思,错误输出重定向,我们2>>file4在追加一次,file2文件就有两个错误信息了

image_1b5ftg2sv130db4r1ucf1a1418ke2a.png-14.7kB

    合并正常输出流和错误输出流
        &>, &>>
    例如:意思是把不管正确的还是错误的输出都输入到文件里,file1是存在的,覆盖到file2没有问题,file4文件不存在的,也可以覆盖到file2文件里,同时错误信息也报存在file2文件里了.

image_1b5ftqgbdogmt0a1cq71m6r11up2n.png-15.3kB 
&>> 就是追加的意思了,不删除原来的数据,不管正常的输出还是错误的输出都追加到文件里 
image_1b5fu2p2arn0241kto13sgigu34.png-14kB

    cat file1 > file2 2>&1  与&>同义 

image_1b5fu91god5f107h18jpjv57op3h.png-11.6kB 
cat file1 >> file2 2>&1 与&>>同义 
特殊设备: /dev/null 
例如: /dev/null是一个黑洞,不管什么数据输入到里面都会消失,如果写脚本有什么数据不需要的都可以丢到这里面,我们把file1文件复制到/dev/null里,cat看的时候什么数据都没有 
image_1b5fucjll1pka7m8aatf3e5l53u.png-6.5kB

    输入重定向: <
    例如: 把文件内容输出到屏幕,cat就算不加< 也是有这个功能的

image_1b5fukptj1vojbt91tma16im66p4o.png-6.5kB 
tr命令: 
命令格式:tr [OPTION]... SET1 [SET2] 
把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符 
例如:意思把[a-z]都输出为[A-Z]也就是变成大写,第一行和第三行都是我输入的小写字母,第二行和第四行都是按enter键就会自动转换成大写字母,对本身是大写字母的字符不做转换 
image_1b5fuprmg1usiqhoea61nacd6n55.png-4kB

        用法1:
            列: tr [a-z] [A-Z] < file1 
            意思是把file1所有小写改成大写字母并输出到屏幕

image_1b5fv4jtl1pu0poaggekit1p115i.png-6.4kB 
用法2: 
列: tr -d [if] < file1 
意思是把file1显示出来包含if的全部删除掉,不会删除源文件数据 
image_1b5fv9khg10unvc51duotu51jd76c.png-6.1kB

         << 这个就不是追加的意思了
            cat << EOF         可以持续在屏幕输入数据,直到输入EOF就会自动退出来,同时把你刚才输入的数据一次性打印出来,这里的EOF是直接随意定义,可以是随意的单词.退出就是自己定义的这个单词

image_1b5fvhiim1l81uhg1q718fgt9i6p.png-6.8kB 
cat > file1 << EOP 
例如: 也可以把在屏幕上打好的字符输入到指定的文件中 
image_1b5g02pr41mbvk401kmmcgo15lv76.png-13.8kB

Linux IO 重定向自己的理解

1:字符串在shell中的三种表达形式:单引号‘this is’;双引号“”;什么都不加。在‘’中,原样输出,转义字符和变量都是无效的;而“”中可以保持转移字符和变量的含义;什么都不加的做法和“”是同...
  • sunshine_lulu
  • sunshine_lulu
  • 2016年11月26日 22:51
  • 1019

【转】Linux shell IO重定向

终于理解了所谓的I/O重定向。 Linux shell中的File Descripter可以理解为一个指向文件的指针。默认有三个FD:0,1,2。分别指向的是:Keyboard设备文件,Moni...
  • weiyuefei
  • weiyuefei
  • 2014年08月25日 19:16
  • 1677

Linux C 重定向和管道 学习

一. 重定向命令1. 在shell中运行命令时,系统为每个进程自动打开三个文件描述符。...
  • ganyingxie123456
  • ganyingxie123456
  • 2017年03月12日 18:49
  • 350

linux下输入输出重定向

inux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。   Linux...
  • hongkangwl
  • hongkangwl
  • 2014年03月11日 11:11
  • 6144

linux C 实现重定向

在 Linux 系统中,每个进程都有 STDIN 、STDOUT 和 STDERR 这 3 种标准 I/O 。它们是程序最通用的输入输出方式。 每个进程都会维护一个文件描述符表(FILE  DESC...
  • u011641885
  • u011641885
  • 2015年09月06日 15:34
  • 1786

Linux IO重定向/IO Redirection

IO Redirection UNIX had the concept of IO redirection long before DOS copied and bastardised the co...
  • jiyanfeng1
  • jiyanfeng1
  • 2012年11月09日 03:58
  • 2820

linux shell io重定向

经常在linux的shell脚本中看到 1>&2 类似的语句,这到底是什么意思?其实这里的1,2 都是linux的文件描述符,在linux中0 表示 标准输入1 表示 标准输出2 表示 错误输出还有一...
  • zhf9208
  • zhf9208
  • 2013年08月01日 00:55
  • 656

linux IO重定向

IO重定向 【句柄值:含义】  见下。 0 标准输入  1 标准输出  2 标准错误  /dev/null   无底洞,有些不想要的输出信息可以送到这里。 操作符 > 输出重定向 >> 输出重定向...
  • chuchus
  • chuchus
  • 2014年12月31日 13:45
  • 598

[Linux]:IO重定向详解

Linux重定向详解 I/O重定向详解及应用实例 1、 基本概念(这是理解后面的知识的前提,请务必理解) a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~...
  • happygongzhuo
  • happygongzhuo
  • 2011年09月24日 20:40
  • 220

linux终端IO重定向

在我们设置定时任务的时候经常会使用标准输出和标准错误输出。这个在Linux是一个非常重要的概念,而且这个很有用。程序应该有数据库的来源端、数据的目的端,以及报告问题的地方,它们被称为标准输入、标准输出...
  • HUANGDAFU
  • HUANGDAFU
  • 2014年10月24日 16:23
  • 324
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux IO重定向应用
举报原因:
原因补充:

(最多只允许输入30个字)