Es gibt einen yes
Befehl in Unix / Linux , die im Grunde unendlich drucken y
auf den stdout
. Was ist der Sinn davon und wie ist es nützlich?
Es gibt einen yes
Befehl in Unix / Linux , die im Grunde unendlich drucken y
auf den stdout
. Was ist der Sinn davon und wie ist es nützlich?
Antworten:
yes kann verwendet werden, um eine positive (oder negative; z. B. yes n) Antwort auf einen Befehl zu senden, der andernfalls eine anfordern würde, wodurch der Befehl nicht interaktiv ausgeführt wird.
Der Befehl yes in Verbindung mit dem Befehl head kann verwendet werden, um große Volumendateien für Testzwecke zu generieren.
Es kann auch verwendet werden, um zu testen, wie gut ein System mit hohen Lasten umgeht, da die Verwendung von yes bei Systemen mit einem einzelnen Prozessor zu 100% zu einer Prozessorauslastung führt (bei einem Multiprozessorsystem muss für jeden Prozessor ein Prozess ausgeführt werden). Dies kann beispielsweise hilfreich sein, um zu untersuchen, ob das Kühlsystem eines Systems effektiv ist, wenn der Prozessor zu 100% läuft.
Im Jahr 2006 wurde der Befehl yes veröffentlicht, um zu testen, ob das MacBook eines Benutzers vom intermittierenden Abschaltsyndrom betroffen ist. Durch zweimaliges Ausführen des Befehls yes über das Terminal unter Mac OS X konnten Benutzer die CPU ihres Computers voll ausnutzen und so feststellen, ob der Fehler durch Hitze verursacht wurde
über Wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)
yes `yes yes`
Dies mag eine kontroverse Meinung sein, aber meiner Meinung nach ist dies eine hässliche Lösung für eine schlechte Benutzeroberfläche in Befehlszeilentools .
Einige Befehlszeilentools stellen dem Benutzer über eine Eingabeaufforderung Fragen und haben keine Option, nicht interaktiv ausgeführt zu werden. Stellen Sie sich zum Beispiel etwas vor wie
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Da die Antwort auf die Frage von der Standardeingabe stammt, besteht eine schnelle Lösung für dieses Problem darin, dass eine Anwendung die Zeichenfolge y\n
kontinuierlich ausgibt yes
. Unix- Pipes können verwendet werden, um diese Ausgabe als Eingabe an einen bestimmten Befehl zu senden.
$ yes | frobnicate
Eines der Probleme bei diesem Ansatz ist, dass yes
es keine Möglichkeit gibt, die Frage zu überprüfen, auf die es antwortet:
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
Eine bessere Lösung ist, wenn sie verfügbar ist, eine spezielle Option, die nicht interaktiv ausgeführt werden kann, z. B. rm -f
oder apt-get -y
. Dies ermöglicht die Codierung eines sinnvolleren Verhaltens in der Anwendung.
Ist gerade auf eine andere Verwendung gestoßen: wollte eine Festplatte mit einem anderen Muster als nur Nullen löschen (wie: dd if = / dev / null von = / dev / sdd bs = 1M) und hat 'yes' dafür verwendet:
yes UUUUUUUUUUUUU > /dev/sdd
Ein Mitarbeiter benutzte dies auf neuartige Weise, um ein Passwort einzugeben
yes password | passwd
passwd
fragt zuerst nach dem alten Passwort, wenn der Benutzer kein Root oder Superuser ist und fährt erst fort, wenn das richtige Passwort eingegeben wurde. Entweder ist der Benutzer root oder password
das alte Passwort und es wird nichts geändert.
ps
oder top
im richtigen Moment) weitergegeben.