day13——重定向与管道符

重定向

1.什么是重定向

将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。

2.为什么要使用重定向(重定向的使用场景)

  1. 当屏幕输出的信息很重要,我们希望能保存下来时;
  2. 后台执行中的程序,不希望他干扰屏幕正常输出结果时;
  3. 系统的例行命令,例如定时任务的执行结果,希望可以存下来时;
  4. 一些执行的命令,我们已经知道他可能出现错误信息,想将它直接丢弃时;
  5. 错误的日志和正确的日志分别输出至不同的文件保存时;

3.标准输入\ 标准输出 错误输出?

程序运行起来后,变为进程, 会同时打开三个文件 标准输入 标准输出 错误输出.

标准输入 0 标准输出 1 错误输出 2

4.标准输入输出、错误输出与重定向之间有什么关系?

重定向就是用来改变标准输出 或者标准错误输出的一个指向

  • 1> 标准输出重定向 (覆盖)

    [root@oldboyedu ~]# cat 1
    echo "op"     '原来文件内容'
    ls /etc
    [root@oldboyedu ~]# echo '标准输出重定向(覆盖)' >1
    [root@oldboyedu ~]# cat 1
    标准输出重定向(覆盖)   '现在文本内容'
    
  • 1>> 标准输出重定向 (追加)

    [root@oldboyedu ~]# cat 1
    原来文件内容
    [root@oldboyedu ~]# echo "标准输出重定向 (追加)" >>1
    [root@oldboyedu ~]# cat 1
    原来文件内容
    标准输出重定向 (追加)    '追加进去的内容'
    
  • 2> 标准错误输出重定向 (覆盖)

    [root@oldboyedu ~]# cat 1
    原来文件内容
    标准输出重定向 (追加)    '原文件内容'
    [root@oldboyedu ~]# dsa "gdpr"
    -bash: dsa: command not found     '一个错误的命令'
    [root@oldboyedu ~]# dsa "gdpr" 2>1
    [root@oldboyedu ~]# cat 1
    -bash: dsa: command not found      '现在的文件内容'
    
  • 2>> 标准错误输出重定向 (追加)

    [root@oldboyedu ~]# cat 1
    原来文件内容        '原来文件内容'
    [root@oldboyedu ~]# fdsafds
    -bash: fdsafds: command not found        '一条错误的命令'
    [root@oldboyedu ~]# fdsafds 2>>1
    [root@oldboyedu ~]# cat 1
    原来文件内容            '现在文件内容'
    -bash: fdsafds: command not found          
    
  • &>/dev/null 混合输出(覆盖)

    [laowang@oldboyedu ~]$ ll   '普通用户查看文件权限'
    total 8
    -rw-r--r--. 1 root root 5 Aug 11 12:35 1.txt   '此用户可读'
    -rwxr-x---. 1 root root 8 Aug 11 12:35 2.txt   '此用户不可读'
    [laowang@oldboyedu ~]$ cat 1.txt 2.txt &>sc    '同时查看两个文件内容'
    [laowang@oldboyedu ~]$ cat sc 
    gffd                            '成功输出1.txt的内容'
    cat: 2.txt: Permission denied   '报错:没有权限'
    
  • &>>/tmp/t.log 混合输出 (追加)

    [laowang@oldboyedu ~]$ cat sc 
    原来sc文件内容            '原来文件内容'
    [laowang@oldboyedu ~]$ cat 1.txt 2.txt &>>sc   '同上例查看两个文件并混合输出'
    [laowang@oldboyedu ~]$ cat sc        '查现在sc的内容'
    原来sc文件内容
    gffd
    cat: 2.txt: Permission denied
    
  • < 从文件中获取内容

    [root@oldboyedu ~]# cat 3.txt      '查看原来文件内容'
    10
    20
    30
    40
    50
    [root@oldboyedu ~]# tr '1-5' 'a-e' <3.txt    '使用标准输入< 修改文件内容'
    a0
    b0
    c0
    d0
    e0
    

进程管道技术“|”

  1. 将左边命令的标准输出 ---传递---> 右边命令的标准输入 --->标准输出| 错误输出

     [root@oldboyedu ~]# sort -n 1.txt | uniq -c | sort -nr
    
  1. tee 将左边命令的标准输出保存至文件或打印至终端, 但不影响管道数据的一个传递

    [root@oldboyedu ~]# sort -n 1.txt | tee kb.txt |uniq -c | sort -nr
    
  1. xargs 用于将不支持管道的命令 支持管道 左边命令的输出作为参数进行传递
[root@oldboyedu opt]# ls
1txt  2txt  3txt  4txt  5txt  data
[root@oldboyedu opt]# ls | xargs rm -rf
[root@oldboyedu opt]# ls

你可能感兴趣的:(day13——重定向与管道符)