shuf, Coreutils’de bulunan sort benzeri bir komut satırı yardımcı programıdır. Belirli bir girdiyi yaptığınız gibi sözde rastgele yapmak için kullanıldığını tahmin etmiş olabilirsiniz. Karıştır bir deste kart. Doğru tahmin ettiniz!
Burada, kendinizi bir shuf olmadan sıkışıp kalmış bulursanız, alternatiflerle birlikte shuf komutunu ele alacağız.
Shuf ile ilgili yardım nerede bulunur?
Shuf’un ne olduğunu öğrendikten sonraki adım, onu nasıl kullanacağını bilmektir. Çoğu komut satırı yardımcı programı gibi, shuf da –help uzun seçeneğiyle birlikte gelir.
Emretmek
# shuf — yardım
Kullanım: shuf [SEÇENEK]… [DOSYA]
veya: shuf -e[SEÇENEK]… [ARG]…
veya: shuf -ben selam [SEÇENEK]…
Giriş satırlarının standart çıktıya rastgele bir permütasyonunu yazın.
DOSYA yokken veya DOSYA – olduğunda, okuman standart giriş.
Uzun seçenekler için zorunlu argümanlar zorunludur için kısa seçenekler de.
-e, –echo her ARG’yi tedavi eder olarak bir giriş satırı
-ben, –giriş aralığı=LO-HI, LO ile HI arasındaki her sayıyı ele alır olarak bir giriş satırı
-n, –yoklama yapmak= En fazla COUNT satırda COUNT çıktı
-Ö, –çıktı=DOSYA yazmak standart çıktı yerine FILE sonucu
–rastgele kaynak=DOSYA, DOSYA’dan rastgele baytlar alır
-r, –repeat çıktı satırları tekrarlanabilir
-z, –sıfır sonlandırılmış satır sınırlayıcı NUL, yeni satır değil
–help bunu göster Yardım ve çıkış
–version çıktı sürümü bilgisi ve çıkış
Shuf’un Üç Yolu
Shuf komutunu kullanmanın üç yolu vardır:
- dosya karıştırma
- liste shuf
- menzil shuf
Her yolun avantajları vardır. Tüm yolların önceden bilinmesi, shuf komutuyla bağlantılı olarak diğer harici komutları kullanma ihtiyacını azaltabilir.
dosya karıştırma
Dosya shuf, shuf’un komut satırında kullanılmasının en yaygın yoludur. -e veya -i seçeneği seçeneklere dahil edilmediğinde, shuf, dosya shuf olarak çalışacaktır. Yani, karıştırılacak girdi, ister standart girdi isterse herhangi bir dosya olsun bir dosya olacaktır. Parametre listesindeki son kelime bir dosya adı olabilir. Bu parametrenin atlanması durumunda dosya, kabuktan veya borudan standart girdi olarak alınır. A – standart girdinin çıkarsandığı kuralı izlenerek dahil edilebilir.
Dosyayı shuf dosyasında belirtmenin kullanımını ve yollarını burada takip edin.
kullanım
Kullanım: shuf [SEÇENEK]… [DOSYA]
Dosya belirtmenin yolları
Dosyayı shuf kullanarak belirtmenin birden fazla yolu vardır. İşte her yol için örnek komutlar.
Standart girdi olarak örtük dosya
Bu şekilde dosyayı shuf komutunun argümanlarından çıkarırız. Konvansiyonu takiben, standart girdi olarak alınacak dosyayı belirtmek için dosya yerine bir – eklemeyi tercih edebilirsiniz.
Komutlar
Çıktı
Standart girdi olarak açık dosya
Komutlar
Çıktı
Notlar
(1) shuf’un sonuna – eklenmesi, bash betiklerinde okunabilirliği artıran görsel bir ipucu işlevi görür.
Dosya adı olarak dosya
Bu şekilde shuf komutunun argümanlarında dosya olarak bir dosya adı belirtmiş oluyoruz. Burada dosyaları kullanarak birkaç dosya shuf örneğini izleyin.
Terminalden giriş satırlarını karıştır
Komutlar
{
shuf /dev/fd/1
}
asdf
sdf
df
F
Ctrl-D
Çıktı
Notlar
(1) Yukarıdaki shuf komutu shuf /dev/fd/1 shuf ile eşdeğerdir –
(2) Giriş hatlarının Ctrl-D ile sonlandırılması gereklidir
Dosyadaki satırları karıştır
Komutlar
{
sıra3>dosya;
shuf dosya;
rm-Fdosya
}
Çıktı
liste shuf
Shuf’ın son yolu olarak, shuf komutuna aktarılan bir dosya veya girdi üzerinde işlem yaptık. Bu şekilde shuf için, shuf’u list shuf olarak çalışmaya zorlayarak -e seçeneğini kullanarak giriş satırlarının shuf komutunun argümanları olarak belirtilmesine izin veririz.
kullanım
Kullanım: shuf -e[SEÇENEK]… [ARG]…
Liste argümanlarını belirtmenin yolları
Girişi args olarak yazın
Komutlar
Çıktı
Notlar
(1) Yukarıdaki shuf komutu shuf -e 1 2 3, seq 3 | shuf –
args olarak değişken
Komutlar
{
var=“1 2 3”;
shuf -e${var}
}
<kuvvetli>Çıktıkuvvetli>
[ccdil=“bas”]
3
1
2
Args olarak parametre genişletme
Komutlar
Çıktı
Args olarak komut değiştirme
Komutlar
Çıktı
menzil shuf
Bu son yol, daha önce tanıtılan yollardan farklıdır. Komut satırında bir dosya veya argüman belirtmek yerine, bir dizi tamsayı gerektirir. -i seçeneği, shuf’u aralık shuf olarak çalışmaya zorlar.
Range shuf, rastgele sırada bir dizi tamsayı üretir.
kullanım
Kullanım: shuf -ben selam [SEÇENEK]…
Aralık belirtmenin yolları
Tek yol: LO-HI
Komutlar
Çıktı
Notlar
(1) shuf komutu shuf -i 1-3, 1 2 3 sırasını kullanan önceki tüm komutlara eşdeğerdir.
Gelişmiş shuf seçenekleri
İşte bash programlamada faydalı olabilecek bazı gelişmiş shuf seçenekleri.
Çıkış satırı sayısını sınırla
Çıktıdaki satır sayısını sınırlamak için -n seçeneğini ve ardından bir tamsayı kullanıyoruz.
Komutlar
Çıktı
Notlar
- shuf komutu shuf -i 1-3 -n 1, shuf -i 1-3 | kafa -1
Çıktı satırlarını yazmak için bir dosya belirtin
Çıktı satırlarını yazacak bir dosya belirtmek için -o seçeneğini ve ardından bir dosya adını aşağıdaki gibi kullanıyoruz.
Komutlar
{
shuf -ben1–3-n1-Ödosya;
kedidosya;
rm-Fdosya
}
Çıktı
Notlar
(1) shuf komutu shuf -i 1-3 -n 1 -o file, G/Ç yeniden yönlendirme kullanan shuf -i 1-3 -n 1 > file komutuna eşdeğerdir
Akış çıkış hatları
Sürekli bir çıktı satırı akışı oluşturmak için -r seçeneğini aşağıdaki gibi kullanırız.
Komutlar
{
shuf -e{0,1}-r|xargs-benEko-n“{}”
}
Çıktı
000101101010101101010110000101111010001010111001110…
Satır sınırlayıcı olarak yeni satır yerine sıfır baytı kullanın
Sıfır sonlu satırları kullanmak için -z seçeneğini aşağıdaki gibi kullanıyoruz.
Komutlar
{
sıra3|tr‘\n’‘\0’| shuf -z
}
Çıktı
Notlar
(1) Çıktı, rakamlar arasında yazdırılmayan sıfır bayt içeriyor
Bash’de kolay yoldan nasıl shuf yapılır
Shuf yapmanın kolay yolu, yukarıda tartışıldığı gibi shuf komutunu kullanmaktır. Ancak, diğer harici komutları veya hatta saf bash’ı kullanarak başka türlü nasıl shuf yapacağınızı biraz merak ediyorsanız, okumaya devam edin.
Zor yoldan nasıl atılır
Karıştırmanın zor yollarının bir listesini derledim. değiller merak etmeyin o zor. Sadece shuf komutunu kullanmazlar.
Sıralamayı kullanma
file shuf kullanmanın yaygın bir alternatifi, sort komutunu kullanmaktır. İşte nasıl:
Komutlar
Çıktı
Notlar
(1) shuf seq 3 | sort -r, shuf -i 1-3’e eşdeğerdir
(2) shuf -i 1-3 daha hızlıdır
gawk kullanma
file shuf kullanmanın başka bir alternatifi de gawk komutunu kullanmaktır. İşte nasıl:
Senaryo
gawk-shuf() {
gawk -v rastgele=${RANDOM} ‘
işlev randInt() {
dönüş int (rand()*1000)
}
function case_numeric_compare (i1, v1, i2, v2, l, r) {
l = int (v1)
r = int (v2)
eğer (l else if (l==r) 0 döndürür
yoksa 1 döndürür
}
BAŞLAMAK {
say=1
srand (rastgele)
}
{
rütbe[sayı]=randInt()
satır[sayı]=$(0)
say++
}
SON {
asorti (sıra, sıra, “case_numeric_compare”)
için (i=0;i< sayım; ben++) {
baskı satırı[sipariş[i]]
}
}
‘ –
}
eğer [ ${#} -eq 0 ]
Daha sonra
NS
Başka
1 # yanlış argümandan çık
fi
gawk-shuf
Kaynak: gawk-shuf.sh
Komutlar
{
sıra3|bash gawk-shuf.sh
}
Çıktı
Notlar
(1) Ayrıca awk kullanabilirsiniz
(2) gawk-shuf.sh komutların çalışma dizininde bulunmalıdır
saf bash
Senaryo
saf bash-shuf(){
yerel astar
yerel-a çizgiler
süreokuman-r astar
yapmak
çizgiler[RASTGELE]=${line}
tamamlamak
için astar içinde${satır[@]}
yapmak
Eko${line}
tamamlamak
}
Eğer[${#}-eq0]
Daha sonra
NS
Başka
çıkış1# yanlış argümanlar
fi
saf bash-shuf
Kaynak: saf-bash-shuf.sh
Komutlar
{
sıra3|bash saf-bash-shuf.sh
}
Çıktı
Notlar
- Yukarıdaki komut dosyası, RANDOM’un birden fazla meydana geldiği durumu ele almaz. Bu bir egzersiz olarak kaldı.
dJackblck17 Oyun
Shuf komutunu çalışırken göstermek amacıyla blackjack tabanlı Jackblck17 adlı bir kart oyunu başlangıcı hazırladım.
Senaryo
güverte(){
Eko{A,2,3,4,5,6,7,8,9,10,J, Q,K}–{kulüp, elmas, kalp, maça}
}
afiş(){
kedi<<
bbbbbbbb
jjjj bb lllllll kkkkkkkk 1111111 777777777777777777777
jj bb ll kk 11 77
jjjj bb ll kk 11 77
bb ll kk 1111 7777777777777
jjjjjj aaaaaaaaaaaaa ccccccccccccccbbbbbbbbbb ll
cccccccccccccccc kk kkkkkkk 11 77
jj aa cccbbb
ll ccc kk kk 11 77
jj aaaaaaaaaa ccbb ll
cc kk kk 11 77
jj aaccccccccbbbbbb ll
cccccccc kk kk 1l 77
jj aaaaaaaacc cccccccbb bb ll cc
ccccccc kkk 1l 77
jj aaacc bb bb ll cc kk
1l 77
jj aaaaaacc bb bb ll cc
kk 1l 77
jjaa aacc cccccccbb bb ll cc
ccccccc kkk 1l 77
jjaa aaccccccccbbbbbbbbllc
ccccccckk kk 111111 77
jjaaaaaa ccbb ll
cckk kk 11 77
jj aaaa cccbb
ll ccckk kk 11 77
jj aaaaaaaaaa aaaa ccccccccccccccbbbbbbbbbbbbbbbb
llllllll cccccccccccccckkkkkkkk kkkkkkkk111111111111777777777
jj
jjjj jj
jj jj
jjjj
jj
jjjjjj
jjjjjj
EOF
}
Puan(){
dava${1}içinde
A)Eko0;;
[2–9]|10)Eko${1};;
J|Q|K)Eko10;;
esac
}
skor eli(){
yerel kart
yerel puan
yerel-ben aday_puanları
yerel-ben aslar
aslar=0
için kart içinde${el}
yapmak
İzin Vermek puan+=$( Puan ${kart/-*/})
Ölçek!“${kart/-*/}“ = “A”||{
İzin Vermek as+=1
}
tamamlamak
Ölçek!${as}-le0||{
Eko${puan}
}
süre[${as}-gt0]
yapmak
için nokta içinde${puan}
yapmak
new_point=“”
için as içinde111
yapmak
aday_puanları=$(( nokta + as ))
Ölçek!${candidate_points}-le21||{
Eko“${candidate_points}“
new_points=“${new_points}${candidate_points}“
}
tamamlamak
tamamlamak
İzin Vermek as-=1
puan=“${new_points}“
tamamlamak|çeşit-nur|kafa-1
}
jackblck17(){
yerel güverte
yerel kart
yerel-ben dönüş
yerel el
güverte=$( shuf -e $( güverte ))
afiş
Eko-e“Devam etmek için enter tuşuna basın”
okuman
dönüş=1
için kart içinde${güverte}
yapmak
Ölçek!${dönüş}-gt2||{
Eko-e“\nvurmak mı kalmak mı? (h) veya s “
okuman
Ölçek!“${CEVAP}“ = “s”||{
kırmak
}
}
Eko-e“\n Senin elin: \n“
el=“${el}${kart}“
Eko” ${el}“
Ölçek! $( skor eli )-gt21||{
Eko-e“\nBaskın yapmak!\n“
çıkış
}
İzin Vermek dönüş++
uyumak1
tamamlamak
Eko-e“Bayi eli: 17\n“
Eko-e“Senin elin: $( puan-el )\n“
Ölçek! $( skor eli )-gt17&&{
Eko-e“Satıcı kazanır\n“
NS
}||{
Eko-e“Sen kazandın!\n“
}
}
Eğer[${#}-eq0]
Daha sonra
NS
Başka
çıkış1# yanlış argümanlar
fi
jackblck17
Kaynak: jackblck17.sh
Komutlar
Çıktı
bbbbbbbb
jjjj bb llllll kkkkkkkk 111111177777777777777777777
jj bb ll kk 1177
jjjj bb ll kk 1177
bb ll kk 11117777777777777
jjjjjj aaaaaaaaaaaaa ccccccccccccccbbbbbbbbbb ll
cccccccccccccccc kk kkkkkkk 1177
jj aa cccbbb ll
ccc kk kk 1177
jj aaaaaaaaaa ccbb ll
cc kk kk 1177
jj aaccccccccbbbbbb ll
cccccccc kk kk 1ben 77
jj aaaaaaaacc cccccccbb bb ll
cc ccccccc kkk 1ben 77
jj aaacc bb bb ll
cc kk 1ben 77
jj aaaaaacc bb bb ll
cc kk 1ben 77
jjaa aacc cccccccbb bb ll
cc ccccccc kkk 1ben 77
jjaa aaccccccccbbbbbbbbllc
ccccccck kk 11111177
jjaaaaaa ccbb ll
ckk kk 1177
jj aaaa cccbb ll
ccck kk 1177
jj aaaaaaaaaa aaaa ccccccccccccccbbbbbbbbbbbbbbbb
llllllll cccccccccccccckkkkkkkk kkkkkkkk111111111111777777777
jj
jjjj jj
jj jj
jjjj
jj
jjjjjj
jjjjjj
Devam etmek için enter tuşuna basın
Senin elin:
3-kalp
Senin elin:
3 kalp 4 maça
vurmak mı kalmak mı? (h) veya (ler)
Senin elin:
3 kalp 4 maça 9 kalp
vurmak mı kalmak mı? (h) veya s
s
Satıcının eli: 17
eliniz: 16
Bayi kazanır
Bash’de shuf’un alt satırı
Bu eğitimde, shuf komutu hakkında bilmeniz gereken her şeyi ve daha fazlasını ele aldık. Artık işleri zor yoldan yapmak zorunda kalmayacaksınız, artık shufunuz var.
Dürüst olmak gerekirse, bunu yazmadan önce, herhangi bir girdinin sırasını rastgele ayarlamak için kullanılabilecek shuf adında bir komut olduğunu çok az biliyordum. Bash programlama için shuf komutuna derin bir dalış yaptıktan sonra, Dürüstçe söyleyebilirim ki buna değdi; shuf düşündüğümden daha faydalı.
Umarım bunu okumaktan zevk aldığım kadar zevk alırsınız ve kariyerinizde veya ödevinizde size yardımcı olur. Eğer öyleyse, bana haber ver.
Teşekkürler,
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın