Linux IO重定向-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Linux IO重定向

简介:

John von Neumann 冯诺依曼 

(运算器、控制器)CPU 存储器RAM I/O输入输出设备

程序:是由指令和数据组成

地址总线:内在寻址

数据总线:传输数据

控制总线:控制指令

物理上此三类总线在同一条线路上通过。


Linux系统设定:

        默认输出设备:标准输出:STDOUT:1:显示器

        默认输入设备:标准输入:STDIN:0:键盘

        标准错误输出:STDERR:2:显示器

I/O重定向:更改默认输入设备和输入设备


Linux 

>    表示输出重定向(覆盖)

   例:    ls /var > /tmp/var.out 此命令含义是次输出重定向到/tmp/var.out文件中。

        默认是输出到显示器上,而用了>输出重定向后,则更改输出到/tmp/var.out 文件中。

        注:此命令虽然定向到文件中,如果文件中有数据则直接覆盖。

>>    追加重定向  此命令含义是把输出信息追加到文件中而非覆盖。


set -C    禁止对已存在的文件使用覆盖 强制覆盖输出则使用 >|

set +C    关闭上述功能


2>    表示重定向错误输出

      例: ls /ect 2> /tmp/ect.out 正常ls /etc 而/ect没此目录会出错误信息

           此命令则把错误信息输出到/tmp/ect.out文件中 如果更改为ect为etc 则不会把信息输入

           到此文件中,因为ls /etc是标准输出而非错误输出所以不会输出到文件中

2>>    表示追加错误输出(你懂得呵呵 !!)


如果想同时重定向错误输出和标准输出则可使用

    ls /etc > /tmp/etc.out 2> /tmp/etc.err 

    因为一个命令不是错误输出就是正确输出所以一次使用只能输出到一个文件中

    为了方便使用还有一简单命令

    ls /etc &> /tmp/etc.out

    此命令则可将错误输出或标准输出都输出到同一个文件中

    注:此命令也是可以追加的 &>>


<    输入重定向

     例:cat < /etc/fstab

        则将fstab 文件内容显示到屏幕上,所以cat此命令默认就加了<输入重定向符

        因为我们一般使用的方法是cat /etc/fstab

<<    在此处生成文档 here document

[root@localhost tmp]# cat >>/tmp/cat.out <<end
> cat 
> out
> end
 
[root@localhost tmp]# cat /tmp/cat.out 
cat 
out

这个怎么理解呢? 就是我也不太理解,,,个人理解就是把我所打出的信息输出到那个文件中。


管道(pipe)    | 前一个命令的输出,作为后一个命令的输入

    例:

[root@localhost tmp]# cat /etc/fstab | tr 'a-z' 'A-Z'
# /ETC/FSTAB
# CREATED BY ANACONDA ON SUN JUN  1 06:01:40 2014
#
# ACCESSIBLE FILESYSTEMS, BY REFERENCE, ARE MAINTAINED UNDER '/DEV/DISK'
# SEE MAN PAGES FSTAB(5), FINDFS(8), MOUNT(8) AND/OR BLKID(8) FOR MORE INFO
#
UUID=A3E80A65-7E8F-4D8F-B533-508D6CAA2072 /                       EXT4    DEFAULTS        1 1
UUID=50737840-922B-44CF-AD0C-F434A1BBD865 /BOOT                   EXT4    DEFAULTS        1 2
UUID=B559F967-72D4-48D5-B7F5-454898D190F8 SWAP                    SWAP    DEFAULTS        0 0
TMPFS                   /DEV/SHM                TMPFS   DEFAULTS        0 0
DEVPTS                  /DEV/PTS                DEVPTS  GID=5,MODE=620  0 0
SYSFS                   /SYS                    SYSFS   DEFAULTS        0 0
PROC                    /PROC                   PROC    DEFAULTS        0 0
[root@localhost tmp]# 

此命令含义是cat /etc/fstab 查看该文件内容 

然后 输入到 tr 'a-z' 'A-Z'  此命令是把小写字母换成大写字母  


tee 此命令是同时将标准输出输出到默认输出和文件中

例:

[root@localhost tmp]# ls /var | tee /tmp/var.out
account
cache
crash
db
empty
games
gdm
lib
local
lock
log
mail
named
nis
opt
preserve
run
spool
tmp
www
yp

[root@localhost tmp]# cat /tmp/var.out
account
cache
crash
db
empty
games
gdm
lib
local
lock
log
mail
named
nis
opt
preserve
run
spool
tmp
www
yp
[root@localhost tmp]# 

由此可见该命令是同时将标准输出输出到屏幕上和文件中。

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1619292如需转载请自行联系原作者


Winthcloud

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章