重定向以及管道

描述I/O设备的重定向

       I/O重定向与管道

一个程序最基础的部分就是输入数据,通过指令对其进行加工,输出出一个结果。在这个过程中,我们输入的数据(Input)和我们输出的数据(Output)合称为I/O设备。通常数据输入来自于我们的键盘和鼠标,即人为的输入。我们称这个输入叫做标准输入(STDIN)–0;而输出到终端端口的正确结果我们叫做标准输出(STOUT)–1;输出的错误结果叫做标准错误(STERR)–2。I/O重定向的意思就是改变默认的输入输出方式,即重新定义输入的方式,使标准输入不仅仅来自键盘,也可以来自上一个命令的标准输出等。

       把标准输出和错误输出重定向到文件

改变文件的输出位置,将其输出到指定文件中,其中包括标准输出和标准错误。对于标准输出我们可以通过 ” >  ”来重定向(原文件可不存在),对于标准错误通过” 2> ” 来重定向。具体操作格式为:

命令 操作符号 文件名

通过某些命令产生新的输出,通过操作符号将其输入到文件中(而不是默认的输出到屏幕中)

也可以通过符号”&>和2>&1″将两种输出重定向到同一文件。若目标文件中有数据,符号”>”将清空原有数据并覆盖。可使用符号”>>”追加到目标文件,标准错误同理。

      从文件中导入标准输入

从文件中导入标准输入,不在通过人为的敲打字符,我们称之为输入重定向,通过符号”<“实现。可通过输入重定向将需要的数据通过命令来输入。具体操作格式:

命令  操作符号 文件名

通过某些命令来改变文件的数据使其作为标准输入。(例如tr命令)

       tr命令

tr   [optins]    [set1] [set2]

tr命令可删除或转换字符(将第一字符集set1的内容转换为set2),通过tr命令我们可以修改文本后将其作为标准输入。例如tr  ‘a-z’  ‘A-Z’就是将指定文本的小写字母转换为大写字母。tr命令也可预定义字符集,即tr  ‘[:lower:]’  ‘[:upper:]’

常用的选项

-c :取字符集的补集

-s:将连续重复的字符转换为一个字符

-d:删除字符集里面的字符

-t:将第一字符集的内容转换成第二字符集的内容

      单行重定向与多行重定向

使用单行重定向时,在某些交互式重定向中(如’cat  >  file’),输入文本后需要Ctrl+d退出,而且输出的是纯文本,并不能识别命令。多行重定向可以改变这些缺陷,多行重定向就是在文本开始时设置终符’>>EOF'(此时EOF为终止符)只有输入终止符才算结束输出,而且多行重定向中可识别命令,使重定向的文本内容更加灵活。

管道

管道技术就是使用符号”|”将多个命令链接在一起,使前一个命令的标本输出作为后面命令的标准输入。例如cmd1|cmd2|cmd3中,首先将cmd1的标准输出作为cmd2的标准输入,再将其标准输出作为cmd3的标准输入,以此类推。管道技术默认不可转换标准错误,我们可以通过”2>&1和|&”将其转换。

我们也可以在管道中使用tee命令将输出重定向到多个目标。即在管道中加入”tee -a file”,这样我们就可以在管道的中间查看和记录不同阶段的输出,便于在出现问题时排除故障。

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88644

(0)
yoyiccccyoyicccc
上一篇 2017-11-19
下一篇 2017-11-19

相关推荐

  • LAMP (php-fpm模式)部署出现的奇葩问题

    1. 安装环境:(cent6.5) yum install -y php php-devel httpd  php-fpm mysql 2. 修改配置文件 vim /etc/httpd/conf/http.conf 注释掉DocumentRoot vim /etc/httpd/conf.d/vhost.conf <VirtualHost *:…

    2017-04-10
  • 马哥linux课堂笔记

    0805课堂笔记 基本权限 读,写,执行   对于文件的读权限,能否查看文件内容.(文件内容需不需要看,如果是文本就需要看,如果是二进制就不需要看) 对于文件的写权限,能否修改文件内容,不能修改文件名,不能删除文件.(如果需要修改文件内容和文件名,必须在其父目录增加写权限和执行权限) 对于文件的执行权限,能否运行他.   对于目录的读权限…

    Linux干货 2016-08-15
  • DNS实验

      建立DNS服务器(正向解析) linux没有缓存 windows有dns缓存 权威结果,非权威结果 无论是正向解析数据库还是反向解析数据中  写管理员邮件地址或完整域名(FQDN)都要再后面加上点。否则系统会自动不上区域名称。 实验环境先清理防火墙规则,关闭防火墙. centos7 systemctl disabl…

    Linux干货 2016-11-01
  • 用户权限过滤练习(w4)

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@keyou ~]# cp -r /etc/skel/ /home/tuser1 | chmod -R g-rwx,o-rw…

    系统运维 2016-11-20
  • ​redis cluster 安装指南

    公司的很多项目在使用redis主从。由于coder的各种毁灭性操作,迫切需要一个能带故障恢复的架构。因此新版的cluster,开始了测试。 一、Cluster 理论基础 Cluster介绍 Redis集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis…

    Linux干货 2016-02-14
  • 马哥教育网络班22期+第5周课程练习

    week5: 1、显示当前系统上root、fedora或user1用户的默认shell; [root@rs1 ~]# awk -F':' '$1 ~ /^(root|fedora|user1)/{print $1,$NF}' /etc/pa…

    Linux干货 2016-09-08