Was ist der Ja-Befehl?

29

Ich gab im Ubuntu-Terminal einen Befehl ein, der mich zur Eingabe von yes aufforderte, aber ich stellte fest, dass er mich nur beim ersten Mal fragt, aber ich hatte bereits die Eingabetaste gedrückt, bevor ich es merkte. Also habe ich eine "Befehl nicht gefunden" Nachricht erwartet, aber stattdessen habe ich einen endlosen Strom von "y" erhalten. Dies scheint das einzige zu sein, was dies bewirkt. Ich frage mich, wozu dieser Befehl gut ist und warum er "y" ausgibt. (Ubuntu 11.10)

Greg Treleaven
quelle

Antworten:

14

Aus Wikipedia :

Der Befehl yes gibt für sich allein 'y' oder was auch immer als Argument angegeben ist aus, gefolgt von einer neuen Zeile, bis er vom Benutzer gestoppt oder auf andere Weise beendet wird. Wenn es in einen Befehl weitergeleitet wird, wird es fortgesetzt, bis die Pipe unterbrochen wird (dh das Programm beendet seine Ausführung).

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.

DavidEG
quelle
30

Vor langer Zeit (SysV Tage und früher), die fsckhat Befehl hat nicht -yoder -nOptionen. Der Befehl fordert Sie interaktiv auf, Hunderte oder Tausende von Elementen zu ändern, wobei Sie ein 'y' oder 'n' erwarten. Der yesBefehl wurde erstellt, um an fsck weiterzuleiten, und einige andere Programme, um die interaktiven Fragen wiederholt beantworten zu können (wieder war dies SysV-Tage, lange vor Tcl und Expect). Das yesProgramm passt sehr gut zur UNIX-Philosophie: kleine Programme, die bestimmte Dinge sehr gut machen und mit anderen Programmen zusammenarbeiten.

Arcege
quelle
4

Basierend auf den hier bereitgestellten Informationen: http://linux.about.com/library/cmd/blcmdl1_yes.htm

Linux / Unix-Befehl: ja

Befehlsbibliothek

NAME

yes - gibt einen String wiederholt aus, bis er getötet wird

ZUSAMMENFASSUNG

yes [STRING] ... yes OPTION

BESCHREIBUNG

Wiederholt eine Zeile mit allen angegebenen STRING (s) oder `y 'ausgeben.

--help zeigt diese Hilfe an und beendet --version gibt Versionsinformationen aus und beendet
SIEHE AUCH

Die vollständige Dokumentation für yes wird als Texinfo-Handbuch gepflegt. Wenn die Programme info und yes an Ihrem Standort ordnungsgemäß installiert sind, geben Sie den Befehl ein

info yes

sollten Sie Zugriff auf das vollständige Handbuch geben.

Meiner bescheidenen Meinung nach klingt die Verwendung eines "Ja" -Befehls logisch, wenn Sie wiederholt etwas in einem Prozess / Skript autorisieren müssen, indem Sie die "Y" -Taste drücken. Welche kann durch Abbrechen der Programmausführung gesteuert werden.

Auf jeden Fall kann jemand anderes Erfahrung mit diesem Befehl haben.

Geppettvs D'Constanzo
quelle
Ich habe nicht viel Linux-Erfahrung. Wie können Sie den "yes" -Befehl in einem Prozess / Skript verwenden?
Greg Treleaven
Siehe hierzu: askubuntu.com/questions/71566/what-is-the-yes-command/…
Geppettvs D'Constanzo
1

Der yes-Befehl gibt entweder sein Argument oder "y" aus, wenn dieses leer ist, bis Sie das Programm beenden oder die Ausgabe-Pipe geschlossen wird. Es kann mit Programmen verwendet werden, die eine wiederholte Eingabe erwarten, wie z. B. rm -i.

Daniel Kullmann
quelle
1
Warum sollten Sie einen iterativen rm ausführen, wenn Sie mit yes alles löschen?
Fromnaboo
@fromnaboo Es ist ein schlechtes Beispiel, ich weiß. Manchmal haben Sie jedoch keinen Zugriff auf die interne Arbeitsweise eines Programms, das Sie verwenden müssen, und können so verhindern, dass dieselbe Eingabe endlos wiederholt wird.
Daniel Kullmann
@fromnaboo Um die Nettopositivität Ihrer Maschine zu erhöhen.
Walf