it-swarm.com.de

Einzeiliger Befehl zum Hinzufügen neuer Elemente zur systray-whitelist von com.canonical.Unity.Panel

Dies ist eher eine Frage zur Verwendung der Befehlszeile als das Hinzufügen von Elementen zum Unity-Benachrichtigungsfeld.

Ich muss eine einzeilige CLI haben, um ein neues Element in die systray-whitelist von com.canonical.Unity.Panel aufzunehmen.

Die Standardprozedur dafü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']"

Obwohl das großartig ist, müssen die Leute das Ergebnis aus der ersten Zeile kopieren und einfügen, und für ein Skript, das ich schreibe, möchte ich es mit einem einzigen Befehl ausführen.

Soweit habe ich:

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 die Zeichenfolge korrekt in die Funktion gsettings set einspeise. Zweitens, während ich denke, dass ich die Ausgabe von gsettings get function korrekt analysiere, würde ich keinen Weg finden, das "" um das modifizierte Ergebnis mit sed zu addieren, also musste ich einen anderen awk-Befehl in dieses Durcheinander leiten.

Vielen Dank an alle, die helfen.

8
hansioux

Nachdem ich Fehler für Fehler getroffen habe, habe ich endlich herausgefunden, warum es die Anführungszeichen nicht akzeptiert hat. Sie können die Anführungszeichen einfach um die tatsächliche Variable platzieren, ohne sie in den tatsächlichen Befehl eingeben zu müssen.

Das wird funktionieren:

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

(Außerdem müssen Sie das 'in sed -e "s /'] $/in Ihrem Beispiel entfernen, damit dies funktioniert.).

Später bearbeiten: übrigens keine gsettings mit Sudo ausführen ... es wird nicht funktionieren.

8
Alin Andrei