¿Cuál es el punto del comando "sí"?

Respuestas:

41

sí se puede usar para enviar una respuesta afirmativa (o negativa; por ejemplo, sí n) a cualquier comando que de otro modo solicitaría uno, lo que hace que el comando se ejecute de forma no interactiva.

El comando yes junto con el comando head se puede usar para generar archivos de gran volumen para realizar pruebas.

También se puede usar para probar qué tan bien un sistema maneja cargas altas, ya que el uso de sí da como resultado un uso del procesador del 100%, para sistemas con un solo procesador (para un sistema multiprocesador, se debe ejecutar un proceso para cada procesador). Esto, por ejemplo, puede ser útil para investigar si el sistema de enfriamiento de un sistema será efectivo cuando el procesador esté funcionando al 100%.

En 2006, el comando yes recibió publicidad por ser un medio para probar si el MacBook de un usuario está afectado o no por el Síndrome de apagado intermitente. Al ejecutar el comando yes dos veces a través de Terminal en Mac OS X, los usuarios pudieron maximizar la CPU de su computadora y, por lo tanto, ver si la falla estaba relacionada con el calor

a través de wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)

d3vin
fuente
9
Para daños adicionales, intenteyes `yes yes`
sendmoreinfo
3
@sendmoreinfo Evil
Tobias Kienzler
ohh, esa es una buena prueba de estrés. solo lo intenté, luego corrí hacia mi colega pidiendo un nuevo vm xD
Toastgeraet
17

Esta podría ser una opinión controvertida, pero en mi opinión , es una solución fea para la mala interfaz de usuario en las herramientas de línea de comandos .

Algunas herramientas de línea de comandos hacen preguntas al usuario con un aviso y no tienen una opción para ejecutar de forma no interactiva; imagina por ejemplo algo como

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

Dado que la respuesta a la pregunta se toma de la entrada estándar, una solución rápida a este problema es tener una aplicación que muestre la cadena y\ncontinuamente, que es exactamente lo que yeshace. Las tuberías Unix se pueden usar para enviar esta salida como entrada a un comando dado.

$ yes | frobnicate

Uno de los problemas con este enfoque es que yesno tiene posibilidad de verificar la pregunta a la que responde:

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

Una mejor solución, cuando está disponible, es una opción específica para ejecutar de forma no interactiva, como rm -f o apt-get -y. Esto permite codificar comportamientos más sensibles en la aplicación.

Federico Poloni
fuente
1
Leí todas las otras respuestas. Estoy de acuerdo con la suya por completo wrt solución fea ... a pesar de que hace un uso válido para probar la respuesta del equipo a altas cargas de CPU.
Comodín el
66
Por supuesto, puede usar el software propietario "Microsoft Windows" para probar la respuesta de la computadora a altas cargas de CPU, pero "sí" es de código abierto.
Comodín el
1
Sin embargo
Jezzamon
4

Me gusta usar yescuando descomprimo múltiples archivos .zip que contienen el mismo archivo con el mismo nombre y me preguntan qué hacer en cada caso (por ejemplo, un acuerdo de licencia).

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

Acabo de encontrar otro uso para él: me gusta borrar un disco duro con un patrón diferente al de los ceros (como: dd if = / dev / zero of = / dev / sdd bs = 1M) y usé 'yes' para ello:

yes UUUUUUUUUUUUU > /dev/sdd

usuario1724834
fuente
1

Un compañero de trabajo usó esto de una manera novedosa para ingresar una contraseña

yes password | passwd
frogstarr78
fuente
passwdpedirá primero la contraseña anterior, si el usuario no es root o superusuario y no continuará a menos que se ingrese la contraseña correcta. Por lo tanto, el usuario es root o también passwordes la contraseña anterior y no se cambia nada.
Michael Konietzka
@MichaelKonietzka de hecho. Pero con las condiciones que mencionó, todavía es un caso de uso útil.
frogstarr78
3
Excepto que esto persistiría en la historia en texto sin formato. Crazeyyy
Gleno
3
@Gleno en bash, puede precederlo con un espacio para evitar que se grabe (como en stackoverflow.com/q/640403/118153 )
Iiridayn
2
Además, esto filtra la contraseña a todos los usuarios locales en la lista de procesos ( pso topen el momento adecuado).
Federico Poloni