Zum Hauptinhalt springen

Wenn Sie die POSIX-Shell ("bash") unter VOS verwendet haben, dann wissen Sie, dass Sie verschiedene POSIX-Befehle ausführen und all die raffinierten Tricks nutzen können, die die bash bietet, wie z. B. die Ein- und Ausgabeumleitung. Aber wussten Sie, dass Sie dieselben Funktionen auch mit vielen VOS-Befehlen verwenden können?

Wenn Sie z. B. den VOS-Befehl "list" mit dem POSIX-Befehl "more" kombinieren möchten, geben Sie die folgende Befehlszeile in die Bash ein:

Liste | mehr

Wenn Sie die Ausgabe des list-Befehls in eine Datei ausführen möchten, sagen Sie:

Liste >Liste.txt

Dies funktioniert, weil sowohl VOS als auch POSIX denselben untergeordneten VOS-Anschluss verwenden, um die Ausgabe in das Terminal oder die Batch-Datei zu schreiben. Der VOS-Anschluss "default_output" ist gleichwertig mit der POSIX-Datei "stdout". Und der VOS-Anschluss "default_input" entspricht der POSIX-Datei "stdin". Schließlich ist der VOS-Anschluss "terminal_output", in den VOS Fehlermeldungen schreibt, gleich der POSIX-Datei "stderr".

Hier ist ein (erfundenes) Beispiel für die Verwendung der Bash-Eingabeumleitung für einen VOS-Befehl. Erstellen Sie eine Datei namens "line_edit.txt" mit den folgenden 2 Zeilen darin:

drucken *
quit

Sie können dann diese line_edit-Anfragen gegen Ihre Abkürzungsdatei wie folgt ausführen:

line_edit abbreviations <line_edit.txt

Beachten Sie, dass die Bash jeden Befehl in einem neuen Kindprozess ausführt. Der Kindprozess erbt alle E/A-Anhänge und den gesamten Status vom Elternprozess, sodass dies für die meisten Befehle kein Problem darstellt. Allerdings wird jeder VOS-Befehl, der die Prozessumgebung ändert, nicht das tun, was Sie erwarten. Wenn Sie z. B. den Befehl set_library_paths aus der Bash heraus ausführen, werden die Bibliothekspfade des Kindprozesses geändert; und dieser Prozess wird zerstört, sobald der Befehl beendet ist. Wenn Sie die Pfade, die von der Bash durchsucht werden, ändern möchten, müssen Sie die Änderung mit der POSIX-Methode vornehmen, d. h. die Umgebungsvariable PATH ändern.

Ich hoffe, Sie finden diese Techniken nützlich.

© 2020 Stratus Technologies.