Видео смотреть бесплатно

Смотреть русское с разговорами видео

Официальный сайт maxceiling 24/7/365

Смотреть видео бесплатно

stogerc 03.07.2010 22:49

СкриптыВыбираем случайную обоину на рабочий стол

1
feh --bg-center `ls ~/wallpapers*.jpg |sed -n "$(expr $<random> + 1)p"`</random>


Рассмотрим работу этого однострочника, может кому-нибудь, например новичкам, пригодится.

1) Считаем количество обоин, для этого используем программу wc с параметром -l которая подсчитает количество строк вывода команды ls ~/wallpapers/*.jpg
1
ls ~/wallpapers/*.jpg | wc -l



2) Генерируем случайное число так, чтобы это число не превышало количество файлов обоин в папке.
1
$<random></random>



3) Но RANDOM генерирует числа начиная с нуля, и не затрагивает максимальное число, то есть номер последней обоины, поэтому прибавляем к получившемуся сгенерированному числу еденичку.
1
expr $<random> + 1</random>



4) Из вывода ls ~/wallpapers*.jpg берём строку под случайным номером, который только что сгенерировали, эта строка будет содержать путь к файлу обоины.
1
ls ~/wallpapers*.jpg |sed -n "$(expr $<random> + 1)p"</random>



5) Осталось только передать путь какой-нибудь программе, в данном случае это feh и установить обоину на рабочий стол.
1
feh --bg-center `ls ~/wallpapers*.jpg |sed -n "$(expr $<random> + 1)p"`</random>



Теперь можно поставить эту команду на хоткей или добавить в crontab и не нужно устанавливать какие-то специальные утилиты, если вы хотите видеть каждый день что-нибудь новое на своём рабочем столе ;)

Update

Товарищ muhas предложил более простой вариант. Краснею и прилагаю более Ъ версию однострочника:
я конечно извиняюсь за занудство, но
зачем два раза вызвать ls, можно же всё сделать намного проще и короче и даже не вызывая sed
1
feh --bg-center `ls  ~/wallpapers*.jpg | sort -R  |head -n 1`


а тепперь по пунктам.
sort -R
параметр -R обеспечивает рандомную сортировку
head -n 1
выводим шапку из одной строки (можно и tail -n 1, т.е. одну строку снизу или sed'ом awk'ом обрабатывать строки - но тут не принципиально ибо всё-равно рандомная сортировка)
собственно весь вывод ls (sort и head) можно обработать одной командой awk но это для гурманов, ибо авк язык не простой - но мощьный(я сам осилил меньше минимума, честно)...

херь взятая в кавычки ` означает что вместо этого подставлять результат выполнения команды а не саму команду (аналог $(команда))
параметр для feh означает центрирование картинки, есть ещё --bg-scale для растягивания и прочие...

Да, Я Зануда, но команда из поста мне показалась огромной и нерациональной...


Тэги: bash wallpaper
+ 11 -
Похожие Поделиться

gwk 03.07.2010 23:19 #
+ 1 -
а по названию подумалось, что это генератор картинок, которые потом лягут на стол
exelens 03.07.2010 23:25 #
+ 0 -
Поменял заголовок
gwk 03.07.2010 23:31 #
+ 0 -
и спасибо
даже со старым заголовком
exelens 03.07.2010 23:36 #
+ 0 -
новое на своём рабочем столе ;)

Почему новое? Если оно из папки?
NutipA 03.07.2010 23:41 #
+ 0 -
Я думаю, что очень полезно иногда вот так по пунктам лаконично давать пояснения подобным однострочникам. Новичкам само собой, но и более опытным людям, чтобы быстрее вникнуть в суть кода среди сотен других новостей. Спасибо автору.
muhas 04.07.2010 00:13 #
+ 10 -
я конечно извиняюсь за занудство, но
зачем два раза вызвать ls, можно же всё сделать намного и даже не вызывая sed
feh --bg-center `ls ~/wallpapers*.jpg | sort -R |head -n 1`
а тепперь по пунктам.
sort -R это в сишной локале рандомно сортируем =) (параметр -R это и есть рандомная сортировка, для эстетов LANG=C можно добавить, а то мало ли в вашей локали херово sort работает(но я такого не замечал ни с одной локалью))
head -n 1выводим шапку из одной строки (можно и tail -n 1, т.е. одну строку снизу или sed'ом awk'ом обрабатывать строки - но тут не принципиально ибо всё-равно рандомная сортировка)
собственно весь вывод ls (sort и head) можно обработать одной командой awk но это для гурманов, ибо авк язык не простой - но мощьный(я сам осилил меньше минимума, честно)...

херь взятая в кавычки ` означает что вместо этого подставлять результат выполнения команды а не саму команду (аналог $(команда))
параметр для feh означает центрирование картинки, есть ещё --bg-scale для растягивания и прочие...

Да, Я Зануда, но команда из поста мне показалась огромной и нерациональной...
muhas 04.07.2010 00:14 #
+ 0 -
можно же всё сделать намного и даже не вызывая sed
можно же всё сделать намного проще и короче и даже не вызывая sed /fixed, а то что-то писал и не дописал моменты...
stogerc 04.07.2010 00:31 #
+ 0 -
Ох, спасибо, добавлю ка ваш вариант в пост, я сам немного новичок просто...
muhas 04.07.2010 00:38 #
+ 0 -
всегда пожалуйста(только пофикси плз, а то я в своем комменте указал лишку по поводу локали в sort -R (запускаю без локали) - я не люблю в себе зануду, но всё же он иногда выходит наружу =)
stogerc 04.07.2010 00:46 #
+ 0 -
Мне бы в себе найти такого зануду, который столько знает =)
muhas 04.07.2010 15:32 #
+ 0 -
найдется когда тебе таких зануд как я будет много попадатся, у меня ведь именно из-за таких и родился во мне зануда =)
тоже причитали что cat file |more это тоже самое что и more file и тому подобное - теперь на смену некоторым из них пришел и мой зануда =)
le087 04.07.2010 08:17 #
+ -1 -
/me удивлен =)
muhas 04.07.2010 15:32 #
+ 1 -
чему?
le087 04.07.2010 17:50 #
+ -1 -
такому простому способу
lemming 04.07.2010 02:53 #
+ 0 -
Чтобы сменить обоину в гноме:
gconftool-2 -t string -s /desktop/gnome/background/picture_filename <путь к файлу изображения>
Minoru 07.07.2010 20:03 #
+ 0 -
/* К теме подключается ещё один зануда, который, к тому же, слоупок. */

В ArchWiki есть замечательная конструкция, которая делает то же самое:find $HOME/.wallpaper -type f -name '*.jpg' -o -name '*.png' | shuf -n 1 | xargs feh --bg-scale
Это можно переписать и вот так:feh --bg-scale "`find $HOME/.wallpaper -type f -name '*.jpg' -o -name '*.png' | shuf -n 1`"
Няшки:
  • shuf входит в coreutils, а значит, есть на любой системе; он успешно заменяет конструкцию sort -R | head -1
  • благодаря использованию find в качестве обоины могут быть заюзаны не только те изображения, которые лежат непосредственно в ~/.wallpaper, но и в любой поддиректории этого каталога
  • опять-таки благодаря find мы можем использовать обои в любом формате — достаточно дописать после "-name '*.png'" строку "-o -name '*.расширение'". С ls такое провернуть сложнее (если только вы не выполняете однострочник в ZSH — там такие конструкции можно легко записать в виде *.(jpg|png|расширение))

А вообще я некоторое время игрался вышеприведённым однострочником, но бросил: банально надоело. Сейчас опять меняю обои вручную, примерно раз в пару месяцев — и нормально. Но это, конечно же, дело вкуса…

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн