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

标准输入输出和管道

时间:2020-05-30 21:57:36      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:通过   mamicode   linu   加密   规则   less   操作   stdout   main   

一、Linux提供三种输入/输出

标准输入STDIN

标准输出STDOUT

标准错误STDERR 

 1 标准输出和标准错误能重定向到文件中
 2 # 命令  操作  文件名
 3 支持操作包括:
 4 >    重定向标准输出到文件,等同于1>
 5 2>    重定向标准错误到文件
 6 &>    重定向所有的输出到文件
 7 文件内容模式被覆盖.>>用在追加.
 8 例子:
 9 #ls /etc -l 1> /tmp/ls.txt
10 #ls /etc/asdb /etc/passwd /asdfa &> /tmp/all.txt  //将所有的输出都指向到all.txt文件中
>覆盖前面的文件
>>追加新增内容到文件中。当然也存在1>>和2>>,类似1>和2>,只是这个是追加。是不存在&>>符号的。

二、重定向标准输出给一个程序(Piping)

管道(|字符)可以连接命令:

command1|command2

发送command1标准输出给command2的标准输入而不是终端屏幕。

标准错误不会通过贯通传递

通常用于组合多个命令处理功能

command1|command2|command3...

 1 实例:
 2 #ls /etc/ -l | less  使用GG和gg跳转结尾和开头,鼠标上下移动
 3 #cat /etc/passwd | grep student
 4 mail:通过邮件发送输入:
 5 $echo "test email" | mail -s "test" user@example.com
 6 lpr:发送输入到一台打印机
 7 $echo "test print" | lpr
 8 $echo "test print" | lpr -P printer_name
 9 更改密码:
10 可以使用passwd 里面的--stdin来做,如:
11 #echo "redhat" | passwd --stdin user
12 cmd1|cmd2| tee file.txt | cmd3   //tee file.txt将前面cmd1|cmd2的结果输出到文件file.txt文件中,后续将结果送过cmd3处理
eg:#cat etc/passwd | grep ro |tee /tmp/filter.ro.txt | grep roo | tee /tmp/filter.roo.txt | grep root 

组合输出和错误:
1.一些操作同时影响标准输出和标准错误
  &>:重定向所有输出:
    $find /etc -name passwd &>find.all
  2>&1:重定向标准错误到标准输出    //当输出有错误的时候,使用这个可以把错误的输出变成正确的输出
2.通过管道发送所有的输出非常有用
  &find/etc -name passwd 2>&1 | less
  ():组合多个程序的标准输出
    (cal 2007;cal 2008)| less
/dev/null黑洞
从一个文件中重定向标准输入:
  重定向标准输入使用<
  一些命令可以接受来自于文件重定向的数据:
    .$tr‘A-Z‘‘a-z‘<.bash_profile
      这条命令转换了在.bash_profile中的大写字母为小写字母
    .等同于:$cat.bash_profile  | tr‘A-Z‘‘a-z‘
  tr命令可以用来加密,如#tr ‘ahtn‘ ‘@1$#‘ < /etc/password > /tmp/tr.txt,将字母ahtn按照对应规则转换成@1$#,并将结果输入到/tmp/tr.txt
  用重定向来实现cp、如#cat < /etc/passwd > /tmp/passwd
  #cp /etc/passwd /tmp/passwd将会看到文件已经存在在/tmp/passwd
发送多行给标准输入:
  从键盘中重定向多行给标准输入,使用 <<WORD
    .直到WORD的所有文本将发送给标准输入
    .有时候也称呼为heretext
  .$mail -s "Please Call" jane@example.com <<END>Hi Jane,
  .>
  .>Please give me a call when you get in,We may need
  .>to do some maintenance on server1.
  .>
   >Details when you‘re on-site,
  .>Boris
  .>END
技术图片

 

 


标准输入输出和管道

标签:通过   mamicode   linu   加密   规则   less   操作   stdout   main   

原文地址:https://www.cnblogs.com/hongjinping/p/12977137.html

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