yes (Unix)
GPLv3+ |
yes
is a command on Unix and Unix-like operating systems, which outputs an affirmative response, or a user-defined string of text, continuously until killed.
Overview
By itself, the yes
command outputs 'y' or whatever is specified as an argument, followed by a
The version of yes
bundled in
The command is available as a separate package for Microsoft Windows as part of the GnuWin32 project[2] and the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities.[3]
Uses
yes
can be used to send an affirmative (or negative; e.g. yes n
) response to any command that would otherwise request one, thereby causing the command to run non-interactively.
Piping yes to a command with many user-confirmation prompts will automatically answer all of those prompts with "yes" (typing 'y' and pressing return).
The following commands
$ yes | sudo apt install foobar
will answer the prompts for confirmation with y, effectively installing foobar with
This usage may be obsolete today, as most commands that would request response from the user have either a 'force' option (e.g.,
).
As an example, the following:
$ rm -f *.txt
is functionally equivalent to
$ yes | rm *.txt
The yes
command in conjunction with the head command can be used to generate large volume files for means of testing. For example, executing
$ yes 1234567 | head -n1000 > file
results in a file consisting of 1000 lines each consisting of eight characters (1, 2, 3, 4, 5, 6, 7 and newline).
yes
can be used as an easy way of generating CPU load. In 2006, for example, the yes
command received publicity for being a means to test whether or not a user's
Implementation and performance
The implementation of yes
on different Unix and Unix-likes was consistently implemented with a simple while-loop. The GNU Project's implementation of yes
was much faster than any other implementation, achieved by buffering its output, leading to more output per system call.[6][7] GNU's implementation may have been different to avoid infringing on the Unix copyright. The FreeBSD Project changed their implementation in 2017 to match GNU's implementation.[8]
References
- ^ Linux User Commands Manual –
- ^ CoreUtils for Windows
- ^ Native Win32 ports of some GNU utilities
- ZDNet. 2006-08-29. Retrieved 2012-05-09.
- ^ "Testing your MacBook for Random Shut Downs". the apple files. 2006-08-02. Archived from the original on 2007-02-10. Retrieved 2008-01-16.
- ^ Endler, Matthias (2017-10-10). "A Little Story About the 'yes' Unix Command". Endler.dev. Archived from the original on 2022-01-25.
- ^ kjensenxz (2017-06-13). "r/unix - How is GNU 'yes' so fast?". Reddit. Archived from the original on 2021-10-30.
- ^ gahr (2017-06-13). "Improve yes' throughput" (commit). github.
Further reading
- Montfort, Nick (January 2012). The Trivial Program “yes” (PDF) (Technical report). Cambridge, Massachusetts: Trope Tank. 12-01. Retrieved 2022-02-08.
External links
- Manpage for
yes
(GNU version) - GNU coreutils yes.c implementation
- FreeBSD yes.c implementation
- NetBSD yes.c implementation
- OpenBSD yes.c implementation