问题标签 [process-substitution]

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.

0 投票
1 回答
37 浏览

bash - 无法从 bash 中正在运行的进程中读取行

使用进程替换,我们可以获得命令的每一行输出。

通过与上述相同的方式,我想获得“wpa_supplicant”命令的标准输出输出,同时丢弃标准错误。但是屏幕上什么都看不到!

我确认在提示符中键入相同的命令会正常显示其输出。

错误是什么?任何帮助,将不胜感激。

0 投票
1 回答
416 浏览

bash - 使用进程替换的“预期令牌附近的语法错误”

这是一个有点尴尬的问题,但我找不到错误。我正在尝试进行流程替换。这是我的代码

但错误是,

有什么可以帮忙的吗?

0 投票
1 回答
50 浏览

bash - 如何将命令行选项添加到使用 curl 下载的脚本

我的 CI 脚本中有以下内容。. .

-g使该位工作的正确语法是什么?

当然

..但是可以在不制作本地文件的情况下完成吗?

0 投票
1 回答
225 浏览

linux - 带有作业控制的 Bash 进程替换后台

我有一个脚本可以处理一批 20MiB 的 CSV 文件,可以选择 gzip 压缩到大约 4MiB。有成千上万个文件,每个单独处理大约需要 30 秒;读取未压缩文件或压缩文件并解压缩“几乎是即时的”,这强烈表明该进程可以在进程级别上并行化。事实上,这就是使用复杂的 Ruby 管道所做的事情。但是,我正在尝试使用 bash 将 Ruby 代码分解成更小的部分。对于工作控制,我想出了这个 bash 功能

这允许我在后台运行 bash 管道之前调用wait_until_job_available,并允许运行作业的可选最小数量(如果省略,则默认为机器上可用的内核数)。

所以我可能会像这样使用它:

如您所见,这应该找到其中的所有文件search_path并将其传递给process_file命令。在这样做时,我使用进程替换来对文件进行分类或即时解压缩文件;输入文件名被替换为一个进程,该进程将发出未压缩文件的内容,输出文件是原始文件名,附加了“.out”。的调用process_file被后台处理并发送到作业控制。看起来花花公子,对吧?

除了我注意到某些文件没有完全正确处理。

我注意到报告要处理的文件process_file总是报告为/dev/fd/63,即使对于process_file. 另一方面,当我将文件单独复制或解压缩到临时文件并将临时文件的名称传递给 时process_file,执行正常并且所有文件似乎都得到了正确处理。

我想避免创建一个临时文件,特别是在触摸磁盘(性能)和需要在处理后清理(删除)临时文件方面;有这个问题阻碍了这一点。所以我很好奇替代流程管道的伪文件名称是否存在某种竞争条件?还是我似乎误解了流程替代或工作控制?

作为参考,我使用的是 Ubuntu Server 14.04、linux 3.19.0-59 Bash 4.3.11 gzip 1.6

0 投票
1 回答
1432 浏览

bash - POSIX shell 等价于 <()

<(commands ...)在 bash/zsh 中,将输出行为作为文件。是否存在 POSIX 等价物?

0 投票
1 回答
318 浏览

php - PHP 是否支持进程替换?

我正在尝试以下示例,例如:

或者:

两者都失败了:

PHP 警告:require_once(/dev/fd/63):无法打开流:第 1 行的命令行代码中没有此类文件或目录

PHP 警告:file_get_contents(/dev/fd/63):无法打开流:第 1 行的命令行代码中没有此类文件或目录

或者:

失败了:

PHP 致命错误:require_once(): Failed opening required '-' (include_path='.:/usr/share/pear:/usr/share/php') in Command line code on line 1

上述尝试是受drush命令启发的,例如:

我可以从文件描述符中注入动态 PHP 代码(无需每次都创建单独的文件),以便在引导主代码之前执行代码。


其他类似的命令工具也可以正常工作:

或者:

我发现了这个PHP 错误这个错误,但是很久以前就已经修复了,我使用的是 5.6.22。

当从 CLI 调用时,有什么方法可以欺骗 PHP 从进程替换中读取数据(例如,从文件描述符中读取/dev/fd),通过使用一些简单的单线?

0 投票
1 回答
491 浏览

bash - 如何在进程替换中重定向?

我试图将标准错误重定向到具有受限权限的文件。这就是我所做的:

这个想法是将标准错误重定向到一个进程,更改 umask 并再次重定向到日志文件。

但它不起作用。按下 后命令停止并以 141 终止return

Bash手册没有在手册中定义“进程列表

任何人都可以解释失败吗?

0 投票
3 回答
852 浏览

python - Python的子进程不允许使用shell = True进行进程替换?

这是一个在 Bash 中运行良好的进程替换的玩具示例:

那么,当从 Python 的子进程中调用 shell=True 时,为什么相同的命令会给出语法错误呢?

0 投票
1 回答
892 浏览

linux - 将多个输入管道传输到 Ghostscript

我正在尝试使用 Ghostscript 创建一个单行 Linux 命令来组合两个 PDF 文件(从 URL 下载)。但是,我不想创建任何临时文件(一切都应该在内存中完成)。

以下命令似乎不起作用(我尝试通过进程替换来实现这一点)。

当我运行这个命令时,它给了我下面的错误。

我相信发生的事情是在两个输入的 PDF 有机会完成下载之前运行 Ghostscript 命令,也许有一种方法可以等待这种情况发生。

0 投票
1 回答
4228 浏览

bash - 如何在bash(xargs?)中的文件列表上执行多个命令

我有一个包含文件列表的文件,我想对每个文件执行两个命令。

files.txt 的内容:

我想对每个文件执行的命令是(例如)ls -sdu.

我希望输出最终是这样的:

我知道如何使用 bash 脚本来做到这一点,但是有没有办法在一行上轻松地做到这一点,使用进程替换之类的?

我以为我可以做这样的事情,但它没有用:

出现了这些错误:

有没有办法做到这一点?