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重定向、grep、正则表达式

计算资源 内核—程序(进程)–交互工具shell 权限 用户,容器,关联权限—-我们将所有用户放入不同的容器让其关联不同的权限,简化方便指配权限—-就达到了用户组 计算机如何实现获取每个用户,...

linux-IO重定向

I/O重定向详解及应用实例 1、 基本概念(这是理解后面的知识的前提,请务必理解) a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、 常用FD有3个,为0...

【转】Linux shell IO重定向

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

Linux 基础-命令帮助文档,IO重定向及管道操作

linux命令分为两种: 内部命令 linux内置的指令 外部命令 对应一个位于文件系统某目录下的可执行程序 通过type指令可区分命令类...

linux笔记-管道及IO重定向

第六章、管道及IO重定向 04_03_管道及IO重定向 计算机组成: 运算器、控制器: CPU 存储器:RAM 输入设备/输出设备 ...

Linux-管道及IO重定向

系统设定 默认输出设备:标准输出,STDOUT,1 默认输入设备:标准输入,STDIN,0 标准错误输出:STDERR,2 标准输入:键盘 标准输出和错误输出:显示器 I/O重定向...

Linux IO 重定向自己的理解

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

Linux强大的IO重定向和管道功能(内含命令替换,实例:批量删除文件)

1. 标准输入与输出   我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终 端的键盘;标准输出文件(stdout)和标准错误输出文件(st...

linux shell 脚本实现tcp/upd协议通讯(重定向应用)

原文地址::http://www.justwinit.cn/post/7985/ 相关文章 1、Linux下反弹shell方法----https://www.waitalone.cn/li...

linux shell 脚本实现tcp/upd协议通讯(重定向应用)

前几天发了重定向以及管道相关使用方法,今天这里发些很有趣的例子。通过重定向实现基于tcp/udp协议的软件通讯。  linux 设备里面有个比较特殊的文件: /dev/[tcp|upd]/host/p...
  • coxin16
  • coxin16
  • 2011年05月17日 22:15
  • 275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux IO重定向应用
举报原因:
原因补充:

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