关于数据流重定向

首先明白几个概念

标准输入STDIN,即 standard input,即输入到程序的信息

标准输出STDOUT,即 standard output,即程序正常执行后返回的正确信息

标准错误输出STDERR,即 standard error output,即程序执行失败后返回的错误信息

概念的对应代码

STDIN 的代码为0,使用 < 或者 <<

STDOUT 的代码为1,使用 > 或者 >> 或者 1> 或者 1>>

STDERR 的代码为2,使用 2> 或者 2>>

示例说明

将正确输出和错误输出分流:

find / 1> list_right 2> list_error

知道会发生错误但是忽略并丢弃

find / 2> /dev/null

将正确信息和错误信息写入同一文件:

find / > list 2> list     #错误或不合适的写法
find / > list 2>&1        #正确写法
find / &> list            #正确写法

写法1错误原因为,由于两股数据同时写入一个文件,造成两股数据可能会交叉写入造成次序混乱

<< 的使用:

cat > test.txt <<"eof"
>123
>456
>eof

cat test.txt
123
456


# 拓展题外话
heredoc 默认会解释变量
如果想不解释变量,可以在该字符串前加反斜杠转义,或者使用一对单引号闭合第一个 endpoint keyword (大家都习惯使用 EOF )

其它的一些经典写法:

&>/dev/null
等价于:
1>/dev/null 2>&1

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(0)
witersen的头像witersen
上一篇 2022年7月7日 上午12:07
下一篇 2022年7月13日 上午12:59

相关推荐

  • Linux下两台机器设置免密登录

    免密登录的原理是使用公钥加密技术(非对称加密)来实现身份验证。下面是免密登录的基本原理 免密登录的关键在于,私钥始终保持在本地,并且不应泄漏给其他人。公钥是安全的,可以在多个服务器…

    2023年9月15日
    6540

发表回复

登录后才能评论