yes
es un comando en sistemas operativos Unix y similares a Unix que genera una respuesta afirmativa o una cadena de texto definida por el usuario de forma continua hasta que se elimina.
Por sí solo, el yes
comando genera 'y' o lo que se especifique como argumento, seguido de una nueva línea repetidamente hasta que el usuario lo detenga o lo elimine de otra manera ; cuando se lo incluye en un comando, continuará hasta que se rompa la línea de entrada (es decir, hasta que el programa complete su ejecución). Sin embargo, si el usuario ingresa una cadena después de 'yes', 'yes' generará la cadena de la misma manera que generaría 'y', similar a echo .
La versión yes
incluida en GNU coreutils fue escrita por David MacKenzie. [1]
El comando está disponible como un paquete separado para Microsoft Windows como parte del proyecto GnuWin32 [2] y la colección UnxUtils de puertos Win32 nativos de utilidades comunes tipo Unix de GNU . [3]
yes
se puede utilizar para enviar una yes n
respuesta afirmativa (o negativa; p. ej.) a cualquier comando que de otro modo la solicitaría, provocando así que el comando se ejecute de forma no interactiva.
Si se escribe "sí" en un comando con muchas solicitudes de confirmación del usuario, se responderá automáticamente a todas esas solicitudes con "sí" (escribir "y" y presionar Enter).
Los siguientes comandos
$ sí | sudo apt install foobar
responderá las solicitudes de confirmación con y, instalando efectivamente foobar con sudo apt sin ninguna solicitud.
Este uso puede estar obsoleto hoy en día, ya que la mayoría de los comandos que solicitarían una respuesta del usuario tienen una opción "forzar" (por ejemplo, rm -f
) o una opción "asumir que sí" (por ejemplo, apt -y
).
A modo de ejemplo, lo siguiente:
$ rm -f *.txt
es funcionalmente equivalente a
$ sí | rm *.txt
El yes
comando junto con el comando head se puede utilizar para generar archivos de gran volumen para fines de prueba. Por ejemplo, ejecutar
$ sí 1234567 | head -n1000 > archivo
da como resultado un archivo que consta de 1000 líneas, cada una de las cuales consta de ocho caracteres (1, 2, 3, 4, 5, 6, 7 y nueva línea).
yes
puede utilizarse como una forma sencilla de generar carga de CPU. En 2006, por ejemplo, el yes
comando recibió publicidad por ser un medio para probar si el MacBook de un usuario se ve afectado o no por el error "Síndrome de Apagado Intermitente", en el que un MacBook se apaga aleatoriamente sin ninguna intervención del usuario. Al ejecutar el yes
comando indefinidamente dos veces a través de la Terminal en Mac OS X , los usuarios pudieron maximizar la CPU de su computadora y así ver si la falla estaba relacionada con el calor. [4] [5]
La implementación de yes
en diferentes Unix y sistemas similares a Unix se implementó consistentemente con un simple bucle while. La implementación de en el Proyecto GNU yes
fue mucho más rápida que cualquier otra implementación, lograda mediante el almacenamiento en búfer de su salida, lo que llevó a una mayor salida por llamada al sistema. [6] [7] La implementación de GNU puede haber sido diferente para evitar infringir los derechos de autor de Unix. El Proyecto FreeBSD cambió su implementación en 2017 para que coincida con la implementación de GNU. [8]