Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

Shell语言三 输入输出重定向和管道概述

时间:2014-05-31 00:20 来源:未知 作者:www.51ou.com 阅读:

一、输入重定向和输出重定向

通常计算机的I/O(输入/输出)设备为键盘和显示器,因此当我们执行cat命令而不加任何参数时,命令会等待用户通过键盘输入数据;而当我们为cat命令增加了参数/etc/rc.d/rc.sysinit后,cat命令的输入源变成了文件/etc/rc.d/rc.sysinit。这个过程就是输入重定向。如果cat的结果不显示在屏幕中,而是输出到某个文件中,其过程就是输出重定向。

 

二、管道

 

管道事实上是一种重定向的过程。管道的一方是数据的输入端,一方是接收端。bash也支持管道,其形式为:

# COMMAND1 | COMMAND2

解释:

程序执行的过程可能是:读入数据-->执行命令-->输出结果。根据此过程,原本COMMAND1执行的结果应该显示在屏幕上,但使用管道后,COMMAND1的执行结果会被COMMAND2当做输入数据流使用。

 

例如使用cat命令查看 /etc/rc.d/rc.sysinit 这个文件时,会发现此文件非常长,cat命令执行后光标直接跳至文件底部,给阅读造成不便。这时我们可以使用管道的形式用less来查看这个文件:

# cat -n /etc/rc.d/rc.sysinit | less    

此处less命令不加参数,而是使用cat命令的执行结果作为参数。

wKiom1NiVOCTqT9FAALm7_PE968308.jpg

 

再比如用户登陆时需要密码,通过键盘输入密码是默认形式,但为了安全起见,我们可以对密码输入进行重定向,选择从文件读入密码。可以使用以下命令:

# echo pass123 | passwd --stdin openstack

 

wKioL1NiVOziOV1zAAJBJsQ2MH4931.jpg

 

我们也可以将某个变量作为输入数据传递给下一个命令。例如要新建用户user1,其家目录为/users/user1,密码同用户名,可使用如下操作:

 # UserName=user1

 # mkdir /users

 # useradd -d /users/$UserName $UserName

 # echo $UserName | passwd --stdin $UserName

wKiom1NiVWLCmxkzAAI1s_w1UnY641.jpg

 

注意passwd命令使用了选项 --stdin (Standard Input 的简写形式),意为标准输入,即默认输入,与之对应的有 --stdout (Standard Output),意为标准输出,即默认输出——显示器/监视器。

 

* 后续文章中将详细介绍输入输出重定向和管道,此处只做简要概述

 

本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1405402

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Shell语言三 输入输出重定向和管道概述》技术文章,《Shell语言三 输入输出重定向和管道概述》详细使用和说明,有时《Shell语言三 输入输出重定向和管道概述》可能不完善、敬请谅解!如果《Shell语言三 输入输出重定向和管道概述》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片