Bash script ile rastgele kelime getirme

Başlatan weysel, 13 Nisan 2020 - 21:30:28

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

weysel

Merhaba,

Malumunuz evde can sıkıntısı yaşıyoruz bu sıralar bol bol. Otururken aklıma geldi internette bakındım biraz ama bir şey bulamadım veya buldu isemde anlayamadım.

Diğer dillerde olduğu gibi bash ile de böyle bir şey yapmak mümkün mü?

veri1= veri içeriği
veri2= veri içeriği
veri3= veri içeriği
......
...
..
.



uzunca bir liste oluşturup
veriver
yazdığımda her seferinde bunlardan birisini  rastgele  seçerek ekrana nasıl yazdırabilirim? Yazdırabilir miyim?


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 13 Nisan 2020 - 22:05:55

Kendi soruma kendim cevap vereyim. Buldum ve yaptım.

Öncelikle bin klasöründe film.data oluşturarak içerisine satır satır film isimlerini yazdım. Kaydettim gerekli izinleri verdim.
Daha sonra film adında bask komut dizisi oluşturdum ve


shuf -n 1 ../bin/film.data


komutunu ekledim. Gerekli izinleri verip kaydettim.

Artık hangi filmi izlemeye karar veremediğim zaman benim yerime seçecek bir mini uygulamam var.

Film örnekti, kendinize göre türevleri çoğaltılabilir tabi.

mhmtkrktr

Veri, betiğin içinde tutulacaksa da benzer bir örneği şöyle olabilir.
data=(
Ubuntu
Debian
Mint
Fedora
Ret-Hat
Centos
Fedora
Opensuse
Elementary
Deepin
Arch
Manjaro
Archman
Pardus
Pisi
  )

# veya
# data=("$(grep -i '[a-z]' film.data)")

random_count=$(shuf -i 0-${#data[*]} -n 1)
echo "${data[$random_count]}"

7hr33l3t73r

$ sort -R FileName | head -n1

$ perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' <FileName |head -1

$ python -c 'import sys, random, fileinput; from signal import signal, SIGPIPE, SIG_DFL; signal(SIGPIPE, SIG_DFL); lines=[line for line in fileinput.input()]; random.shuffle(lines); sys.stdout.write("".join(lines))
' "FileName" | head -1

$ ruby -e 'Signal.trap("SIGPIPE", "SYSTEM_DEFAULT");puts ARGF.readlines.shuffle' "FileName"|head -1


Daha da genisletilebilir! :)
ASM,C,C++,Go,Rust...*.!
Komutlarda kullanilabilir!  awk... vs...
Kaynak: google
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html