Linux-Shell-Befehle von Java aus mit Pipes und Umleitungen ausführen
Beim Versuch, mit Linux-Systemen von Java aus zu interagieren, stehen Entwickler oft vor der Herausforderung Ausführen von Shell-Befehlen mit erweiterten Funktionen wie Umleitung und Pipes. Um solche Aufgaben zu erledigen, ist es wichtig, die Nuancen des Aufrufs von Shell-Befehlen über Java zu verstehen.
Runtime.exec() ist eine häufig verwendete Methode zum Ausführen von Shell-Befehlen in Java. Es gelingt ihm jedoch nicht, eine ordnungsgemäße Shell-Umgebung einzurichten, was die Kompatibilität mit Umleitungen und Pipes einschränkt. Stattdessen besteht der bevorzugte Ansatz darin, einen neuen Prozess mit einem Shell-Interpreter zu erstellen und den Befehl als Argument zu übergeben.
Betrachten Sie den folgenden überarbeiteten Code:
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
Hier ist das „csh“ Der Interpreter wird mit der Option „-c“ gestartet, die es ihm ermöglicht, den angegebenen Befehl so auszuführen, als ob er direkt in die csh-Shell eingegeben würde. Dieser Ansatz richtet effektiv eine Shell-Umgebung ein und ermöglicht die Verwendung von Umleitungen und Pipes nach Bedarf.
Wenn auf Ihrem System csh nicht installiert ist, können Sie es wie folgt durch bash ersetzen:
Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
Das obige ist der detaillierte Inhalt vonWie kann ich Linux-Shell-Befehle mit Pipes und Umleitungen von Java ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!