Dies ist eher eine Frage zur Verwendung von Befehlszeilenanweisungen als zum Hinzufügen von Elementen zum Unity-Benachrichtigungsfeld.
Ich muss eine einzeilige CLI haben, um ein neues Element zur com.canonical.Unity.Panel-Systray-Whitelist hinzuzufügen.
Das Standardverfahren hierfür ist:
sudo gsettings get com.canonical.Unity.Panel systray-whitelist
Wir bekommen
['JavaEmbeddedFrame', 'Wine', 'Skype']
Dann machen wir den zweiten Befehl
sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Das ist zwar großartig und alles, aber die Leute müssen das Ergebnis aus der ersten Zeile kopieren und einfügen, und für ein Skript, das ich schreibe, möchte ich es in einem Befehl tun.
Bisher habe ich Folgendes:
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 "\""}'
Ich glaube mir fehlt etwas.
Erstens bin ich mir nicht sicher, ob ich den String korrekt in die Funktion gsettings set weitergebe. Zweitens, während ich denke, dass ich die Ausgabe von gsettings get function richtig analysiere, würde ich keine Möglichkeit finden, das "" um das modifizierte Ergebnis mit sed hinzuzufügen, also musste ich einen weiteren awk-Befehl in dieses Chaos leiten.
Vielen Dank an alle, die helfen.
quelle
Antworten:
Nachdem ich Fehler für Fehler getroffen hatte, stellte ich schließlich fest, warum die Anführungszeichen nicht akzeptiert wurden. Sie können die Anführungszeichen einfach um die tatsächliche Variable setzen, ohne sie in den tatsächlichen Befehl eingeben zu müssen.
Das wird funktionieren:
(Außerdem müssen Sie in Ihrem Beispiel das 'in sed -e "s /'] $ / entfernen, damit dies funktioniert.)
Später bearbeiten: Übrigens, gsettings nicht mit sudo ausführen ... es wird nicht funktionieren.
quelle