管道及重定向

管道及重定向

1、重定向

在Linux中有时我们在命令的执行过程中,不想将执行结果显示到屏幕上,或者将其结果输出到其他位置
这时就需要重定向来解决这个问题了
首先了解一下Linux中的3种I/O设备:
0:标准输入
1:标准输出
2:标准错误输出
输出重定向:>  >>  输入重定向: <  <<
>:将标准输出重定向到文件 
echo "Hello" > /app/test.tab
2>:将标准错误输出重定向到文件
ls /etc /error > /app/test.tab 2> /app/error.tab
&>:将所有输出重定向到文件
ls /etc /error &> /app/test.tab 
>>:将标准输出追加重定向到文件
2>>:将标准错误输出追加到文件
&>>:将所有标准输出追加到文件

<:标准输入重定向(单行重定向)
<<:(多行重定向)
eg:有些命令能够通过输入重定向接受来自文件的输入
wc -l < /etc/motd 统计motd文件的行数
mail -s "help" root << eof  此命令是给root用户发送一个邮件,其中指定多行重定向的终止符eof(也可是其它)来
                            指定退出时的终止符
>please help me
>thanks
>eof

2、管道

符号 "|" ,用来连接命令
CMD1 | CMD2 | CMD3 | …    
(1)将CMD1的标准输出传给CMD2,CMD2的标准输出输出再发给CMD3
(2)默认情况下标准错误输出不能通过管道转发,通过2>&1或|&来实现
eg: [root@Centos6 ~]#cat /etc/issue /error 2>&1 | sort
    cat: /error: No such file or directory
    CentOS release 6.9 (Final)
    Kernel \r on an \m
(3)最后一个命令会在当前shell进程的子shell进程中执行

3、”-“符号

在管道中"-"可以用来代替之前命令标准输出
eg: tar -cvf - /app | tar -xvf -   将/app下的文件打包,打包后不记录到文件里,而是传到标准输出在经管道传给后面的
                                   解包命令

4、tee 命令 重定向到多个目标

有时我们在使用管道时需要将不同阶段的数据输出到屏幕上,而还要将数据向下传递,我们就需要用到tee命令
eg: [root@Centos6 ~]#ls | tee | tr "a-z" "A-Z"

原创文章,作者:M25_ymd,如若转载,请注明出处:http://www.178linux.com/82651

(0)
M25_ymdM25_ymd
上一篇 2017-07-27
下一篇 2017-07-28

相关推荐

  • 第八周作业

    1. 写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;     不在线的主机使用红色显示; #!/bin/bash # for i in {1..254};do         pi…

    Linux干货 2017-02-24
  • 【招聘】北京/互联网/运维工程师/7-15K/双休,五险一金

    岗位职责:   1、负责服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析等工作;   2、参与运维流程制定,确保任何突发情况都能高效响应;  3、负责服务器部署,对服务器构架和网络进行优化和改进;  4、负责运维相关数据的收集、分析和总结;  5、负责技术运维相关的文档、手册…

    Linux干货 2016-04-05
  • 96-Mariadb-1

        一. MariaDB or MySQL基础知识                   层次模型 –> 网状模型 –> …

    2016-11-18
  • 逻辑卷管理器LVM使用简介

    逻辑卷管理器(LVM) 原理图如下: 先准备一个分区/dev/sdb1,注意也存在ID问题,选择8e。 1.先把磁盘变成物理卷 在做这步前可以先看下系统中存在的物理卷,没有就什么都不会显示。 把我们准备好的两个磁盘变成物理卷,注意我那使用旧的格式化的分区磁盘,可能会出现上面有文件系统或者卷标类型的问题,所以尽量使用新磁盘做实验。如果出现这种情况,可以使用dd…

    2017-05-02
  • httpd2.4 应用

    练习:  (1)基于主机名实现三个虚拟主机     (2) 每虚拟主机使用独立的访问日志和错误日志 (3) 第三个虚拟主机的/admin要进行用户访问认证  (4) 在第二个虚拟主机上提供/status; (5) 在第三个虚拟主机提供路径别名/bbs,访问其它文件系统路径; (6) 尝试使用混合类型…

    Linux干货 2016-10-09
  • N22-冥界之王-第9周作业

    第九周    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);   分别这两类用户的个数;通过字符串比较来实现;     declare -a shell  &n…

    Linux干货 2016-11-01