码迷,mamicode.com
首页 > 其他好文 > 详细

3_Shell语言———输入输出重定向和管道概述

时间:2014-05-02 03:06:47      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:linux 输入 输出 重定向 管道

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

通常计算机的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命令的执行结果作为参数。

bubuko.com,布布扣


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

# echo pass123 | passwd --stdin openstack


bubuko.com,布布扣


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

 # UserName=user1

 # mkdir /users

 # useradd -d /users/$UserName $UserName

 # echo $UserName | passwd --stdin $UserName

bubuko.com,布布扣


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


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


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

3_Shell语言———输入输出重定向和管道概述,布布扣,bubuko.com

3_Shell语言———输入输出重定向和管道概述

标签:linux 输入 输出 重定向 管道

原文地址:http://wuyelan.blog.51cto.com/6118147/1405402

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!