Я пытаюсь загрузить ежедневное изображение и установить его как мое фоновое изображение с:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
rm -f ${PICS}/wall.jpg
rm -f ${PICS}/photo-of-the-day
# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day
# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`
# download the photo
wget http:$url -O ${PICS}/wall.jpg
# set the desktop background
URI=file:///${PICS}/wall.jpg
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri ${URI}
Загрузки изображения, столь же ожидаемые, но фон, на самом деле не установлены. Странно, это работает, если я изменяю URI для включения больше или меньшего количества наклонных черт вправо, но это делает так только однажды. Я заканчиваю тем, что имел необходимость изменить сценарий в том, что должно быть бессмысленным путем каждый раз, чтобы заставить этот раздел работать.
Что могло вызывать это?
Я думаю, что нашел проблему: Даже если я перехожу к файлу, щелкните правой кнопкой и скажите "Набор как Обои...", ничего не происходит. Таким образом, я постулировал, что это - факт, который имя файла не изменяет каждый раз; Linux имеет некоторое снижение расходов I'm-not-actually-going-to-refresh-because-that's-the-same-image функция. Чтобы вынудить систему распознать, это - новое изображение каждый раз, варьируйтесь имя файла как это:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
RAND=$RANDOM
rm -f ${PICS}/*.jpg
rm -f ${PICS}/photo-of-the-day
# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day
# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`
# download the photo
wget http:$url -O ${PICS}/wall${RAND}.jpg
# set the desktop background
URI="file://${PICS}/wall${RAND}.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
попробуйте его этот путь:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
rm -f "${PICS}/wall.jpg"
rm -f "${PICS}/photo-of-the-day"
# download photo-of-the-day page
wget "http://photography.nationalgeographic.com/photography/photo-of-the-day" -O "${PICS}/photo-of-the-day"
# parse the url out from the file
url="`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '\"' -f 2`"
# download the photo
wget "http:$url" -O "${PICS}/wall.jpg"
# set the desktop background
# only two slashes here, because the PICS var already has a leading slash
URI="file://${PICS}/wall.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
Можно или заключить полное в кавычки URI
переменная как cmks показала или гарантирует это file://
и wall.jpg
заключаются в кавычки, как так:
URI="file:///"${PICS}"/wall.jpg"
Вот маленькое улучшение Вашего сценария. Переменные используются для сокращения командной строки. Файл сохранен к /tmp
, который удален каждый раз, когда система перезапущена, таким образом, Вы не должны вручную очищать кэш. AWK используется для улучшения передачи по каналу парсинга и уменьшения. wget
непосредственно записи к AWK, чтобы не сохранить дополнительные файлы
#!/bin/bash
# set variables to shorten lines
FILE="/tmp/photo_of_the_day"
PAGE="http://photography.nationalgeographic.com/photography/photo-of-the-day"
SEARCH="images.nationalgeographic.com.*cache.*990x742.jpg"
# get image URI directly
IMAGE=$(wget "$PAGE" -O - -o /dev/null | awk -F'"' -v regex="$SEARCH" '$0~ regex {print $2}')
# download the photo
wget http:$IMAGE -O "$FILE"
# set the desktop background
URI="file:///$FILE"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"