用于将新项目添加到com.canonical.Unity.Panel systray-whitelist的一行命令


8

与如何在Unity通知面板中添加项目相比,这更多的是关于如何使用命令行指令的问题。

我必须有一个命令行CLI才能将新项目添加到com.canonical.Unity.Panel systray-whitelist。

这样做的标准过程是:

sudo gsettings get com.canonical.Unity.Panel systray-whitelist

我们得到

['JavaEmbeddedFrame', 'Wine', 'Skype']

然后我们执行第二个命令

sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"

尽管那很棒,但它需要人们从第一行复制并粘贴结果,对于我正在编写的脚本,我想用一个命令来完成。

到目前为止,这就是我所拥有的:

sudo gsettings set com.canonical.Unity.Panel systray-whitelist | gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/']$/,'shutter']/" | awk 'NF{print "\"" $0 "\""}'

我想我缺少了一些东西。

首先,我不确定是否将字符串正确地传递到gsettings set函数中。其次,虽然我认为我正确地解析了gsettings get函数的输出,但是我不会想出一种方法来使用sed在修改后的结果周围添加“”,因此我不得不将另一个awk命令通过管道传递到此混乱中。

感谢任何有帮助的人。


有人在Ubuntu 12.04上测试过吗?它对我不起作用(它在以前的版本中
起作用

gsettings设置com.canonical.Unity.Panel systray-whitelist“ $(gsettings获取com.canonical.Unity.Panel systray-whitelist | sed” s /,*'yourapp'* // g“ | sed” s /'yourapp' *,* // g“ | sed -e” s /] $ /,'yourapp'] /“)”试试这个,用您需要的替换您的app。
hansioux 2012年

Answers:


8

在一次又一次地遇到错误之后,我终于弄清楚了为什么它不接受引号。您只需将引号放在实际变量周围,而无需在实际命令中输入引号。

这将起作用:

gsettings set com.canonical.Unity.Panel systray-whitelist "$(gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/]$/, 'shutter']/")"

(此外,您需要在示例中删除sed -e“ s /'] $ /中的'才能起作用)。

以后编辑:顺便说一句,不要用sudo运行gsettings ...这是行不通的。


我想出了这条新线。这将删除所有可能是白名单的先前条目,并在末尾再次添加。这是用于安装脚本的。这是蛮力的,但是行得通。gsettings设置com.canonical.Unity.Panel systray-whitelist“ $(gsettings获取com.canonical.Unity.Panel systray-whitelist | sed” s /,*'yourapp'* // g“ | sed” s /'yourapp' *,* // g“ | sed -e” s /] $ /,'yourapp'] /“)”
hansioux 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.