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.
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.
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
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
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
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.