IO重定向

程序:指令+数据
    程序:IO

    可用于输入的设备: 文件
        键盘设备, 文件系统上的常规文件,网卡等
    可用于输出的设备: 文件
        显示器, 文件系统上的常规文件,网卡等

    程序的数据流有三种
        输入的数据流: <-- 标准输入(stdin), 如键盘
        输出的数据流: --> 标准输出(stdout), 如显示器
        错误输出流:   --> 错误输出(stderr), 显示器

    fd: file descriptor, 文件描述符
        标准输入:0
        标准输出:1
        错误输出:2

IO重定向:
    输出重定向: >
        特性: 覆盖输出
    例如:


ios h5重定向 io重定向 应用转生_linux文件覆盖  linux 文件追

 

输出重定向: >> 

例如: 

ios h5重定向 io重定向 应用转生_ios h5重定向_02

 

特性: 追加输出

# set -C (大写C)
        禁止覆盖输出重定向至已存在的文件
        此时可使用强制覆盖重定向: >|
    例如:开启此功能后,>已经不能覆盖已经存在的文件了,file1覆盖file2文件时提示错误,不过我们可以用>|强制覆盖, >>输出重定向不受影响,同时file1覆盖file3也不受影响,因为file3文件是不存在,此命令只针对已存在文件


ios h5重定向 io重定向 应用转生_输出重定向_03

 

# set+C 

关闭上述特性 

例如:关闭后,file1文件覆盖file2文件就不会报错了 

ios h5重定向 io重定向 应用转生_数据_04

错误输出重定向: 2>, 2>>
    例如:file4文件不存在,我们用>把file4覆盖file2时出现错误,我们用2>输出时,就正常了,我们再看file2文件内容,错误提示的内容已经存在file2文件里了,意思就是把错误的信息也输出到file2文件里,2>>就是就是追加的意思,错误输出重定向,我们2>>file4在追加一次,file2文件就有两个错误信息了


ios h5重定向 io重定向 应用转生_linux IO重定向详解_05

合并正常输出流和错误输出流
        &>, &>>
    例如:意思是把不管正确的还是错误的输出都输入到文件里,file1是存在的,覆盖到file2没有问题,file4文件不存在的,也可以覆盖到file2文件里,同时错误信息也报存在file2文件里了.


ios h5重定向 io重定向 应用转生_ios h5重定向_06

 

&>> 就是追加的意思了,不删除原来的数据,不管正常的输出还是错误的输出都追加到文件里 

ios h5重定向 io重定向 应用转生_数据_07

cat file1 > file2 2>&1  与&>同义


ios h5重定向 io重定向 应用转生_数据_08

 

cat file1 >> file2 2>&1 与&>>同义 

特殊设备: /dev/null 

例如: /dev/null是一个黑洞,不管什么数据输入到里面都会消失,如果写脚本有什么数据不需要的都可以丢到这里面,我们把file1文件复制到/dev/null里,cat看的时候什么数据都没有 

ios h5重定向 io重定向 应用转生_linux文件覆盖  linux 文件追_09

输入重定向: <
    例如: 把文件内容输出到屏幕,cat就算不加< 也是有这个功能的


ios h5重定向 io重定向 应用转生_linux IO重定向详解_10

 

tr命令: 

命令格式:tr [OPTION]... SET1 [SET2] 

把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符 

例如:意思把[a-z]都输出为[A-Z]也就是变成大写,第一行和第三行都是我输入的小写字母,第二行和第四行都是按enter键就会自动转换成大写字母,对本身是大写字母的字符不做转换 

ios h5重定向 io重定向 应用转生_linux IO重定向详解_11

用法1:
            列: tr [a-z] [A-Z] < file1 
            意思是把file1所有小写改成大写字母并输出到屏幕


ios h5重定向 io重定向 应用转生_ios h5重定向_12

 

用法2: 

列: tr -d [if] < file1 

意思是把file1显示出来包含if的全部删除掉,不会删除源文件数据 

ios h5重定向 io重定向 应用转生_ios h5重定向_13

<< 这个就不是追加的意思了
            cat << EOF         可以持续在屏幕输入数据,直到输入EOF就会自动退出来,同时把你刚才输入的数据一次性打印出来,这里的EOF是直接随意定义,可以是随意的单词.退出就是自己定义的这个单词


ios h5重定向 io重定向 应用转生_ios h5重定向_14

 

cat > file1 << EOP 

例如: 也可以把在屏幕上打好的字符输入到指定的文件中 

ios h5重定向 io重定向 应用转生_linux文件覆盖  linux 文件追_15