Connect with us

Wie man

Verwendung des Befehls yes unter Linux

Verwendung des Befehls yes unter Linux

Fatmawati Achmad Zaenuri / Shutterstock.com

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

Der Ja-Befehl

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 seiner anfänglichen Implementierung. Der Quellcode für die Originalversion – veröffentlicht in System 7 Unix und verfasst von Ken Thompson– ist nur eine sechs Codezeilen.

Aber schreiben Sie es nicht ab, weil es ein einfacher kleiner Befehl ist. 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 würden Sie „y“ eingeben und immer wieder (und immer und immer wieder) die Eingabetaste drücken. Sehr schnell. Dies wird so lange fortgesetzt, bis Sie Strg + C drücken, um es zu unterbrechen.

yes

Ausgabe von yes in einem Terminalfenster

Eigentlich, yes kann verwendet werden, um eine beliebige Nachricht, die Sie auswählen, wiederholt zu generieren. Einfach eingeben 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

Ausgabe von yes yes in einem Terminalfenster

yes anything you like

Ausgabe von yes mit einer Textzeile in einem Terminalfenster

Aber was nützt das?

Die Ausgabe von yes kann in andere Programme oder Skripte geleitet werden.

Kommt Ihnen das bekannt vor? Sie starten einen langen Prozess und treten zurück, sodass er ausgeführt werden kann. Wenn Sie zu Ihrem Computer zurückkehren, ist der Vorgang überhaupt nicht abgeschlossen. In Ihrer Abwesenheit hat es Ihnen eine Frage gestellt und wartet auf eine Antwort mit „Ja“ oder „Nein“.

Wenn Sie im Voraus wissen, dass alle Ihre Antworten positiv („Ja“ oder „Ja“) oder negativ („Nein“ oder „N“) sein werden, können Sie sie verwenden yes um diese Antworten für Sie bereitzustellen. Ihr langer Prozess wird dann unbeaufsichtigt bis zum Abschluss ausgeführt yes Bereitstellung der Antworten auf alle Fragen, die der Prozess stellt.

Verwenden von yes With Scripts

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 eine beträchtliche Zeit in Anspruch nehmen wird.)

#!/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 Logikfluss innerhalb des Skripts wird durch die Eingabe des Benutzers bestimmt.

  • Ein „Ja“ oder „Y“ zeigt eine positive Antwort an.
  • Jede andere Eingabe wird als negative Antwort betrachtet.
  • Durch Drücken der Eingabetaste ohne Eingabetext wird nichts ausgeführt.

Um dies zu testen, kopieren Sie das Skript in eine Datei und speichern Sie es unter long_script.sh. Verwenden 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“, „Ja“ und alles andere als Eingabe anzugeben, einschließlich Drücken der Eingabetaste ohne Eingabetext.

./long_script.sh

Ausgabe von long_script.sh in einem Terminalfenster

Bekommen yes Um unsere Antwort auf die Frage des Skripts zu geben, leiten Sie die Ausgabe von weiter yes zum Skript.

yes | ./long_script.sh

Piping Ja in long_script.sh in einem Terminalfenster

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

Piping Ja Ja in long_script.sh in einem Terminalfenster

Sagen Sie nicht Ja, ohne darüber nachzudenken

Sie müssen sicher sein, dass die Eingabe, die 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 im Skript, Befehl oder Programm entspricht möglicherweise nicht Ihren Erwartungen. In unserem Beispielskript könnte die Frage lauten: „Möchten Sie aufhören? [y,n]. ” Wenn dies der Fall gewesen wäre, hätte eine negative Antwort dem Skript erlaubt, fortzufahren.

Sie sind mit dem Skript, dem Befehl oder dem Programm vertraut, bevor Sie munter pfeifen yes hinein.

Verwenden von yes With Commands

In den Kinderschuhen, yes würde mit anderen Linux-Befehlen verwendet werden. Seitdem haben die meisten dieser anderen Linux-Befehle ihre eigene Art, ohne menschliche Interaktion ausgeführt zu werden. yes ist nicht mehr erforderlich, um dies zu erreichen.

Nehmen wir den Ubuntu-Paketmanager apt-get als 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

Piping Ja in apt-get in einem Terminalfenster

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

sudo apt-get -y install fortune-mod

Verwenden von apt-get mit der Option

Das wirst du sehen apt-get fragte nicht einmal wie üblich: „Willst du weitermachen? [Y/n]Frage. Es wurde nur angenommen, dass die Antwort „Ja“ wäre.

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

yes | yum install fortune-mod

Das dnf Paketmanager wurde ersetzt yum und dnf hat sein eigenes -y (Ja annehmen) 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 auch yes wurde verbannt, nur mit Skripten zu arbeiten? Nicht ganz. Es gibt noch ein paar Tricks im alten Hund.

Einige weitere ja Tricks

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

Dieser Einzeiler gibt die generierten Ziffern an das Terminalfenster weiter und ruft dann auf sleep für eine Sekunde.

Anstatt die Ziffern einfach im Terminalfenster wiederzugeben, können Sie einen anderen Befehl oder ein anderes Skript aufrufen. Dieser Befehl oder dieses Skript muss nicht einmal die Ziffern verwenden und dient nur dazu, jeden Zyklus der Schleife zu starten.

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

ja Einzeiler, der eine Schleife im Terminalfenster regelt

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

Mit können Sie schnell große Dateien generieren yes. Sie müssen ihm lediglich eine lange Textfolge geben, um damit zu arbeiten, und die Ausgabe in eine Datei umleiten. Mach keinen Fehler; Diese Dateien werden schnell wachsen. Drücken Sie innerhalb weniger Sekunden Strg + C.

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

Generieren von Testdateien mit Ja ua Terminalfenster

Die hier generierte Datei dauerte auf der Testmaschine, mit der dieser Artikel recherchiert wurde, ungefähr fünf Sekunden. ls berichtet, dass es 557 MB groß ist, und wc Sagen Sie uns, es sind 12,4 Millionen Zeilen darin.

Wir können die Größe der Datei durch Einschließen begrenzen head in unserer Befehlszeichenfolge. Wir geben an, wie viele Zeilen in die Datei aufgenommen werden sollen. Das -50 meint head lässt nur 50 Zeilen durch die test.txt Datei.

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

Verwenden von head, um die Größe einer Datei zu begrenzen, z. B. eines Terminalfensters

Sobald es 50 Zeilen in der test.txt Datei wird der Prozess gestoppt. Sie müssen nicht Strg + C verwenden. Es kommt von sich aus anmutig zum Stillstand.

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

Auch wenn es immer noch nützlich ist, um Antworten in lang laufende Skripte (und einige andere Tricks) einzugeben, ist die yes Befehl wird nicht Teil Ihres täglichen Befehls-Toolkits sein. Aber wenn Sie es brauchen, werden Sie feststellen, dass es einfach ist – und das alles in sechs Zeilen goldenen Codes.

Continue Reading
Click to comment

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Tendencia