一行命令用于将新项目添加到 com.canonical.Unity.Panel 系统托盘白名单

一行命令用于将新项目添加到 com.canonical.Unity.Panel 系统托盘白名单

这更多的是一个如何使用命令行指令的问题,而不是如何向 Unity 通知面板添加项目的问题。

我必须有一个一行 CLI 来将新项目添加到 com.canonical.Unity.Panel 系统托盘白名单中。

这样做的标准程序是:

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 设置函数中。其次,虽然我认为我正确地解析了 gsettings 获取函数的输出,但我无法找到使用 sed 在修改后的结果周围添加“ ”的方法,所以我不得不将另一个 awk 命令导入到这个混乱的结果中。

感谢所有提供帮助的人。

答案1

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

这将起作用:

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……它不起作用。

相关内容