问题标签 [dev-null]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 我的第一个 bash 脚本中的错误处理问题
好的,所以我是 bash 脚本的初学者,我知道这个问题的措辞可能有点尴尬,但我会尽可能清楚!
我编写了以下脚本来在文件夹中创建存储库的备份。脚本如下:
当不带参数调用该脚本时,此脚本成功生成 'var/svn' 中所有存储库的 .gzip 备份,并创建称为参数的特定存储库的 .gzip 备份。伟大的!
但是,如果脚本使用与存在的存储库不对应的参数运行,则程序将崩溃并显示错误消息:svnadmin: E000002: Can't open file '/var/svn/ada/format': No such file or directory
. 我想要实现的是捕捉这个错误并将更用户友好的输出打印到控制台。我一直在尝试使用“陷阱”来做到这一点。
首先,我添加了以下行:
...然后我在最后一个 for 循环中将错误推送到 /dev/null :
我在我所做的地方推送到 /dev/null 文件,因为这是程序出错的地方。但是,该脚本似乎不再起作用。我在这里做错了什么?与2>/dev/null
在一行中间有问题吗?如果是这样,我该如何重构这段代码,使其不需要管道中间的管道?
非常感谢您的帮助,我希望我的问题相当清楚!为了确认,最终的非工作代码如下:
bash - 在 bash 中重定向内存泄漏错误消息
我在一个小茶计时器脚本中使用espeak
with :mbrola
不幸的是,mbrola 中似乎存在内存泄漏;但它并没有阻止它工作。
如您所见,尽管我想沉入stdout
& stderr
in ,但我在终端上输出了这条丑陋的错误消息/dev/null
。
如何正确丢弃内存泄漏信息?
bash - > /dev/null 如何吃掉输出流?
我/dev/null
在 bash 编程中使用了很多东西来将不必要的输出发送到黑洞中。
例如,这个命令:
不会echo
有什么。我读过这/dev/null
是一个空文件,用于通过重定向处理不需要的输出。但这种处置究竟是如何进行的呢?我无法想象/dev/null
将内容写入文件然后立即删除该文件。那么当你重定向到这个文件时实际发生了什么?
bash - 从 shell 脚本输出中省略错误
如果 ICMP 回显失败,我想省略此 IF 语句中的错误。
示例代码:
如果 ping 成功或者您在脚本之外运行命令,它会完美运行,但如果没有响应,则会给出以下输出。
我已经看到了引用 2>/dev/null 的答案,但这会在输出中显示整个 ping 查询,无论成功与否!2>/dev/null 的示例如下。
这是一个有点n00b的问题,但我是网络小伙,而不是开发人员:)
提前致谢!!
c - /dev/null 总是可以打开的吗?
我想fprintf
通过将目标 FILE 重定向到/dev/null
. 但我可以肯定的是,fopen("/dev/null", "w");
永远不会回来NULL
。换句话说,是否每次都可以打开这个“文件”?
如果是这样,我可以使用这个不错的三元运算符:
python - 如何获取子进程默认/预设值/行为
在这篇文章中,我解释了如何检查在 Windows 会话中打开了多少 QGIS 项目。
这是缩短的代码:
该代码使用tasklist
从 Windows 获取有关所有打开窗口的信息并过滤 QGIS 窗口标题。
我在 QGIS 插件的函数中使用此代码。
插件中还有另一个函数,我在其中调用了多个函数以subprocess
使用另一个程序 ( SAGA GIS
) 进行一些计算:
问题是这些subprocess
调用不再起作用。我在 QGIS python 控制台中没有收到特定错误。
当我发表评论self.checkQgisProcesses()
时,它再次起作用。
我认为问题在于DEVNULL
, stdin
,stderr
参数。
如何将它们设置回默认值?
更新
我错误地认为问题可能出在DEVNULL
声明上。显然问题在于使用subprocess.STARTUPINFO()
.
这是一个可重现的示例:
这是来自的代码hello_world.bat
:
该函数checkFirefoxProcesses()
查找打开的firefox
进程。要运行该示例,您必须打开一个firefox
会话。该函数在 BAT 文件的帮助下helloWorldToText()
创建一个文本文件。ECHO
该示例不会创建声明为startupinfo = info
. 当我在没有它的情况下运行subprocess
of 函数时。helloWorldToText()
startupinfo = info
案例:checkFirefoxProcesses()
没有运行startupinfo = info
和运行helloWorldToText()
运行startupinfo = info
。
bash - Bash:使进入后台的进程静音
如果我使用 bash 运行应用程序并将其通过
STRG+z
bg
命令
如果现在该进程正在打印到stdout
shell,则打印此输出。这个输出对我来说并不有趣,我不喜欢我的外壳被它污染。
有没有办法将此过程的输出重定向到/dev/null
我可以通过直接在后台启动应用程序来实现同样的效果(./application &> /dev/null)&
,但是我的应用程序已经在运行,我不想退出它并重新启动它。
osx-elcapitan - /dev/null 没有这样的文件或目录
但是,当我对它进行任何操作时,我会运行El Capitan OS X
并尝试使用/dev/null
它,例如ls
:
我也试过:
然而,输出如下:
我怎样才能解决这个问题?
php - PHP Cli,如何使用重定向
我需要从 cli 启动 php 并将 stdout 重定向到 /dev/null,但我正在使用 args 并且重定向不起作用。
如何解决?
shell - 测试中的 Shell 脚本输出管道不起作用
我正在尝试以参数方式控制命令的错误输出,但管道命令被作为另一个参数处理。下面的测试脚本;
错误输出仅应在选择 --verbose 选项时打印,但无论如何都会打印。测试脚本显示2>/dev/null
管道作为参数处理。
为什么/如何将管道作为参数处理?