javascript - Gnome 外壳扩展 : how to run a command with pipes

标签 javascript glib gnome gnome-3 gnome-shell-extensions

所以我正在制作一个 Gnome Shell 扩展。我希望能够使用管道运行一些命令。 (该命令实际上是 "xrandr --query | awk 'something'",但这是题外话)

所以,到目前为止我所做的是

GLib.spawn_async_with_pipes(null,
                            ['/usr/bin/xrandr', '--query', '|', 'awk...'], null,
                            GLib.SpawnFlags.DO_NOT_REAP_CHILD, null);

但是没用! 我找不到任何使用管道在 gnome 扩展中运行命令的示例。

我是否必须像以前那样在命令中编写 "|"

最佳答案

spawn_async_with_pipes 没有按照您的意愿进行(以一种简单的方式)。它返回管道进行处理。您可以通过两次调用和连接来完成,但这会有点复杂。

保持精确语法的一个简单方法是调用一个将进行管道处理的 shell 在this answer的帮助下它提供了一种调用命令的方法,我编写了以下代码,它使用正确的参数调用 shell(在本例中为 bash)

const Util = imports.misc.util;
Util.spawn(['/bin/bash', '-c', "xrandr --query | awk 'something'"])

关于javascript - Gnome 外壳扩展 : how to run a command with pipes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33911776/

相关文章:

thread-safety - glib 回调和线程安全

c - 打开和关闭日志文件会导致 C 中的内存泄漏

python - 用于 python-evince 的简单 "Hello-World"程序

linux - 使用 gnome 终端获取新选项卡

javascript - knockout ko.observableArray 不会刷新 View

javascript - Eslint 的正确 YAML - 值不应超过 1 个项目 - 无多个空行

javascript - 改变菜单方向

c - Glib 类型(例如 guint)到标准 C 数据类型(例如 int)之间的类型转换

javascript - Reactjs:如何从安装的 <div> 获取 css-class 属性?

linux - gnome-shell 3.34 缺少 ExtensionUtils.extension 属性