اسکریپت پخش تصادفی فایلهای تصویری
من آدم تنبلیم، خیلی تنبل. دوباره تنبلی باعث شد که یکی از کارهای تکراری که زحمت زیادی نداشت رو بصورت کامل بیزحمتش(اتوماتیک) کنم.
سناریو : من یه پوشه دارم که یه سری کلیپ تصویری توشه و روزی یکی دوبار کلیپهایی که دوست دارم رو تماشا میکنم. چون دوست دارم یکی دو تا کلیپ رندوم ببینم کاری که تا به امروز میکردم این بود که همشون رو توی smplayer ایمپورت میکردم و لیست رو بصورت تصادفی پخش میکردم.
سولوشن : کار خیلی سادست اول باید تعداد فایلها رو بگیریم، خب میشه یه ls گرفت و خروجیش رو پایپ کرد به wc
/r/m/a/S/M/Show » ls -l | wc -l
93
خب تا الان فهمیدیم ۹۳ تا فایل داریم. قدم بعدی تولید اعداد تصادفیه. تابع RANDOM بش برای همین کار نوشته شده.
/r/m/a/S/M/Show » echo $RANDOM
613
/r/m/a/S/M/Show » echo $RANDOM
28332
/r/m/a/S/M/Show » echo $RANDOM
17461
اینطوری میشه بهش گفت یه عدد تا قبل از ۹۳ بده
($RANDOM%93)+1
فقط یه حلقهی تکرار میمونه که اونم کاری نداره. باید یه ایندکس بذاریم و تا مساوی عدد اتفاقیمون شد اسم فایل رو بگیریم.
این هم اسکریپت:
#!/usr/bin/bash cd ~/Videos listcount=$(ls -l | wc -l) # تعداد فایلهای دایرکتوری filecount=$((listcount-1)) # تولید عدد تصادفی i=$((($RANDOM%filecount)+1)) index=0 for file in * do index=$(($index + 1)) if [[ ("$index" == "$i") ]]; then filename=$file fi done # دستور شما برای باز کردن فایل mplayer $filename
من توی دستور آخر از mplayer استفاده کردم. شما میتونید با تغییر این خط با انواع فایلها مثل موسیقی و متنی و غیره هم کار کنید.
ساده بود ولی جالب. الان توی ترمینال مینویسم playShow و تمام :) . فقط اگه توی اسم فایلهاتون فاصله باشه دیگه کار نمیکنه که خودتون درستش کنید. تمام اسامی فایلهای من بدون فاصله هستند پس نیازی نبود.