zoukankan      html  css  js  c++  java
  • 重定向

    重定向和管道符:

    1、重定向
        程序 = 指令 + 数据
                   命令    变量

        在程序中,数据如何输入?又如何输出?
        
        数据输入:键盘  --  标准输入,但是并不是唯一输入方式;
            --stdin
            echo "123456" | passwd --stdin "username"

            例如:功能添加用户  useradd.sh user.txt文本文档1000个用户
                ./useradd.sh a
                ./useradd.sh b
                ...
                
                ./useradd.sh < user.txt
            
            while line ; do
                循环体 $line
            done < /etc/passwd
        
        数据输出: 显示器 -- 标准输出,但是并不是唯一输出方式
            ls /etc/ > a.txt

        fd 文件标识符 0-9 -- 相当于给文件分类;
            0    1    2
            0 -- 标准输出
            1 -- 标准输入
            2 -- 错误输入输出(标准错误)

        常见重定向符号
            1、标准输出
            >    覆盖重定向、非常危险
                set -C 关闭覆盖重定向功能   
                >|  强制重定向   
            >>    追加重定向
                不覆盖
            2、标准输入
            <     tr  替换文件内容
                tr set1 [set2] < file.txt    
            <<    将多行数据同时输入
                cat >>a.txt<<EOF
                >1
                 >2
                >3
                >EOF
            3、错误输出
            2>  2>>    
            扩展:不需要输出内容,只需要输出状态;
                ls /etc/ > /dev/null 2> /dev/null
                echo $?  ($?--变量:上一条命令的执行状态)
                if $?等于0;么?
                    OK--干!
                否则
                    不
                结束

            ls 暗室逢灯  > /dev/null 2> /dev/null
                /dev/null  黑洞文件  来什么吃什么(删除)
                /dev/zero      吹泡泡    
        
            &>  &>>  ==  2&>1
                ls /etc/ &> /dev/null

    2、管道 - tee

        command1 | command2 | command3 | ... ...
        
        前一个命令的执行结果交给后一个命令来执行;
        【Linux思想:结合小功能实现大功能】
        free -m | grep "^Mem" | cut -d' ' -f19
        free -m | grep "^Mem" | awk '{print $3}'

        tee  一路输入,两路输出
            tee /tmp/tee.out
            如果没有文件,会创建,默认如果文件存在有内容,会覆盖;

        练习:
        将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;
            head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

        将登录至当前系统上用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中;
            who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]] | tee /tmp/who.out

            tail   查看文件尾部多少行(默认10行)
                -n     tail -n 5 /etc/passwd  == 简写 tail -5 /etc/passwd  
                -f      实时查看文件更新内容
                    tail -f /var/log/message
            head  查看文件头部多少行(默认时行)
                -n  #    前#行, 简写 -#
            取 10 - 20 行:  head -20 /etc/passwd | tail -10

            tar 压缩
            tr   替换
            cut 切  
               

  • 相关阅读:
    hdu 5534(dp)
    hdu 5533(几何水)
    hdu 5532(最长上升子序列)
    *hdu 5536(字典树的运用)
    hdu 5538(水)
    假如数组接收到一个null,那么应该怎么循环输出。百度结果,都需要提前判断。否则出现空指针异常。。我还是想在数组中实现保存和输出null。
    第一个登录页面 碰到的疑问
    浅谈堆和栈的区别
    Java中的基础----堆与栈的介绍、区别
    JS的Document属性和方法
  • 原文地址:https://www.cnblogs.com/azuressy/p/11343699.html
Copyright © 2011-2022 走看看