我试图拥有一个执行一个命令的桌面快捷方式(没有脚本,我只是想知道这是否可行)。该命令需要root权限,所以我在Ubuntu中使用gksu
,在我完成输入密码后它是正确的我想让另一个命令运行一个文件。我有这个命令:
xterm -e "gksu cp /opt/Popcorn-Time/backup/* /opt/Popcorn-Time; /opt/Popcorn-Time/Popcorn-Time"
但爆米花时间打开没有它等我完成输入密码(正确)。如果可能的话,我想在没有单独脚本的情况下这样做。 我该怎么做?
编辑:啊!我看到现在发生了什么,你们一直在帮助我让Popcorn-Time等待gksu
完成,但是爆米花时间不会在没有backup
的情况下运行{1}},那些有点重(总共7 MB),所以它们需要一秒钟才能完成传输,然后在文件复制时Popcorn-Time已经打开。有没有办法等待Popcorn-Time等待cp
命令完成?
我也将上面的命令改为现在的状态。
编辑#2:我现在说的所有内容都不相关,因为Popcorn-Time的问题不是我想的,我不需要复制文件,我只是需要以root身份运行它才能工作。感谢所有试图提供帮助的人。
感谢。
答案 0 :(得分: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"
答案 1 :(得分:1)
如果希望/opt/popcorntime/Popcorn-time
命令等到第一个命令完成,则可以将命令分隔&&
,以便第二个命令仅在成功完成第一个命令时执行。这称为复合命令。 E.g:
command1 && command2
使用gksu
以仅使用单个密码条目运行多个命令,您将需要:
gksu -- bash -c 'command1 && command2'
在你的情况下:
gnome-terminal -e gksu -- bash -c "cp /opt/popcorntime/backup/* /opt/popcorntime && /opt/popcorntime/Popcorn-Time"
(您可能需要调整报价以满足您的扩展需求)
您可以以类似的方式使用或运算符,以便第二个命令仅在第一个命令失败时执行。 E.g:
command1 || command2
答案 2 :(得分:0)
问题是gnome-terminal只看到gksu
命令作为-e
参数的值而不是Popcorn-Time
命令。
gnome-terminal forks立即返回,因此Popcorn-Time
立即运行。
解决方案是引用整个命令字符串(两个命令),使它们(组合)单个参数-e
。