初学Linux之标准I/O和管道

标准输入和输出

程序是由指令+数据组成
程序的数据流有三种:

输入数据流:<–标准输入(stdin),一般默认是键盘
输出数据流:–>标准输出(stdout),一般默认到终端窗口
错误输出流:–>标准错误(stderr),一般默认到终端窗口

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

I/O重定向:改变默认位置

输出重定向将标准输出(stdout)和标准错误(stderr)重定向到指定位置

格式: 命令 操作符号 文件名

支持的操作符号:
> :把标准输出(stdout)重定向到文件,会覆盖原文件内容
>> :把标准输出(stdout)重定向到文件,会在原有内容基础上,追加内容

说明:上面是讲ll显示的结果输出重定向到文件file中,使用>时,file文件被覆盖了,使用>>时,原文件file和重定向的内容都显示了,是追加内容

2> :把标准错误(stderr)重定向到文件,会覆盖原内容
2>>:把标准错误(stderr)重定向到文件,会在原内容基础上,追加内容

说明:将命令执行的错误结果显示在file文件中,使用2>时,覆盖了原文件file输出的,使用2>>时,原文 件内容和标准错误都显示了,是追加内容

&>:把所有的输出重定向到文件,不管对错都输出到指定位置,覆盖输出
&>>:把所有的输出重定向到文件,不管对错都输出到指定位置,追加输出

说明:使用&>或者&>>时,执行ll时,是标准输出,lls是标准错误,但是不管是哪个的输出都重定向到file 文件中,2>&1和&>,&>>效果一样,2>&1是老版本使用,要在最后使用,才有效果。

command >/path/toshmefile 2>&1
command>>/path/to/somefile 2>&1
理解:A和B,将A输出到B上,如果对了,就正常输出到B上,如果错误了,内容还是输出在B上

set -C:禁止将内容覆盖已有的文件,但是可以追加强制覆盖 :
set +C:允许覆盖

合并多个程序的标准输出
(command ;command)>file

说明:将ll和echo shell的标准输出一起重定向到file文件中,此法只能用于标准输出,
标准错误不能使用

tr:转换和删除字符

tr [option] .. SET1 [SET2]==>[]非必选

选项:
-c:取字符的补集==>取代所有不属于第一字符集的字符
-d:删除所有属于第一个字符集的字符
-s:把连续重复的字符以单独一个字符表示
-t:将第一个字符集对应字符转换为第二字符集对应的字

管道使用符号|来连接命令
command1 |command2 |command3…
1.将命令1的标准输出发送给命令2,作为命令2的标准输入,命令2的标准输出发给command3,作为command3 的标准输入….
2.标准错误默认不能通过管道转发,但是可以利用2>&1或者|&实现
3.最后一个命令会在当前shell 进程的子shell 进程中执行
4.可以组合多种工具

tee命令:

command1 |tee filename | command2
把command1的标准输出保存在文件中,然后管道输入给command2

特点:

1.保存不同阶段的输出
2. 复杂管道的故障排除
3.同时查看和记录输出

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

(0)
范儿范儿
上一篇 2018-04-03
下一篇 2018-04-03

相关推荐

  • d1-d2 命令总结

    1.bc 计算器 [root@centos7 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For det…

    Linux笔记 2018-07-19
  • 追梦之路第七周修炼

    追梦之路第七周操作系统启动流程

    2018-08-06
  • 正则表达式入门及应用 以grep sed为例

      ◆ 正则表达式正则表达式是由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符) 不表示字符字面意义,而表示控制或通配的功能。 它与shell的通配符既有相似也有不同。 ※ 转义符\ 可将带有命令性质的符号作为一般字符使用。 正则表达式中,常用以下元字符来代表特定字符的集合: ◆ 分组     1、正则表达式中,可以用\(\) 将一个或多…

    2018-04-15
  • Linux的发行版

    按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

    Linux笔记 2018-06-21
  • TEST

    TEST

    Linux笔记 2018-07-30
  • route命令

    1.   使用背景         需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络。如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁琐的“禁用网络连接”、“启用网络连接”的操作来进行内外网的切换,甚是麻烦。         为了解决这个问题,可以使用route命令来使得同时内…

    Linux笔记 2018-05-01