标签: stdout

shell 标准流重定向顺序 OR 2>&1 1>/dev/null vs 1>/dev/null 2>&1

有人可以澄清差异吗?其中一些被认为是最佳实践吗?如果我没记错的话,我以某种方式在 SO 上读到这1>/dev/null应该在此之前:2>&1

ls -al /doesNotExists 2>&1 1>/dev/null
ls -al /doesNotExists 1>/dev/null 2>&1

ls -al /doesNotExists 1>&2 2>/dev/null
ls -al /doesNotExists 2>/dev/null 1>&2

ls -la /doesNotExists 2<&1 1>/dev/null
ls -la /doesNotExists 2<&1 2>/dev/null

ls -la /doesNotExists 1<&2 1>/dev/null
ls -la /doesNotExists 1<&2 2>/dev/null

ls -la /doesNotExists 1>/dev/null 2<&1
ls -la /doesNotExists 2>/dev/null 2<&1

ls -la /doesNotExists 1>/dev/null 1<&2
ls -la /doesNotExists 2>/dev/null 1<&2
Run Code Online (Sandbox Code Playgroud)

bash redirection stderr stdout stdin

4
推荐指数
1
解决办法
3230
查看次数

由 cron 执行时,脚本的 stdout 和 stderr 不会被重定向

./script &>> log.txt

我得到了一个不错的日志文件,但是如果我有由 cron 执行的相同命令,那么可以说 crontab 看起来像这样:

* * * * * '/home/user/script &>> /home/user/log.txt'
Run Code Online (Sandbox Code Playgroud)

log.txt 将是空的,我试过 " 和 ' 和 ` 并且没有刻度来包含命令,知道为什么流不会被写入文件吗?

bash shell cron stdout crontab

3
推荐指数
1
解决办法
3409
查看次数

stdout 上的二进制输出有什么用?

一些程序直接在stdout. 这里有些例子:

tar -c file.png
dd  if=file.png
Run Code Online (Sandbox Code Playgroud)

嗯,我看到输出可以重定向到一个文件。但是这些程序已经接受输出文件名作为参数。因此,以下命令将给出相同的结果:

tar -c file.png  > file.tar
tar -c file.png -f file.tar

dd if=file.png  > copy.png
dd if=file.png of=copy.png
Run Code Online (Sandbox Code Playgroud)

二进制输出stdout可以用于什么其他目的?

command-line stdout

3
推荐指数
1
解决办法
3041
查看次数

如何使用 Notepad++ 打开标准输出?

在 OSX TextMate 上有别名mate,您可以将其与管道一起使用以打开其他程序的标准输出。

如何使用 Notepad++ 在 Windows 7 中实现相同的效果?

前任。: git diff master|edit

windows-7 notepad++ pipe stdout

3
推荐指数
1
解决办法
2254
查看次数

同时重定向到 /dev/null 和文件

我正在尝试执行以下命令: find 。-名称“ .[ch] ”| xargs grep -in 模式 > 文件

由于未找到一些文件,stderr 上打印了一些错误。如何在同一命令中将 stdout 重定向到文件并将 stderr 重定向到 /dev/null/ ?

该命令不起作用: find 。-名称“ .[ch] ”| xargs grep -in 模式 1> 文件 2> /dev/null/

错误信息:ksh: /dev/null/: 无法创建[是目录]

谁能告诉我该怎么做?

干杯,VSN

linux redirection stderr stdout

3
推荐指数
1
解决办法
1646
查看次数

将数据传输到标准输出时收到 FFMPEG 错误 -22

我正在尝试使用 FFMPEG 将 avi 文件转码为 mp4 并使用以下命令将数据通过管道传输到标准输出(技术上通过 NodeJS,但在命令行上直接执行以下命令时我收到相同的错误):

ffmpeg -i myavi.avi -vcodec libx264 -acodec libvo_aacenc -f mp4 pipe:1
Run Code Online (Sandbox Code Playgroud)

