标准IO及管道

标准输入输出
标准输入:STDIN       输入源默认是键盘
标准输出:STDOUT   缺省是终端
错误输出:STDERR    默认也是终端

输出重定向
>  输出重定向               ls -R > /tmp/abc.txt                                          //本来输出到屏幕的输出到文件中。
2> 错误输出重定向       find /etc -name passwd > find.out                     //则正确的信息输入到find.out中,错误的信息输出到屏幕
                                     find /etc -name passwd 2> find.err                    //则错误的信息输出到find.err中,正确的信息输出到屏幕
                                     find /etc -name passwd > find.out 2> find.err     //正确和错误的信息分别输出到不同文件
                                     find /etc -name passwd 2> /dev/null                  //空设备,把错误信息丢弃掉
&> 正确的和错误的信息都输出到一个文件        find /etc -name passwd &> find.all
>>  输出追加              在原来的基础上加

管道 pipe
将前面一条命令执行的结果输出到一段程序上面

ls |wc -l                     //统计文件数目
ls -l |more                 //分页显示
ls |grep vsfd
echo "test mail" | mail -s "test" user@example.com     主题 邮箱
echo "test print" | lpr                               //输出到默认打印机
echo "test print" | lpr -P printer_name      //输出到制定的打印机
find /etc -name passwd 2>&1 | less         //默认情况下错误信息不会输出到管道,用这个符号可以实现将正确和错误的信息输出到管道上

find /etc -name passwd;ls               //两条分别执行
find /etc -name passwd;ls > abc      //两条分别执行
(find /etc -name passwd;ls) > abc   //两条执行的结果都重定向

多重管道 
tee命令         //既可以输出又可以继续进行管道
ls -lr /etc |tee stage1.out | sort | tee stage2.out | uniq | tee stage3.out | sort -r | tee stage4.out | less

输入重定向  < 
tr 'A-Z' 'a-z' < .bash_profile  //将bash_profile中的大写字母转换为小写字母。等价于:cat .bash_profile | tr 'A-Z' 'a-z'

输入追加  << 
将多次输入的结果一次输出到邮件、文本、打印机等
mail -s "Please Call" root@stattion.example.com << ABC    //关键字"ABC",也可以是其他的
>hi,Jim
>   aaaaa
> bbbbbb
>....
>ABC                //直至输入关键字,邮件才结束

循环语句 
例一:给三个人发邮件
for NAME in joe jane julie
do
   ADDRESS="$NAME@example.com"
   MESSAGE="Projects are due today!"
   echo $MESSAGE | mail -s Remember $ADDRESS
done

例二:建立三个用户,初始密码为"passwd"
for NAME in admin redhat1 redhat2
do
    useradd $NAME
    echo "passwd"|passwd --stdin $NAME   //passswd命令的参数"--stdin"指:passwd的输入来自于前面的管道
done

例三:建立10个用户,初始密码为"passwd"
for num in $(seq 1 10)
do
   USER="Admin$num"
   useradd $USER
   echo "passwd" |passwd --stdin $USER
done

例四:探测网络
for n in {1..20};do
     host=192.168.0.$n
     ping -c2 $host &> /dev/null       //ping -c2 表示ping两个数据包,如果不加-c2的话会一直ping下去。
     if[$?=0];then                              //$?用来返回结果。如果前一次成功则返回:0;失败则返回:1-255的值。
         echo "$host is UP"
     else
         echo "$host is DOWN"
     fi
done

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值