linux 数据重定向,Linux学习之数据重定向

大纲:

一、数据重定向定义

二、数据重定向分类

三、数据重定向作用

四、示例

一、数据重定向:命令的运行的结果默认输出在监视器上,重定向就是把这个结果输出到其它地方或其它文件。

二、数据重定向分类:

1.标准输出: (standard output,简称stdout,代码为 1 ,使用 > 或 >>):命令执行成功输出的正确提示信息。

2.标准错误输出 (standarp error output,简称stderr,代码为 2 ,使用 2> 或 2>>):命令执行失败输出的错误提示信息。

3.标准输入(standard input,简称stdin,代码为 0 ,使用 < 或 <

三、作用:

1.保存屏幕输出信息。

2.后台运行的程序,不希望它显示(例如:任务计划中监控程序每个时间段采集数据命令,可以直接重定向为/dev/null)。

3.正确信息与错误信息分别输出。

四、示例:

1.标准输出:(standard output,简称stdout,代码为 1 ,使用 > 或 >>):命令执行成功输出的正确提示信息。

例1:查看/etc/inittab内容并重定向输出至/tmp/inittab.test.

[root@localhost ~]# cat /etc/inittab > /tmp/inittab.test

通过ls命令查看,发现/tmp目录下创建了inittab.test文件,且内容与/etc/inittab完全一致;由此可知,重定向输出指定的文件如果不存在,则创建此文件。

[root@localhost ~]# ll /tmp/ | grep init

-rw-r--r--. 1 root root 884 Jun 19 23:52 inittab.test

例2:查看/etc/issue文件内容并把结果重定向至已存在的/tmp/inittab.test,你再次查看inittab.test,会发现文件内容已改变;由此可知:重定向输出指定的位置如果已存在,则覆盖。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test

[root@localhost ~]# cat /tmp/inittab.test

CentOS release 6.5 (Final)

Kernel \r on an \m

例3:内容追加;查看/etc/inittab并把结果重定向追加至/tmp/inittab.test中,另外如果目标位置文件不存在,则创建。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test

[root@localhost ~]# cat /tmp/inittab.test CentOS release 6.5 (Final) Kernel \r on an \m

.

.

.

# 6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

2.标准错误输出 (standarp error output,简称stderr,代码为 2 ,使用 2> 或 2>>):命令执行失败输出的错误提示信息。

例4:据例3可知,/tmp/inittab.test文件里面是有内容的,如下图,我们再次把/etc/inittab重定向输出/tmp/inittab.test,当我们不小心把命令敲错了,把cat敲成了catt;cat一下,你会发现inittab.test里面没有任何内容了;由此可知,如果输出指定的文件已存在,

即使命令执行错误,也会清空目标文件内容。

[root@localhost ~]# catt /etc/inittab > /tmp/inittab.test

-bash: catt: command not found

[root@localhost ~]# cat /tmp/inittab.test

[root@localhost ~]#

[root@localhost tmp]# sh hardcheck.sh &> out_file                 stdout、stderr合并输出至out_file

例5:合并重定向;如下两例,&表示合并的意思。

[root@localhost tmp]# sh hardcheck.sh > out_file 2> &1         stdout输出至out_file,std_err输出至stdout

[root@localhost tmp]# sh hardcheck.sh > /tmp/out_right 2>/tmp/out_err

[root@localhost tmp]# cat /tmp/out_right

model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz

model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz

MemTotal: 1012352 kB

[root@localhost tmp]# cat out_err

hardcheck.sh: line 7: cd: /abd: No such file or directory

[root@localhost tmp]#

例6:分别重定向:执行脚本,标准输出重定向至/tmp/out_right;标准错误输出重定向至/tmp/out_err;执行完成后,你会发现stdout、stderr已分别保存至/tmp/out_right、/tmp/out_err文件。

黑洞/dev/null,黑洞,故名思义,可以吞噬其范围内的任何东西;如果我们把输出指向/dev/null,自然而然,输出会被吞噬。

例7:把std指向out_right,stderr指向/dev/null;就会发现stderr会部被丢弃了。

[root@localhost tmp]# sh hardcheck.sh > out_right 2> /dev/null

[root@localhost tmp]# cat out_right

model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz

model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz

MemTotal: 1012352 kB

[root@localhost tmp]#

3.标准输入(standard input,简称stdin,代码为 0 ,使用 < 或 <

例8:把键盘输入值保存到/tmp/in_file。

[root@localhost ~]# cat > /tmp/in_file   ==>in_file存在则覆盖,不存在则新建

this is test file.                                        ==>键盘输入值保存值in_file

hello.world!

==>输出完成后,可以通过快捷键Ctrl+d中止输入信号。

[root@localhost ~]# cat /tmp/in_file      ==>查看保存后信息

this is test file.

hello.world!

例9:<

[root@localhost ~]# cat > in_file <<

> hao are you!

> Welcome!

> end                                                       ==>输入end回车离开

[root@localhost ~]# cat in_file                  ==>查看in_file,只有输入的前两行

hao are you!

Welcome!

原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/5593

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值