GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verstehen, wie Eingaben in Bash an Pipes gesendet werden

"Eingabe" und "Befehlszeilenargumente" sind verschiedene Dinge.

rm entfernt die als Argumente angegebenen Dateien.

Eine Pipe leitet die Ausgabe des linken Befehls an die Eingabe des rechten Befehls um. Es wirkt sich nicht auf die Befehlszeilenargumente des Programms auf der rechten Seite aus.

Um das zu tun, was Sie versuchen, versuchen Sie es mit xargs zum Konvertieren der Standardeingabe in Befehlszeilenargumente zum Ausführen eines Programms. Das ist seine Aufgabe.

which gem | xargs rm entfernt beispielsweise den gem in Ihrem PFAD.


rm nimmt keine Eingaben entgegen, sondern Argumente. Diese sind unterschiedlich. Argumente sind die Schalter und Dateinamen usw., die Sie einem Programm auf der Befehlszeile geben, um sein Verhalten zu beeinflussen. Eingabe sind die Daten, mit denen das Programm arbeitet. Beispiel:grep akzeptiert sowohl Eingaben als auch Argumente:

grep "foo" file.txt

Dort gibt es zwei Argumente "foo" und file.txt . Die Eingabe ist der Inhalt von file.txt , nicht die Zeichenfolge file.txt selbst. Da grep Eingaben akzeptiert, können Sie es mit Pipes verwenden:

cat file.txt | grep "foo"

erzeugt die gleiche Ausgabe, da cat file.txt nimmt als Argument und erzeugt den Inhalt von file.txt als Ausgang. Diese Ausgabe wird dann an grep weitergeleitet, was den gleichen Effekt hat, als ob grep die Datei selbst öffnen würde, wie im ersten Beispiel.

Wenn Sie die Ausgabe eines Programms als Argument verwenden möchten zu einem anderen verwenden Sie Backticks:

rm `which gem`

oder diese alternative (bash-spezifische) Syntax:

rm $(which gem)

Bearbeiten:oder xargs wie ein anderer Antworter betont. Viele Möglichkeiten, eine Katze mit einer Befehlszeile zu häuten.


Sehen Sie sich man an Seiten mit Befehlen, an denen Sie interessiert sind. Diese Programme zeigen an, dass sie ab stdin lesen (versuchen Sie man grep für einen beliebten Befehl, der stdin liest).


Linux
  1. So verwenden Sie Bash-Verlaufsbefehle

  2. Wie debuggt man ein Bash-Skript?

  3. Wie mache ich "head" und "tail" bei einer durch Null getrennten Eingabe in Bash?

  4. Wie erkennt man Bash>=4.0?

  5. Überprüfen Sie, ob in einem Bash-Skript mindestens zwei Argumente angegeben sind

So passen Sie die Bash-Eingabeaufforderung unter Linux an

So erstellen Sie Bash-Aliase

So lesen Sie eine Datei Zeile für Zeile in Bash

So vergleichen Sie Zeichenfolgen in Bash

So führen Sie ein Bash-Skript aus

Was sind Pipes unter Linux? Wie funktioniert die Pipe-Umleitung?