linux中的标准输入输出用法

linux中的标准输入输出用法,第1张

把/dev/null看作”黑洞”, 它等价于一个只写文件,所有写入它的内容都会永远丢失.,而尝试从它那儿读取内容则什么也读不到。然而, /dev/null对命令行和脚本都非常的有用。

像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到。

/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。

(1)舍弃标准输出,将错误输出到log文件中

nohup node bin/www >/dev/null 2>log &

(2)如果错误信息也不想要的话:

nohup node bin/www >/dev/null 2>&1 &

注:其中node bin/www是项目node启动

https://blog.csdn.net/wufaliang003/article/details/80275055

https://www.cnblogs.com/yanzibuaa/p/7808437.html

https://blog.csdn.net/u014284252/article/details/51784217

https://www.cnblogs.com/kcxg/p/11076461.html

https://blog.51cto.com/ibmcn/2348741

https://msd.misuland.com/pd/3255817963235708312

https://blog.csdn.net/cristik/article/details/82785847

linux shell下常用输入输出 *** 作符是:

1. 标准输入 (stdin) :代码为 0 ,使用 <或 <<; /dev/stdin ->/proc/self/fd/0 0代表:/dev/stdin

2. 标准输出 (stdout):代码为 1 ,使用 >或 >>; /dev/stdout ->/proc/self/fd/1 1代表:/dev/stdout

3. 标准错误输出(stderr):代码为 2 ,使用 2>或 2>>; /dev/stderr ->/proc/self/fd/2 2代表:/dev/stderr

Unix/Linux/BSD 都有三个特别文件,分别

1)标准输入 即 STDIN , 在 /dev/stdin ,

一般指键盘输入, shell里代号是 0

2) 标准输出 STDOUT, 在 /dev/stdout,

一般指终端(terminal), 就是显示器, shell里代号是 1

3) 标准错误 STDERR, 在 /dev/stderr

也是指终端(terminal), 不同的是, 错误信息送到这里

shell里代号是 2

2, 3用些例子再表达一下

User@User-PC ~

$ ls /dev/stdin

/dev/stdin@

User@User-PC ~

$ ls -l /dev/std*

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stderr ->/proc/self/fd/2

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdin ->/proc/self/fd/0

lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdout ->/proc/self/fd/1

就是这些东西了,呵呵

User@User-PC ~

$ ls 1>log1.txt

User@User-PC ~

$ cat log1.txt

Mail/

News/

a.txt

aa*

awkscr

b.txt

bb*

bin/

cc

cgitest.rex*

dd*

irc-sh*

junk

lib/

log1.txt

lynx.cfg

matrix/

perlscr*

pp*

rexx_script/

rrr

testawk

tmp/

trash

将标准输出导向到文件, 缩写就是 ls >log1.txt

User@User-PC ~

$ ls llll 1>log2.txt

ls: 无法存取 llll: No such file or directory

再次执行,但这次没有这个文件llll, 出现错误讯息

User@User-PC ~

$ cat log2.txt

User@User-PC ~

$ file log2.txt

log2.txt: empty

输出没有导向到文件,文件是空文件

User@User-PC ~

$ ls llll 2>log2.txt

User@User-PC ~

$ cat log2.txt

ls: 无法存取 llll: No such file or directory

User@User-PC ~

$

再次执行刚才的命令,只是将 1>log2.txt 改为 2>log2.txt

这次就成功把错误讯息导向至文件了,呵呵,

就是这样

所以,将标准输出和标准错误 一同导向到一个文件里,就得这样表达

命令 2>&1 >档案, 如

User@User-PC ~

$ echo 123 | if grep -E '[0-9]+' 2>&1 >/dev/null then echo "This is number."fi

This is number.

grep 标准输出和标准错误 都导向到系统‘黑洞’,不会再屏幕上显示什麼

, 明白了吧? 呵呵


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8943967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存