Linux系统—第05章—重定向管道

一.思考

date输出的结果,能否在下一次开机查看。
    答案是不
    解决办法
        date > date.txt

       命令date所输出的结果  重定向  收集在文件date.txt里

二.重定向

1.标准输入、标准输出、标准错误
  == FD简介==

  1.简介
    file descriptors ,FD,文件描述符
   进程使用文件描述符来管理打开的文件
                链接文件
   2.图示:

     

    
    FD是访问文件的标识,即链接文件
          0是键盘只读,
         1,2是终端可以理解是屏幕,
          3+是文件,可读可写
   3. 示例
         通过我们非常熟悉的VIM程序。来观察一个进程的FD(文件描述)信息。
       (1)通过一个终端,打开一个文本。

        vim 1.txt

       (2)通过另一个终端,查询文本程序的进程号

         ps  aux| grep vim

             

             第一条为vim查询结果,第二为查找本身命令的信息

       (3)在/proc目录中查看文本程序的FD(文件描述)

                通常在 /proc/PID/fd  就能看到文件的FD调用情况

        [root@localhost ~]# ls /proc/5606/fd

             

            感觉好像没什么。用用ls -l呢?

         [root@localhost ~]# ll /proc/5606/fd

               

                        总用量 0
                lrwx------. 1 root root 64 10月 10 07:37 0 -> /dev/pts/2
                    标准输入
                lrwx------. 1 root root 64 10月 10 07:37 1 -> /dev/pts/2
                    标准输出
                lrwx------. 1 root root 64 10月 10 07:37 2 -> /dev/pts/2
                    标准错误输出
                lrwx------. 1 root root 64 10月 10 07:37 4 -> /root/.1.txt.swp
                    常规文件

       ll /root/ -a

         

             本身打开的vim是1.txt。w保存就会出现1.txt和1.txt.swp。内容一样,第二个相当于备胎用于修改。

             当你再打开vim进行修改时,如改过 没有保存 直接点q!,得到原来内容,则1.txt.swp消失

                                                        ,修改过wq! 。留下改过的内容,则1.txt.swp替代1.txt文件。1.txt.swp消失。

             如果你在修改时直接给他关了,计算机会自动保存两份内容,等待用户选择

       (4)总结
                看到的0124就是FD(文件描述),程序通过描述符访问文件,
                可以是常规文件,也可以是设备文件。

2.重定向案例 >_<
  1.输出重定向及综合案例
   ==简介==
      FD(文件描述):   1和2
       输出重定向分为
           正确输出
            "1>"  等价于 " >  " -----覆盖
             "1>> "等价于">>"   -----追加

           错误输出
           2>          没有简写

            2>>         没有简写
   ==案例1,输出重定向==

  [root@localhost~]# date 1> date.txt 

[root@localhost ~]# date >> date.txt 

          检验
            [root@localhost ~]# cat date.txt 
            2020年 05月 29日 星期五 11:30:14 CST
            
           其他程序可以吗?
           mkdir   -v 可以吗?
           程序本身需要输出

          
 == 案例2:错误输出重定向==
            错误示范
               [root@localhost ~]# ls /home/    2>    list.txt 
               观察list.txt文件中有没有内容?
               因为没有错误信息
             正确示范
                当某条命令产生错误时,才会有错误输出。
                [root@localhost ~]# ls  /aaaaaaaaa 2>  list.txt 
                [root@localhost ~]#cat   list.txt 
                ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
                
        案例3: 正确和错误都输入到相同位置

       [root@localhost ~]# ls /home/ /aaaaaaaaa &>list.txt


            
            

         生产环境
                如下命令不需要操作

                [root@localhost ~]#yum  install   httpd  &>/dev/null

    2.输入重定向及结合案例
    ==简介==
            标准输入:" <"  等价  "0<"
    ==案例:输入重定向发送邮件==
         (1) 观察默认发送邮件的过程
               编写邮件

         [root@localhost ~]# mail    -s    "ssss"      alice

             111
             222
             333  
             .  

             
            点代表邮件编辑已结束。
             mail   电子邮件
              -s    标题
              ssssssss   标题内容
              alice     邮件接收人
              .      结束符号
           查看邮件

        [root@localhost ~]# su   -     alice

            [alice@localhost ~]$ mail

             
            Mail version 8.1 6/6/93. Type ? for help.
            "/var/spool/mail/alice": 1 message 1 new
           >N 1 root@localhost .local Mon Oct 29 14:09 18/657 "ssss"
            & 
            按邮件编号:1.即可看邮件。
           按q 退出。

           
    (2) 使用重定向快速创建邮件
           如果已经有了现成的邮件内容呢,如何快速输入邮件内容。
           就可以用重定向创建邮件!!!
           先准备一段邮件内容

      vim  word.txt

     [root@localhost ~]# mail -s "test01" alice  <  word.txt

           邮件命令    标题   收件用户    导入内容

           原理:利用输入重定向,把文件内容代替人为的输入。

         

 

三.管道    |

1.进程管道piping

1.简介

  管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。

2.语法

command1 | command2 |command3 |...

  

   指令1的标准输出    作为指令2的标准输入

3.案例

  [root@localhost ~]# cat   /etc/passwd   |   tail -3

   

   查看用户信息  只看其中的后三行

[root@localhost ~]# ps aux       |      grep 'sshd'

    

   查看程序进程  带sshd的进程

2. tee 管道

1.简介

   三通管道,即交给另一个程序处理。又保存一份副本

   

2.案例

  [root@localhost ~]# cat /etc/passwd |tee 88.txt | tail -1
  localhost:x:1001:1001::/home/qianfeng:/bin/bash
  [root@localhost ~]# cat 88.txt

   

   88.txt 输出所有行,因为是命令1 (cat)处理的结果

   |tee 88.txt  :把cat的命令输出结果保存在 文件88.txt里

   |tail -1 : 把cat 命令执行的结果, 输入到 tail -1 的命令里

   cat 88.txt  查看文件88.txt所接收的cat /etc/passwd内容

 3.参数传递Xargs

 1.  cp rm一些特殊命令就是不服其他程序。

 2.案例

==环境准备,准备一些文件==

[root@localhost ~]# touch /home/file{1..5}

[root@localhost ~]#ls   /home

  

   创建文件夹1 2 3 4 5  查看是否创建好

==接收消息,部分文件需要删除==

  [root@localhost ~]# vim files

  /home/file1
  /home/file3
  /home/file5

==使用管道==

[root@localhost ~]# cat files.txt |rm -rvf

     结果失败

   

==结果不行,加 xargs

[root@localhost ~]# cat  files  |xargs rm  -rv f 

 

  查看文件内容   |xargs  删除  f

  执行结果:  removed ‘/home/file1’
                      removed ‘/home/file3’
                      removed ‘/home/file5’

 
 结果成功    

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值