Comments 32
Альтернитивное решение:
find ./ -type f | ( i=0; while read line; do lines[i++]="$line"; done; mplayer "${lines[$RANDOM % $i]}" )
Не нужно модифицировать рандом под количество файлов и find'у можно дописать кучу условий выборки
find ./ -type f | ( i=0; while read line; do lines[i++]="$line"; done; mplayer "${lines[$RANDOM % $i]}" )
Не нужно модифицировать рандом под количество файлов и find'у можно дописать кучу условий выборки
Конструкция сплошь из башизмов и GNU-only вещей :)
$RANDOM нет в sh, он есть только в bash. Массивов в sh тоже нет, как нет и упрощенных арифметических операций — портабельный инкремент, например:
Предложенный оригинальным автором shuf — вообще GNU-only утилита. sort с аргументами типа -R (он же --random-sort) есть далеко не везде, *даже* если используется GNU sort.
Вообще есть хорошее обсуждение вопроса как выбрать случайный файл из набора на stackoverflow. По большому счету всё сводится к тому, что единственный действительно портабельный вариант — сделать это на awk.
$RANDOM нет в sh, он есть только в bash. Массивов в sh тоже нет, как нет и упрощенных арифметических операций — портабельный инкремент, например:
I=$(($I+1))
Предложенный оригинальным автором shuf — вообще GNU-only утилита. sort с аргументами типа -R (он же --random-sort) есть далеко не везде, *даже* если используется GNU sort.
Вообще есть хорошее обсуждение вопроса как выбрать случайный файл из набора на stackoverflow. По большому счету всё сводится к тому, что единственный действительно портабельный вариант — сделать это на awk.
JFYI, в современнейшем и популярнейшем Ubuntu, sh уже давно не bash, а dash. В не менее современнейшем Debian — собственно, тоже.
awk мне тоже не особенно нравится и иллюзий по поводу его портабельности я не питаю; реалистично — относительно портабельны полноценные скриптовые языки типа perl / python / ruby / php — примерно в порядке перечисления реалистично их встретить…
awk мне тоже не особенно нравится и иллюзий по поводу его портабельности я не питаю; реалистично — относительно портабельны полноценные скриптовые языки типа perl / python / ruby / php — примерно в порядке перечисления реалистично их встретить…
ну, при условии, что *.wav у автора свалены в текущую папку, то подойдет и что-то типа:
mplayer `/bin/ls -R1 | sort -R | head -n 1`
mplayer `/bin/ls -R1 | sort -R | head -n 1`
Всё-таки это 3 строчки. А то так в любой программе можно стереть все \n, если компилятор допускает строки какой угодно длины…
Как говорится, что не так с «шметтерлинг»? :)
echo import random,os;os.system('mplayer '+('one.wav','two.wav')[random.randint(0,1)]) | python -
echo import random,os;os.system('mplayer '+('one.wav','two.wav')[random.randint(0,1)]) | python -
mpg123 `ls -1 ./*.ogg | shuf | head -n1`
и не надо париться
и не надо париться
После прочтения остался только один вопрос: нафига?
Валдис Пельш…
Надо было F♭ и E тогда брать.
Не у всех идеальный слух ;)
Зачем? Обычный человек отличает по высоте (какой ниже, и какой выше) два тона с разницей менее 6 Гц. Многие отличают звуки и с меньшей разницей частоты. Поэтому отличить два полутона с помощь относительного слуха — не проблема.
Тут речь шла о совершенно другом — воспроизвести только одну ноту и определить, что это за нота. Вторую воспроизводить нет смысла — тогда сразу можно будет понять с помощью относительного слуха, если знаешь, что их там только две. Тут же воспроизводится только одна нота, и, чтобы определить, какая, нужно использовать абсолютный слух.
Тут речь шла о совершенно другом — воспроизвести только одну ноту и определить, что это за нота. Вторую воспроизводить нет смысла — тогда сразу можно будет понять с помощью относительного слуха, если знаешь, что их там только две. Тут же воспроизводится только одна нота, и, чтобы определить, какая, нужно использовать абсолютный слух.
Кстати, проверить, насколько близкие звуки ты отличаешь, можно с помощью теста Adaptive Pitch (требуется Flash).
надо было сыграть E# и F
проще выбирать бы было
проще выбирать бы было
А воспроизвести произвольный файл (по маске) из текущего и вложенных каталогов?
habrahabr.ru/blogs/linux/108223/#comment_3424415
А для подкаталогов, возможно, к ls добавить -R. Поправьте, если что)
PS Для случайной смены обоев:
cp `ls -1 ~/Изображения/Обои/*.jpg | shuf -n1` ~/Изображения/Обои/.RandomWallpaper.jpg
А для подкаталогов, возможно, к ls добавить -R. Поправьте, если что)
PS Для случайной смены обоев:
cp `ls -1 ~/Изображения/Обои/*.jpg | shuf -n1` ~/Изображения/Обои/.RandomWallpaper.jpg
mplayer *.mp3 -shuffle
Кстати, по комментариям очень хорошо можно выделить два совершенно разных стиля программирования — один стремится к «техническому совершенству» (то, что работает на наибольшем количестве платформ, либо по каким-то причинам кажется автору более технически правильным), а другой — к простоте, лёгкости восприятия человеком.
Если бы вы были на винде или маке я бы посоветовал EarMaster.
Sign up to leave a comment.
Воспроизведение случайного файла? Одна строчка на bash