yesist ein Befehl auf Unix- und Unix-ähnlichen Betriebssystemen , der eine Bestätigungsantwort oder eine vom Benutzer definierte Textzeichenfolge kontinuierlich ausgibt, bis er vom Benutzer abgebrochen wird.
Überblick
Der Befehl gibt eigenständig yes'y' oder das angegebene Argument gefolgt von einem Zeilenumbruch aus, bis er vom Benutzer abgebrochen oder anderweitig beendet wird . Wird er an einen anderen Befehl weitergeleitet, läuft er so lange, bis die Verbindung abbricht (d. h., bis das Programm seine Ausführung beendet hat). Gibt der Benutzer jedoch nach 'yes' eine Zeichenkette ein , gibt 'yes' diese Zeichenkette genauso aus wie 'y', ähnlich wie bei `echo` .
yesDie in den GNU Coreutils enthaltene Version wurde von David MacKenzie geschrieben. [ 1 ]
Der Befehl ist als separates Paket für Microsoft Windows im Rahmen des GnuWin32- Projekts [ 2 ] und der UnxUtils- Sammlung nativer Win32- Portierungen gängiger GNU Unix-ähnlicher Dienstprogramme verfügbar. [ 3 ]
Verwendung
yeskann verwendet werden, um eine positive (oder negative; z. B. yes n) Antwort auf einen Befehl zu senden, der andernfalls eine solche Antwort anfordern würde, wodurch der Befehl nicht-interaktiv ausgeführt wird.
Wenn man bei einem Befehl mit vielen Benutzerbestätigungsaufforderungen „yes“ als Pipe verwendet, werden alle diese Aufforderungen automatisch mit „yes“ beantwortet (Eingabe von „y“ und Drücken der Eingabetaste).
Die folgenden Befehle
$ yes | sudo apt install foobar wird die Bestätigungsaufforderungen mit y beantworten und foobar somit effektiv mit sudo apt ohne weitere Rückfragen installieren.
Diese Verwendung ist heute möglicherweise veraltet, da die meisten Befehle, die eine Antwort vom Benutzer anfordern, entweder eine Option „force“ (z. B. rm -f) oder eine Option „assume-yes“ (z. B. apt -y) haben.
Zum Beispiel Folgendes:
$ rm -f *.txt ist funktional äquivalent zu
$ yes | rm *.txt Der yesBefehl kann in Verbindung mit dem Befehl „head“ verwendet werden, um große Dateien für Testzwecke zu generieren. Zum Beispiel durch Ausführen von
$ yes 1234567 | head -n1000 > file Das Ergebnis ist eine Datei mit 1000 Zeilen, die jeweils aus acht Zeichen bestehen (1, 2, 3, 4, 5, 6, 7 und Zeilenumbruch).
yesyesKann als einfache Methode zur Erzeugung von CPU-Last verwendet werden. Im Jahr 2006 erlangte der Befehl beispielsweise Bekanntheit, da er als Testmöglichkeit diente, um festzustellen, ob ein MacBook vom „Intermittent Shutdown Syndrome“ betroffen war, einem Fehler, bei dem sich ein MacBook ohne Benutzereingriff willkürlich abschaltete. Durch yeszweimaliges, unbegrenztes Ausführen des Befehls über das Terminal unter Mac OS X konnten Benutzer die CPU ihres Computers maximal auslasten und so feststellen, ob der Fehler hitzebedingt war. [ 4 ] [ 5 ]
Implementierung und Leistung
Die Implementierung yesauf verschiedenen Unix- und Unix-ähnlichen Systemen erfolgte einheitlich mit einer einfachen while-Schleife. Die Implementierung des GNU-Projekts yeswar deutlich schneller als alle anderen, da die Ausgabe gepuffert wurde, was zu einer höheren Ausgabe pro Systemaufruf führte. [ 6 ] [ 7 ] Die GNU-Implementierung unterschied sich möglicherweise, um Urheberrechtsverletzungen durch Unix zu vermeiden. Das FreeBSD-Projekt passte seine Implementierung 2017 an die GNU-Implementierung an. [ 8 ]
Referenzen
- ^ – Linux - Benutzerhandbuch
- ^ CoreUtils für Windows
- ^ Native Win32-Portierungen einiger GNU-Dienstprogramme
- ^ „Test für das MacBook Random Shutdown Syndrome (RSS)“ . ZDNet . 29.08.2006. Archiviert vom Original am 05.06.2010 . Abgerufen am 09.05.2012 .
- ^ „Testen Ihres MacBook auf zufällige Abschaltungen“ . Die Apple-Dateien . 2. August 2006. Archiviert vom Original am 10. Februar 2007. Abgerufen am 16. Januar 2008 .
- ^ Endler, Matthias (10.10.2017). „Eine kleine Geschichte über den Unix-Befehl 'yes'“ . Endler.dev .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ kjensenxz (13.06.2017). „r/unix – Wie kann GNU ‚Ja‘ so schnell sein?“ . Reddit .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ gahr (13.06.2017). „Verbesserung des Yes-Durchsatzes“ (Commit) . github .
Weiterführende Literatur
- Montfort, Nick (Januar 2012). Das Trivial-Programm „Ja“ (PDF) (Technischer Bericht). Cambridge, Massachusetts: Trope Tank. 12-01 . Abgerufen am 8. Februar 2022 .
Externe Links
- Manpage für
yes( GNU -Version) - GNU coreutils yes.c Implementierung
- FreeBSD yes.c -Implementierung
- NetBSD yes.c Implementierung
- OpenBSD yes.c Implementierung
