web-dev-qa-db-ja.com

com.canonical.Unity.Panel systray-whitelistに新しいアイテムを追加するための1行のコマンド

これは、Unity通知パネルにアイテムを追加する方法よりも、コマンドラインの指示の質問を使用する方法の方が多いです。

Com.canonical.Unity.Panel systray-whitelistに新しいアイテムを追加するには、1行のCLIが必要です。

そのための標準的な手順は次のとおりです。

Sudo gsettings get com.canonical.Unity.Panel systray-whitelist

我々が得る

['JavaEmbeddedFrame', 'Wine', 'Skype']

次に、2番目のコマンドを実行します

Sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"

それは素晴らしいことですが、最初の行から結果をコピーして貼り付ける必要があり、私が書いているスクリプトの場合は、1つのコマンドで実行したいと思います。

これまでのところ、これは私が持っているものです:

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 set関数に正しくパイピングしているかどうかわかりません。第二に、gsettings get関数からの出力を正しく解析していると思いますが、sedを使用して変更結果の周りに ""を追加する方法がわからないため、この混乱に別のawkコマンドをパイプする必要がありました。

助けてくれる人に感謝します。

8
hansioux

エラーの後、エラーをヒットした後、引用符を受け入れなかった理由を最終的に把握しました。実際の変数を引用符で囲むだけで、実際のコマンドに引用符を入力する必要はありません。

これは動作します:

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

(また、これが機能するためには、例で 'in sed -e "s /'] $ /を削除する必要があります)。

後の編集:ところで、Sudoでgsettingsを実行しないでください...動作しません。

8
Alin Andrei