Esta es más una pregunta sobre cómo usar la instrucción de línea de comandos que cómo agregar elementos al panel de notificaciones de Unity.
Tengo que tener una CLI de una línea para agregar un nuevo elemento a com.canonical.Unity.Panel systray-whitelist.
El procedimiento estándar para hacerlo es:
sudo gsettings get com.canonical.Unity.Panel systray-whitelist
Obtenemos
['JavaEmbeddedFrame', 'Wine', 'Skype']
Luego hacemos el segundo comando
sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Si bien eso es excelente, requiere que la gente copie y pegue el resultado desde la primera línea, y para un script que estoy escribiendo, quiero hacerlo en un solo comando.
Hasta ahora esto es lo que tengo:
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 "\""}'
Creo que me estoy perdiendo algo.
En primer lugar, no estoy seguro de si estoy canalizando la cadena en la función de conjunto de ajustes correctamente. En segundo lugar, aunque creo que estoy analizando la salida de gsettings get function correctamente, no encontraría una manera de agregar el "" alrededor del resultado modificado usando sed, así que tuve que canalizar otro comando awk en este lío.
Gracias a todos los que ayudan.
fuente
Respuestas:
Después de presionar error tras error, finalmente me di cuenta de por qué no aceptaba las comillas. Simplemente puede colocar las comillas alrededor de la variable real, sin necesidad de ingresarlas en el comando real.
Esto funcionará:
(Además, debe eliminar 'in sed -e "s /'] $ / en su ejemplo para que esto funcione).
Edición posterior: por cierto, no ejecute gsettings con sudo ... no funcionará.
fuente