Ini lebih merupakan cara menggunakan pertanyaan instruksi baris perintah lebih dari bagaimana menambahkan item ke panel notifikasi Unity.
Saya harus memiliki CLI satu baris untuk menambahkan item baru ke com.canonical.Unity.Panel systray-whitelist.
Prosedur standar untuk melakukannya adalah:
sudo gsettings get com.canonical.Unity.Panel systray-whitelist
Kita mendapatkan
['JavaEmbeddedFrame', 'Wine', 'Skype']
Lalu kita lakukan perintah kedua
sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Meskipun hebat dan semuanya, itu mengharuskan orang untuk menyalin dan menempelkan hasil dari baris pertama, dan untuk skrip yang saya tulis saya ingin melakukannya dalam satu perintah.
Sejauh ini yang saya miliki:
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 "\""}'
Saya pikir saya kehilangan sesuatu.
Pertama, saya tidak yakin apakah saya memipet string ke gsettings mengatur fungsi dengan benar. Kedua, sementara saya pikir saya mem-parsing output dari gsettings mendapatkan fungsi dengan benar, saya tidak akan menemukan cara untuk menambahkan "" di sekitar hasil modifikasi menggunakan sed, jadi saya harus menyalurkan perintah awk lain ke dalam kekacauan ini.
Terima kasih kepada siapa pun yang membantu.
sumber
Jawaban:
Setelah memukul kesalahan demi kesalahan, saya akhirnya tahu mengapa tidak menerima tanda kutip. Anda cukup menempatkan tanda kutip di sekitar variabel aktual, tidak perlu memasukkannya dalam perintah aktual.
Ini akan berhasil:
(Juga, Anda perlu menghapus 'in sed -e "s /'] $ / dalam contoh Anda agar ini berfungsi).
Sunting nanti: omong-omong, jangan jalankan gsettings dengan sudo ... itu tidak akan berfungsi.
sumber