Verwendung des Befehls yes unter Linux


Der Befehl yes klingt zu einfach, um von praktischem Nutzen zu sein. In diesem Tutorial zeigen wir Ihnen jedoch seine Anwendung und wie Sie die aufgestaute Positivität unter Linux und MacOS nutzen können.

Der Befehl ja

Das yes Befehl ist einer der einfachsten Befehle unter Linux und anderen Unix-ähnlichen Betriebssystemen wie macOS. Und mit einfach meinen wir einfach in seiner Verwendung und anfänglichen Implementierung. Der Quellcode der Originalversion – veröffentlicht in System 7 Unix und erstellt von Ken Thompson– entspricht einer einzigen sechs Codezeilen.

Aber schreiben Sie es nicht auf, um nur ein kleiner Befehl zu sein. Es kann auf interessante und nützliche Weise verwendet werden.

Was macht ja?

Wird ohne Befehlszeilenparameter verwendet yes Der Befehl verhält sich so, als ob Sie “y” eingeben und die Eingabetaste immer und immer wieder (und immer und immer wieder) drücken. Sehr schnell. Dies wird so lange fortgesetzt, bis Sie Strg + C drücken, um es zu unterbrechen.

yes


In Wirklichkeit, yes kann verwendet werden, um wiederholt die gewünschte Nachricht zu generieren. Tipp einfach yes, ein Leerzeichen, die Zeichenfolge, die Sie verwenden möchten, und drücken Sie dann die Eingabetaste. Dies wird oft verwendet, um zu verursachen yes um einen Ausgabestream von “Ja” – oder “Nein” -Strings zu generieren.

yes yes

yes anything you like


Aber wofür ist es?

Die Ausgabe von yes kann zu anderen Programmen oder Skripten umgeleitet werden.

Kommt Ihnen das bekannt vor? Sie starten einen lang laufenden Prozess, gehen davon weg und lassen ihn laufen. Wenn Sie zu Ihrem Computer zurückkehren, ist der Vorgang überhaupt nicht abgeschlossen. In Ihrer Abwesenheit hat er Ihnen eine Frage gestellt und erwartet eine “Ja” – oder “Nein” -Antwort.

Wenn Sie im Voraus wissen, dass alle Ihre Antworten positiv (“Ja” oder “Y”) oder negativ (“Nein” oder “N”) sind, können Sie verwenden yes um Ihnen diese Antworten zu geben. Ihr langer Prozess endet dann unbeaufsichtigt mit yes Geben Sie Antworten auf alle Fragen, die sich aus dem Prozess ergeben.

Verwenden von yes mit Skripten

Schauen Sie sich das folgende Bash-Shell-Skript an. (Wir müssen uns vorstellen, dass dies Teil eines viel größeren Skripts ist, dessen Ausführung viel Zeit in Anspruch nimmt.)

#!/bin/bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

echo "Are you happy to proceed? [y,n]"
read input

# did we get an input value?
if [ "$input" == "" ]; then

   echo "Nothing was entered by the user"

# was it a y or a yes?
elif [[ "$input" == "y" ]] || [[ "$input" == "yes" ]]; then

   echo "Positive response: $input"

# treat anything else as a negative response
else

   echo "negative response: $input"

fi

Dieses Skript stellt eine Frage und wartet auf eine Antwort. Der logische Ablauf im Skript wird durch Benutzereingaben festgelegt.

  • Ein “Ja” oder ein “Y” zeigt eine positive Antwort an.
  • Jeder andere Eintrag wird als negative Antwort angesehen.
  • Das Drücken der Eingabetaste ohne Eingabetext führt zu nichts.

verbunden :  So reduzieren Sie die RAM-Auslastung von Steam von 400 MB auf 60 MB

Um dies zu testen, kopieren Sie das Skript in eine Datei und speichern Sie es unter long_script.sh. benutzen chmod um es ausführbar zu machen.

chmod +x long_script.sh

Führen Sie das Skript mit dem folgenden Befehl aus. Versuchen Sie, “Ja”, “Y” und alles andere als Eingabe anzugeben, einschließlich der Eingabetaste ohne Eingabetext.

./long_script.sh

Bekommen yes Um unsere Antwort auf die Skriptfrage zu geben, leiten Sie die Ausgabe von yes Au Skript.

yes | ./long_script.sh

Einige Skripte sind strenger in ihren Anforderungen und akzeptieren nur das vollständige Wort “Ja” als positive Antwort. Sie können “Ja” als Parameter für angeben yes, wie folgt:

yes yes | ./long_script.sh


Sag nicht ja, ohne darüber nachzudenken

Sie müssen sicher sein, dass der Eintrag, den Sie in das Skript oder Programm einspeisen, Ihnen definitiv das erwartete Ergebnis liefert. Um diese Entscheidung treffen zu können, müssen Sie die Fragen kennen und wissen, wie Ihre Antworten lauten sollten.

Die Logik des Skripts, Befehls oder Programms entspricht möglicherweise nicht Ihren Erwartungen. In unserem Beispielskript könnte die Frage lauten: “Möchten Sie beenden?” [y,n]. Wenn dies der Fall gewesen wäre, hätte eine negative Antwort das Skript fortgesetzt.

