• 标准输入输出和管道


    一、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
    
    
  • 相关阅读:
    linux中服务器定时程序设定
    Linux中java项目环境部署,简单记录一下
    四则运算使用栈和后缀表达式
    PAT乙1003
    L7,too late
    PAT乙1002
    L6,Percy Buttons
    如何计算递归算法的时间复杂度
    c#打印(转)
    C中数组与指针【转】
  • 原文地址:https://www.cnblogs.com/hongjinping/p/12977137.html
Copyright © 2020-2023  润新知