标准的I/O和管道

 

程序:指令+数据

    系统自带了许多二进制程序,这些二进制程序共有两部分组成,一部分是指令,一部分是数据。

    指令就是指二进制程序中的内容,然而程序的运行,也需要数据来支撑。

 

标准输出  STDOUT  -1   standard  output

    输入命令所呈现在屏幕上的内容称之为标准输出,但是不是所有的命令都有标准输出。例如cd  rm后面不跟参数时,就没有标准输出。

    标准输出的默认设备就是当前终端窗口。

标准错误  STDERR  -2  standard  error

    当命令的错误使用时,所显示在屏幕上的报错信息为标准错误。

    标准错误的默认设备也是当前终端窗口。

标准输入  STDIN  -0  standard  input

    键盘所输入的内容称为标准输入

I/O重定向  

改变I/O设备的默认位置  用“>”来实现重定向

 

 

 

>”标准输出的具体用法:

  1如果下图中ls.log这个文件不存在,则自动创建。

标准的I/O和管道使用方法_error

  2如果重新重定向到ls.log文件中,则现有内容会覆盖原有内容。

标准的I/O和管道使用方法_二进制_02

   3如果不想覆盖,想保留原有数据,则用“>>”。

标准的I/O和管道使用方法_error_03

注意:

不是所有$SHELL都支持重定向。例如:

标准的I/O和管道使用方法_error_04

        “>是用来重定向正确的信息的,不能用来重定向错误信息。

标准的I/O和管道使用方法_二进制_05

   若想重定向错误信息用命令,用命令“2>”。

标准的I/O和管道使用方法_error_06

   4、当正确命令和错误命令一起执行时,如何把错误信息和正确信息分别从定向到不同的文件夹中该如何实现???

标准的I/O和管道使用方法_standard_07

标准的I/O和管道使用方法_error_08

标准的I/O和管道使用方法_error_09

   5如果错误信息和正确信息放在同一个文件中呢?中间加“&

标准的I/O和管道使用方法_二进制_10

         或执行下面这条命令也可以。但是命令顺序不能错。

标准的I/O和管道使用方法_二进制_11

   6多个文件内容合并到一个文件中去。

标准的I/O和管道使用方法_standard_12

    7、多条命令重定向

标准的I/O和管道使用方法_standard_13

<”标准输入的重定向的具体用法:

     1一些命令需要键盘把一些重要的数据输入到系统中进行处理,例如发送电子邮件。

标准的I/O和管道使用方法_standard_14

    2、多行一块处理

      Cat命令执行后,输入内容,其每一行都要执行一遍,完全没有必要。

标准的I/O和管道使用方法_standard_15

    用“<<”可以实现多行一块执行,其中“E”表示多行的开始,随便什么内容。但是结束时,要跟前面的开始符号保持一致,也就是下图中也要用“E”结尾。只要不输入结束符,其每行的内容始终不会执行,只要输入结束符,其多行内容都会一块执行。

标准的I/O和管道使用方法_error_16

 Tr 命令的具体用法:

     1、小写字母转换成大写字母

标准的I/O和管道使用方法_二进制_17

   2、也可以实现“abc”转换“xyz

标准的I/O和管道使用方法_error_18

   3tr  -d

        只删除含有a bc 的字符

标准的I/O和管道使用方法_standard_19

    4、tr  -s

         将重复的字符合并成一个

标准的I/O和管道使用方法_standard_20

     5/n     回车换行

    新建一个文件f1,用hexdump查看二进制编码,有/n,表示回车换行,tr -d命令删除,结果如下图。

标准的I/O和管道使用方法_standard_21

        也可以将空格转化成“/n”表示回车换行。

标准的I/O和管道使用方法_standard_22

    6tr  -c   除了aa的补集全部替换。

标准的I/O和管道使用方法_standard_23

管道(使用符号“|”表示)用来连接命令

   使用方法:

    1、将$USER的执行结果用管道符“|”传给tr作为参数执行小写字母转换大写字母。

标准的I/O和管道使用方法_error_24

 2、电子邮件也可以用管道符传

标准的I/O和管道使用方法_error_25

    3、管道接收的是标准输出,不接受标准错误。但是如果要想接收标准错误,用命令| &,表示前面命令无论成功失败,统统可以用管道来处理。

           标准的I/O和管道使用方法_二进制_26

    4、也可以用管道进行多次处理,以得到我们想要的结果。

标准的I/O和管道使用方法_二进制_27

    5|tee   既能将输出结果显示到屏幕上,也能输入到文件中。

标准的I/O和管道使用方法_二进制_28

   若管道所输出的文件不存在,则会自动创建。下图中的f4文件本身不存在。

标准的I/O和管道使用方法_standard_29

    6、Set  -C

    文件原有内容不想被覆盖则可以用set-C将覆盖禁止。但是该命令只对当前终端有效,若终端退出再重新登录,该命令也会失去作用。

标准的I/O和管道使用方法_standard_30

     但是可以累加。

标准的I/O和管道使用方法_二进制_31

     若想取消禁止覆盖则用命令“set +C”。