Apa gunanya perintah “ya”?


39

Ada yesperintah di unix / linux yang pada dasarnya mencetak tanpa batas yke stdout. Apa gunanya, dan bagaimana ini berguna?


Beberapa kemungkinan tambahan di sini .

1
kemungkinan duplikat Apa gunanya perintah `ya`? ... (Menandai ini sebagai duplikat karena pertanyaan baru lainnya lebih baik ditanyakan dan lebih baik dijawab).
Aditya


Jawaban:


41

ya dapat digunakan untuk mengirim respons afirmatif (atau negatif; mis. ya n) ke perintah apa pun yang sebaliknya akan memintanya, sehingga menyebabkan perintah berjalan secara non-interaktif.

Perintah yes dalam hubungannya dengan perintah kepala dapat digunakan untuk menghasilkan file volume besar untuk sarana pengujian.

Itu juga dapat digunakan untuk menguji seberapa baik suatu sistem menangani beban tinggi, seperti menggunakan ya menghasilkan penggunaan prosesor 100%, untuk sistem dengan prosesor tunggal (untuk sistem multiprosesor, suatu proses harus dijalankan untuk setiap prosesor). Ini, misalnya, dapat berguna untuk menyelidiki apakah sistem pendinginan suatu sistem akan efektif ketika prosesor berjalan pada 100%.

Pada tahun 2006, perintah yes menerima publisitas sebagai alat untuk menguji apakah MacBook pengguna dipengaruhi oleh Sindrom Shutdown Berselang atau tidak. Dengan menjalankan perintah yes dua kali melalui Terminal di bawah Mac OS X, pengguna dapat memaksimalkan CPU komputer mereka, dan dengan demikian melihat apakah kegagalan itu terkait panas.

via wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)


9
Untuk kerusakan tambahan, cobayes `yes yes`
sendmoreinfo

3
@sendmoreinfo Evil
Tobias Kienzler

ohh, itu tes stres yang bagus. hanya mencobanya, lalu berlari ke kolega saya meminta vm xD baru
Toastgeraet

17

Ini mungkin pendapat yang kontroversial, tetapi dalam pandangan saya ini adalah perbaikan yang buruk untuk antarmuka pengguna yang buruk dalam alat baris perintah .

Beberapa alat baris perintah mengajukan pertanyaan kepada pengguna dengan prompt dan tidak memiliki opsi untuk menjalankan non-interaktif; bayangkan misalnya sesuatu seperti

$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...

Karena jawaban untuk pertanyaan diambil dari input standar, perbaikan cepat untuk masalah ini adalah memiliki aplikasi yang mengeluarkan string secara y\nterus-menerus, dan itulah yang sebenarnya yesdilakukan. Pipa Unix dapat digunakan untuk mengirim output ini sebagai input ke perintah yang diberikan.

$ yes | frobnicate

Salah satu masalah dengan pendekatan ini adalah yestidak memiliki kemungkinan untuk memeriksa pertanyaan yang dijawabnya:

frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y

Solusi yang lebih baik, ketika tersedia, adalah opsi spesifik untuk menjalankan non-interaktif, seperti rm -fatau apt-get -y. Ini memungkinkan pengkodean perilaku yang lebih masuk akal dalam aplikasi.


1
Saya membaca semua jawaban lainnya. Saya setuju dengan Anda benar-benar wrt memperbaiki jelek ... meskipun tidak memiliki penggunaan yang sah untuk menguji respon komputer untuk beban cpu tinggi.
Wildcard

6
Tentu saja, Anda dapat menggunakan perangkat lunak berpemilik "Microsoft Windows" untuk menguji respons komputer terhadap beban CPU yang tinggi, tetapi "ya" adalah open source.
Wildcard

1
Ini salah satu perbaikan jelek paling indah
Jezzamon

4

Saya suka menggunakan yesketika saya membuka ritsleting banyak file .zip yang semuanya berisi file yang sama dengan nama yang sama dan saya ditanya apa yang harus dilakukan dalam setiap kasus (mis. Perjanjian lisensi).

yes | for z in *.zip; do unzip "$z"; done 

2

Baru saja menemukan penggunaan lain untuk itu: suka menghapus hard disk dengan pola yang berbeda dari nol saja (seperti: dd if = / dev / nol = / dev / sdd bs = 1M) dan menggunakan 'ya' untuk itu:

yes UUUUUUUUUUUUU > /dev/sdd


1

Seorang rekan kerja menggunakan ini dengan cara baru untuk memasukkan kata sandi

yes password | passwd

passwdakan meminta kata sandi lama terlebih dahulu, jika pengguna tidak melakukan root atau superuser dan tidak akan melanjutkan kecuali kata sandi yang benar dimasukkan. Jadi pengguna adalah root atau passwordkata sandi lama juga dan tidak ada yang berubah.
Michael Konietzka

@MichaelKonietzka memang. Tetapi dengan kondisi yang Anda sebutkan itu adalah use case yang berguna tetap.
frogstarr78

3
Kecuali ini akan bertahan dalam sejarah dalam plaintext. Crazeyyy.
Gleno

3
@Gleno in bash, Anda dapat mengawalinya dengan spasi untuk mencegahnya agar tidak direkam (seperti pada stackoverflow.com/q/640403/118153 )
Iiridayn

2
Juga, ini bocor kata sandi untuk semua pengguna lokal di daftar proses ( psatau toppada saat yang tepat).
Federico Poloni
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.