数据流重导向

    xiaoxiao2021-03-26  19

    数据流重导向是什么?

    我们执行一个指令时,指令可能需要先从档案中读取数据,经过指令处理之后,将结果输出到屏幕上。如果指令错误或是文档不存在, 错误结果也会显示到屏幕上来,这就是我们通常所说标准错误输出。当然我们也可以将结果传送到别的地方,而不是在屏幕上 显示,比如使用文件记录结果,这就是数据流重导向。而传送的指令有:

    1.标准输入(stdin): 代码为0 ,使用 < 或 <<; 2.标准输出(stdout): 代码为1 ,使用 > 或 >>; 3.标准错误输出(stderr): 代码为2 ,使用2> 或 2>>;

    其中>是新建或清空文件内容并覆写,>>则是追加到文本尾部。

    数据流重导向有什么用?

    • 当屏幕输出的信息很重要,而且我们需要将他存下来的时候; • 背景执行中的程序,不希望他干扰屏幕正常的输出结果时; • 一些系统的例行命令(例如写在 /etc/crontab 中的档案)的执行结果,希望他可以存下来时; • 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时; • 错误讯息与正确讯息需要分别输出时。

    接下来展示几个常用的数据重导向例子:

    //将ls结果记录到文件中 ls -l / > /home/ls.txt //将ls错误的结果记录道文件中 /abc目录不存在 ls -l /abc/ 2> /home/lserr.txt //将ls结果追加道ls.txt ls -al / >> /home/ls.txt //将ls正确结果记录道文件a中,错误结果记录到文件b中 ls /home/mark/ 1> list_right 2> list_error //讲ls正确结果和错误结果都记录到同一个文件 特殊写法 ls /home/mark/ > list 2>&1 //将正确结果记录,错误结果丢弃 ls /home/mark/ 1> list_right 2> /dev/null //使用文本内容代替键盘输入 读取contfile内容 输入到catfile中 cat > catfile < contfile //也可以使用自定义结束符号代替ctrl+d结束输入,例如输入完毕之后输入eof自动退出编辑 cat > catfile <<eof

    –end–

    参考文献:《鸟哥的Linux私房菜》

    转载请注明原文地址: https://ju.6miu.com/read-660387.html

    最新回复(0)