Sie Muss Machen Sie sich mit dem Skript, dem Befehl oder dem Programm vertraut, bevor Sie es munter starten yes drin.

Verwenden von yes mit Befehlen

Zu Beginn yes würde mit anderen Linux-Befehlen verwendet werden. Seitdem haben die meisten dieser anderen Linux-Befehle ihre eigene Funktionsweise ohne menschliche Interaktion. yes ist nicht mehr notwendig, um dies zu erreichen.

Nehmen Sie den Ubuntu-Paketmanager apt-get zum Beispiel. Um eine Anwendung zu installieren, ohne nach der Installation “y” drücken zu müssen, yes wäre wie folgt verwendet worden:

yes | sudo apt-get install fortune-mod


Das gleiche Ergebnis kann mit dem erzielt werden -y (angenommen ja) Option in apt-get::

sudo apt-get -y install fortune-mod

Du wirst das sehen apt-get fragte nicht einmal sein übliches “Willst du weitermachen?” [Y/n]”Frage. Er nahm nur an, dass die Antwort “Ja” sein würde.

Bei anderen Linux-Distributionen ist die Situation dieselbe. Unter Fedora hätten Sie diese Art von Paketmanager-Befehl irgendwann verwendet:

yes | yum install fortune-mod

Das dnf Der Paketmanager wurde ersetzt yum und dnf hat sein eigenes -y (Angenommen, ja) Option.

dnf -y install fortune-mod

Gleiches gilt für cp, fsck, und rm. Diese Befehle haben jeweils ihre eigenen -f (Kraft) oder -y (Ja annehmen) Optionen.

So scheint es das yes wurde verbannt, nur mit Skripten zu arbeiten? Nicht genug. Es gibt noch ein paar Tricks im alten Hund.

verbunden :  Was ist los mit Google Home und Nest? Ist da ein Unterschied?

Einige andere Sachen ja

Sie können verwenden yes mit einer Folge von Ziffern generiert von seq um eine Schleife von wiederholten Aktionen zu steuern.

Diese einzelne Zeile gibt die im Terminalfenster generierten Nummern wieder und ruft dann an sleep für eine Sekunde.

Anstatt nur die Nummern im Terminalfenster wiederzugeben, können Sie einen anderen Befehl oder ein anderes Skript aufrufen. Dieser Befehl oder dieses Skript muss nicht einmal die Zahlen verwenden und dient nur zum Starten jedes Zyklus der Schleife.

yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done

ja Einzeiler, der eine Schleife im Terminalfenster regelt

Manchmal ist es hilfreich, eine große Datei zum Testen zu haben. Vielleicht möchten Sie die Verwendung des Befehls zip üben oder eine große Datei zum Testen von FTP-Downloads haben.

Mit können Sie schnell große Dateien generieren yes. Alles, was Sie tun müssen, ist, ihm eine lange Textfolge zu geben, mit der Sie arbeiten können, und die Ausgabe in eine Datei umzuleiten. Mach keine Fehler; Diese Dateien werden schnell wachsen. Seien Sie bereit, Strg + C in Sekunden zu drücken.

yes long line of meaningless text for file padding > test.txt
ls -lh test.txt
wc test.txt

Generierung von Testdateien mit Ja ua Terminalfenster

Die hier generierte Datei dauerte auf dem Testcomputer, mit dem dieser Artikel gefunden wurde, ungefähr fünf Sekunden. ls gibt an, dass seine Größe 557 MB beträgt, und wc Sagen Sie uns, es enthält 12,4 Millionen Zeilen.

Sie können die Dateigröße durch Einschließen begrenzen head in unserer Befehlskette. Wir geben die Anzahl der Zeilen an, die in die Datei aufgenommen werden sollen. Das -50 meint head wird nur 50 Zeilen bis lassen test.txt fallen lassen.

yes long line of meaningless text for file padding | head -50 > test.txt

Verwenden Sie head, um die Größe einer Datei in einem Terminalfenster zu begrenzen

Sobald es 50 Zeilen in der gibt test.txt Datei wird der Prozess gestoppt. Sie müssen Strg + C nicht verwenden. Es wird ordnungsgemäß von selbst heruntergefahren.

wc meldet, dass die Datei genau 50 Zeilen enthält, 400 Wörter und 2350 Byte groß ist.


Während es immer noch nützlich ist, um Antworten in lang laufende Skripte (und einige andere Tricks) zu tanken, ist das yes Die Bestellung ist nicht Teil Ihrer täglichen Bestell-Toolbox. Aber wenn Sie es brauchen, werden Sie feststellen, dass es einfach ist – und das alles in sechs Zeilen goldenen Codes.

Moyens Staff
Moyens I/O-Personal. motivierte Sie und gab Ratschläge zu Technologie, persönlicher Entwicklung, Lebensstil und Strategien, die Ihnen helfen werden.
We would like to show you notifications for the latest news and updates.
Dismiss
Allow Notifications