コマンド結果のフィルタリング

コマンド結果のフィルタリング

プログラム内で次のコマンドを実行すると、小さなプログラムを書くのに問題があります。

gsettings get org.gnome.desktop.background picture-uri

私は得る:

'file:///home/thamara/.config/variety/Favorites/wallpaper-2448037.jpg'

しかし、これは次のようになります。

/home/thamara/.config/variety/Favorites/wallpaper-2448037.jpg

それ以外の場合、プログラムは実行されません。誰でも私を助けることができますか?

プログラム:

#!/bin/bash
## Blogry for GDM - Blurs your current wallpaper and puts it on your loginscreen

## Some Settings
effect='0x8' # Change this to anything you like http://www.imagemagick.org/Usage/blur/
save='~/Pictures/blur.jpg'

## Step one -  getting the current wallpaper
dir=$(gsettings get org.gnome.desktop.background picture-uri)

## Step two - Blurring the wallpaper
convert $dir -blur $effect -blur $effect -blur $effect $save

## Step three - exit (Since GDM automatically loads the new wallpaper there is no need for seting it.)
exit 0

## Links:
# http://www.imagemagick.org/Usage/blur/

ベストアンサー1

コマンドの出力がgsettings一致します。GVariant テキスト構文。このパラメータはひも、一重引用符で印刷します。

引用符を削除する必要があります。

dir_uri=$(gsettings get org.gnome.desktop.background picture-uri |
          sed "s/^'//; s/'\$//; s/\\\\\\(.\\)/\\1/")

これによりURIが得られます。ファイル名に特殊文字が含まれていない場合は、先頭file://file:)のみを削除してください。

dir=$(gsettings get org.gnome.desktop.background picture-uri |
      sed "s~^'file://~~; s~'\$~~")

おすすめ記事