Linux中的重定向,⼤于号>,⼩于号<
我们在处理脚本的运⾏结果时,有时候会看到类似这样的命令:
node server.js > 2> < /dev/null &
复制代码
要理解上边这句话的含义,我们需要了解的重点就在于⼤于号,⼩于号,以及数字的作⽤。
数字
linux 中的 IO 共有三种形式
0: 标准输⼊,stdin
1: 标准输出,stdout
2: 标准错误输出,stderr
⽅向符号
⼤于号>: 将产⽣的内容(⽐如⽇志)输出到某个⽂件
⼩于号<: 使⽤某个⽂件的内容作为标准输⼊
栗⼦拆解
1. 标准输出
node server.js > &
复制代码
后台启动 server,并将标准输出写⼊⽂件 中。这⾥没有出现数字,是因为数字被简写掉了。你也可以这样写:
node server.js 1> &
复制代码
2. 标准错误输出
node server.js 2> &
复制代码
后台启动 server,并将标准错误输出写⼊⽂件 中。
0. 标准输⼊
node server.js < /dev/null &
复制代码
后台启动 server,将"⿊洞"读取到的内容作为标准输⼊来源,因为⿊洞读不到任何东西,所以这样操作是为了不再读取⽤户输⼊的内容。这⾥也 0< /dev/null的是简写。
one more thing
1. > 和 >> 的不同 当 server 产⽣输出时,使⽤>会将内容输出到执⾏ file,再次输出时,之前⽣成的内容会被覆盖。如果使⽤>>则是内
容追加操作。
2. 标准错误输出和标准输出写⼊同⼀个⽂件,应该怎么写?
这样:
node server.js > 2> &1 &
复制代码
为什么不是这样呢?
linux怎么读文件内容node server.js > 2> &
复制代码
因为这样⽂件会被打开两次,⽽且内容会被最新的覆盖掉。⽆法起到追加的作⽤。使⽤&1,⽂件只打开⼀次,相当于将 stderr 的内容传递给 stdout 再写⼊到 中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。