0

我正在尝试拥有一个执行一个命令的桌面快捷方式(没有脚本,我只是想知道这是否可能)。该命令需要 root 权限,因此我gksu在 Ubuntu 中使用,在我输入完密码并且正确之后,我希望其他命令运行文件。我有这个命令:

xterm -e "gksu cp /opt/Popcorn-Time/backup/* /opt/Popcorn-Time; /opt/Popcorn-Time/Popcorn-Time"

但是 Popcorn-Time 无需等待我完成(正确)输入密码即可打开。如果可能的话,我想在没有单独脚本的情况下执行此操作。我该怎么做?

编辑:啊!我知道现在发生了什么,你们一直在帮助我让 Popcorn-Time 等待gksu完成,但是 Popcorn-Time 没有文件就无法运行backup,而且这些文件有点重(7 MB总计),因此他们需要一秒钟才能完成传输,然后在复制文件时 Popcorn-Time 已经打开。有没有办法等待 Popcorn-Time 等待cp命令完成?我还将上面的命令更改为现在的命令。

编辑#2:我现在所说的一切都不相关,因为爆米花时间的问题不是我想的那样,我不需要复制文件,我只需要以 root 身份运行它即可工作。感谢所有试图提供帮助的人。

谢谢。

4

3 回答 3

1

如果您希望/opt/popcorntime/Popcorn-time命令等到第一个命令完成,您可以将命令分开,&&以便第二个仅在第一个成功完成时执行。这称为复合命令。例如:

command1 && command2

gksu为了只使用一个密码输入运行多个命令,将需要:

gksu -- bash -c 'command1 && command2'

在你的情况下:

gnome-terminal -e gksu -- bash -c "cp /opt/popcorntime/backup/* /opt/popcorntime && /opt/popcorntime/Popcorn-Time"

(您可能需要调整报价以适应您的扩展需求)

您可以以类似的方式使用or运算符,以便第二个命令仅在第一个命令失败时执行。例如:

command1 || command2
于 2014-08-07T22:20:36.873 回答
1

在控制台中,您将执行以下操作:

gksu cp /opt/popcorntime/backup/* /opt/popcorntime; /opt/popcorntime/Popcorn-Time

为了Exec.desktop文件中使用它,像这样包装它:

bash -e "gksu cp /opt/popcorntime/backup/* /opt/popcorntime; /opt/popcorntime/Popcorn-Time"
于 2014-08-07T21:47:49.480 回答
0

问题是 gnome-terminal 仅将gksu命令视为-e参数的值,而不是Popcorn-Time命令。

gnome-terminal 立即分叉并返回,因此Popcorn-Time立即运行。

解决方案是引用整个命令字符串(两个命令),使它们(组合)成为-e.

于 2014-08-07T22:03:23.253 回答