Das erste, was mir an Linux aufgefallen ist, waren die verschiedenen Möglichkeiten, Daten in einen Befehl einzugeben. Ich kenne einige, aber ich weiß nicht, wie viele es insgesamt gibt.
die Wege, die ich bisher kenne:
Rohrleitungen:
echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort
von der Tastatur mit Dateiende-Signal:
sort
>gurken
>zucker
>braunkohle
aus Datei:
sort foo
HERE-Zeichenfolge (eigentlich HERE-Dokument genannt):
sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE
Ist das alles oder gibt es mehr Möglichkeiten, warum gibt es überhaupt verschiedene Möglichkeiten, sind einige Möglichkeiten überflüssig?
quelle
foo < bar
als zusätzliche Variante hinzufügen (Datei über stdin)Zunächst
sort << HERE
und so weiter ist keine Here-Zeichenfolge. Das ist ein Hier-Dokument. Die Here-Zeichenfolge verwendet den<<<
Operator. Das ist in Bash (und einigen anderen Muscheln).Im Allgemeinen gibt es zwei Möglichkeiten. Eine erfolgt über Standardeingaben (und Umleitungen) und die andere über Parameter.
Standardeingabe und ihre Umleitungen
Dies ist der Stream, der standardmäßig mit dem Terminal verbunden ist, in dem ein Befehl ausgeführt wird und mit fd (Dateideskriptor) 1 verknüpft ist. Er wird mit dem Terminal verbunden, was auch immer eingegeben wurde. Obwohl es (die Eingabe) wie bei Verwendung der Pipe
|
oder unter Verwendung der Here-Dokumente oder Here-Strings umgeleitet werden kann . Dann kommt die Eingabe nicht vom Terminal, sondern wird an die Standardausgabe des Befehls vor der Pipe angehängt. Unterschiedliche Shells haben unterschiedliche Umleitungen. Daher sollten Sie für diese Kategorie die Shell-Dokumentation überprüfen. Suchen Sie nach Eingabeumleitungen.Parameter
Dies ist in Ihrem Beispiel
sort foo
. Wenn Sie ein Programm oder eine Funktion aufrufen, übergeben Sie ihm einen oder mehrere Parameter. Eine lokale Datei ist nur eine Möglichkeit. Der Parameter kann eine URL oder was auch immer enthalten. Die Möglichkeiten hier sind endlos.Zusammenfassend gibt es zwei allgemeine Möglichkeiten:
Der erste abstrahiert von der inneren Logik der Anwendung und manipuliert die Standardeingabe auf Betriebssystem- / Shell-Ebene.
Während die zweite die Innereien der Anwendung betrifft, bieten sie unbegrenzte Möglichkeiten, basierend auf den Aufrufparametern als Schnittstelle.
Für beide Wege gibt es keine Grenzen. Die tatsächlichen Grenzen liegen jedoch beim Betriebssystem / der Shell und der Anwendung selbst.
quelle