linux命令重定向 linux各种重定向及其含义( 三 )


如果希望 stderr 重定向到 file,可以这样写:
$ command 2file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command 2file2 表示标准错误文件(stderr)
如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$ commandfile 21 或者 $ commandfile 21
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ commandfile1 file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2 。
含义:将标准错误输出 重定向到 标准输出 。
符号是一个整体,不可分开,分开后就不是上述含义linux命令重定向了 。
比如有些人可能会这么想:2是标准错误输入,1是标准输出 , 是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"21"就行linux命令重定向了linux命令重定向?是这样吗? 如果是尝试过,你就知道21的写法其实是将标准错误输出重定向到名为"1"的文件里去了
LINUX 标准错误输出重定向用途:不挂断地运行命令 。
语法:nohup Command [ Arg … ] []
无论是否将 nohup 命令的输出重定向到终端linux命令重定向,输出都将附加到当前目录的 nohup.out 文件中 。
如果当前目录的 nohup.out 文件不可写linux命令重定向,输出重定向到 $HOME/nohup.out 文件中 。
如果没有文件能创建或打开以用于追加linux命令重定向,那么 Command 参数指定的命令不可调用 。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令 。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令 。
否则linux命令重定向,nohup 命令的退出状态是 Command 参数指定命令的退出状态 。
用途:在后台运行
一般两个一起用
3.为什么呢 21 要写在后面?
首先是commandfile将标准输出重定向到file中, 21 是标准错误拷贝linux命令重定向了标准输出的行为 , 也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中 。
21 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端 。file 后输出才被重定向到file , 但标准错误仍然保持在终端 。
用strace可以看到:
这个命令中实现重定向的关键系统调用序列是:
open(file) == 3
dup2(3,1)
dup2(1,2)
这个命令中实现重定向的关键系统调用序列是:
dup2(1,2)
open(file) == 3
dup2(3,1)
注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR) 。
这里的2和之间不可以有空格,2是一体的时候才表示错误输出 。
linux命令重定向的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux各种重定向及其含义、linux命令重定向的信息别忘了在本站进行查找喔 。

推荐阅读