会出现这个错误:

Could not write header for output file #0 (incorrect codec parameters ?): Error number -22 occurred.
Run Code Online (Sandbox Code Playgroud)

当我执行下一个命令时,一切都按预期工作:

ffmpeg -i myavi.avi -vcodec libx264 -acodec libvo_aacenc -f mp4 newmp4.mp4
Run Code Online (Sandbox Code Playgroud)

请注意,我在 Windows 上使用(或尝试)FFMPEG——对这里发生的事情有什么想法吗?

编辑:最后一个说明,我使用的 FFMPEG 版本是 N-63439-g96470ca,构建于 2014 年 5 月 25 日(最新版本的 FFMPEG 可用于http://ffmpeg.zeranoe.com/上的 Windows 静态文件)构建/)。

video windows ffmpeg command-line stdout

3
推荐指数
1
解决办法
1万
查看次数

使用 PuTTY SSH,如何捕获命令的远程输出?

在Linux中

ssh me@server "echo this ran remotely"
Run Code Online (Sandbox Code Playgroud)

输出this ran remotely被置于标准输出。太棒了。

在 Windows 中

echo "echo this ran remotely" > test.cmd
putty -i privatekey.ppk -m test.cmd -ssh me@server
Run Code Online (Sandbox Code Playgroud)

输出不会进入标准输出,而是在新进程中打开,据我所知,它会永远丢失。

如何捕获远程命令的输出?

我知道我可以在 cygwin 中执行此操作,但这没有帮助,因为很难从其他脚本语言以编程方式运行 cygwin 命令。

windows ssh command-line putty stdout

3
推荐指数
1
解决办法
5421
查看次数

java -version 不写入标准输出?

要么我在做一些愚蠢的事情,要么 Sun 是。怎么会像这样:

java -version > version.txt
Run Code Online (Sandbox Code Playgroud)

仍然打印到标准输出并将 version.txt 留空?我正在检查退出代码,它仍然是 0,所以这不是写入 stderr。

我需要这个,因为我正在构建一个测试环境工具并想检查 Java 的版本是否足够,我计划捕捉该版本的输出,但现在我被卡住了。

我使用的是 OS X Leopard,Java 版本 1.6.0_20。

有任何想法吗?

java stdout macos

2
推荐指数
2
解决办法
1453
查看次数

使用与 stdin 和 stdout 相同的文件会导致空文件

如果要过滤文件,但如果我使用相同的文件作为输入和输出,则输出文件为空。是否有另一种解决方案而不是使用第二个文件?

php -r "echo preg_replace('~/\* DEV \*/(.*)/\* ENDDEV \*/~si', '', file_get_contents('php://stdin'));" < build/index.php > build/index.php
Run Code Online (Sandbox Code Playgroud)

linux shell command-line stdout stdin

2
推荐指数
1
解决办法
500
查看次数

将 stderr 重定向到第二个终端 / tty

我尝试过rse将标准输出和标准错误流与程序区分开来;但我真的很喜欢在单独的终端中查看两者的选项,而无需重定向到文件并拖尾它或其他东西(假设任一流都可以打印 ANSI 终端控制代码。)

有没有办法在新终端或类似的东西中打开现有进程的标准错误?

terminal shell terminal.app stdout

2
推荐指数
1
解决办法
2245
查看次数

如何将 stderr 和 stdout 的一部分重定向到 /dev/null

我的程序输出到stderrstdout。我想在stderr和 中搜索“模式” stdout。我希望将其余部分发送到/dev/null.

如果我在重定向后使用管道stderr./prog 2>/dev/null | grep "pattern" 我没有得到stderr包含“模式”的行。

如果我在重定向之前使用管道stderr./prog | grep "pattern" 2>/dev/null 没有一个stderr被重定向到/dev/null

感谢您的帮助。

grep redirection stderr pipe stdout

1
推荐指数
1
解决办法
3876
查看次数