Ich möchte das Terminal (Eingabeaufforderung) auf einem Linux-Rechner mit Java-Code öffnen. Ich weiß, wie man die Eingabeaufforderung in Windows öffnet. Der folgende Code habe ich in Windows verwendet
%Vor%Ich brauche das Gleiche in Linux.
Danke für deine Antworten. Ich möchte auch ein SH-Skript ausführen.
Ob der folgende Code funktioniert.
%Vor%Unter Linux gibt es eine Reihe von Terminalemulatoren , mit denen Sie mit verschiedenen Shells interagieren können. Jede Shell ist im Grunde ein Befehlsinterpreter, der Linux-Befehle versteht (GNU & amp; Unix-Befehle sind korrekter, nehme ich an ...). Ein Terminalemulator bietet eine Schnittstelle (Fenster) für die Shell und einige andere Möglichkeiten zur Verwendung der Eingabeaufforderung. Um ein Terminalfenster zu öffnen, müssen Sie lediglich Ihre Befehlszeichenfolge wie folgt ändern: -
%Vor%Die Grundannahme, die ich gemacht habe, ist, dass Sie xterm öffnen möchten, das auf fast jedem System verfügbar ist (natürlich mit installiertem X). Möglicherweise möchten Sie einen anderen Terminalemulator wie rxvt, eterm, aterm, gnome-terminal oder konsole öffnen. Die Befehlszeichenfolge kann auch so geändert werden, dass sie verschiedene Shells wie zsh verwendet. Ich schlage vor, dass Sie eine Ausnahme abfangen, falls das von Ihnen gewählte Terminal nicht vorhanden ist und behandeln Sie es, indem Sie den Benutzer bitten, es zu installieren. Eine bessere Lösung besteht darin, Befehlszeilenargumente für die von Benutzern bevorzugte Shell zu akzeptieren oder eine Konfigurationsdatei zu verwenden, die der Benutzer ändern kann, damit das Skript die Shell seiner Wahl öffnet.
Hinweis
1. Wie andere bereits erwähnt haben, befindet sich xterm (oder ein anderes Terminal Ihrer Wahl) möglicherweise nicht im angegebenen Pfad (/ usr / bin / ...) und wird möglicherweise nicht einmal installiert, so dass Sie möglicherweise einige verwenden müssen fancy command string (Bsp: pipelining find durch grep, um vor dem Start den Pfad zu xterm zu erhalten), was keine so gute Idee ist. Ich denke, der beste Weg ist, den Benutzer die ganze Sache konfigurieren zu lassen.
2.Ich habe einen Kommentar zu dieser Antwort erhalten (nach ypnos), was darauf hindeutet, dass ich die Verwendung von absoluten Pfaden vermeide und mich eher auf den Befehl in der Umgebungsvariablen PATH verlasse. Ich muss sagen, ich stimme zu. In diesem Fall sollte die Befehlszeichenfolge -
lauten %Vor%Sehen Sie sich den Kommentar an, da er auch auf das Problem mit der Verwendung von find aufmerksam macht.
Unter Linux gibt es keinen einzigen standardmäßigen "Terminal" -Befehl. Die verfügbaren Befehle hängen davon ab, welche GUI vorhanden ist (d. h. ob KDE oder Gnome usw.).
Sie sollten sich darauf verlassen können, dass xterm
vorhanden ist, aber auf modernen Linux-Varianten ist das nicht das Terminal der Wahl:
Natürlich ist "xterm" möglicherweise nicht in diesem bestimmten Pfad ...
xterm wird höchstwahrscheinlich auf den meisten Linux-basierten Betriebssystemen verfügbar sein und, falls vorhanden, in der Pfadvariablen gefunden werden.
Daher müssen Sie etwas wie folgt tun:
%Vor%Mit der Option -e kann entweder ein Skript oder ein anderes Programm aufgerufen werden, zum Beispiel: javac. In diesem Fall würden Sie eine Zuweisung machen wie: myScript="javac".
Sie benötigen den " ; le_exec"
-Teil, wenn das Fenster nach der Ausführung nicht sofort geschlossen werden soll, andernfalls verwerfen Sie es. Das Semikolon dient zum Trennen von Befehlen, und le_exec ist nur ein einfaches Skript, das darauf wartet, dass der Benutzer die Eingabetaste drückt.
Wenn Ihr Skript jedoch Argumente benötigt, müssen Sie die Zeichenfolge myScript by und Arrays of Strings ersetzen.
Ich denke, es wäre nett, wenn Ihre Anwendung die Standard-Terminalanwendung des Benutzers öffnet.
Leider scheint es keinen universellen Weg zu geben, es zu bestimmen.
Meiner Meinung nach ist die am meisten vorzuziehende Lösung (stoppen Sie, wann immer Sie etwas öffnen können):
Die Desktop-Umgebung des Benutzers und sein Standard-Terminal zu finden, könnte für Ihren Zweck zu kompliziert sein. Daher würde ich zwei letzte Optionen verwenden. Sie können die Anwendung von $ TERM mit folgendem Code ausführen:
%Vor%Es gibt nicht wirklich ein "das" Terminal. Was Sie wirklich wollen, ist Shell. Die meisten Linuxes verwenden BaSH als Shell, aber um auf der sicheren Seite zu bleiben, sollten Sie sich auf / bin / sh
beschränkenEdit: Hmm Ich habe die Frage wahrscheinlich missverstanden. Wenn Sie ein interaktives Terminal wünschen, sollten Sie ein Toolkit verwenden, das eine Komponente dafür bereitstellt.
Edit2: Vielleicht können Ihre Bedürfnisse von VTE bedient werden, die eine GTK + -Komponente für das Einbetten eines Terminals ist.
Ich würde auf jeden Fall eine einfache Möglichkeit bieten, den Pfad zum gewünschten Terminal an einem leicht zu bearbeitenden Platz zu konfigurieren. Zum Beispiel vielleicht in einer Konfigurations-XML-Datei.
Verschiedene Distributionen behalten dies an verschiedenen Stellen. Daher ist es am besten, die Dokumentation zur Verteilung für die Plattformen zu überprüfen, auf die Sie zielen (und zu dokumentieren, wie Sie diese ändern).
"/ usr / bin / xterm" sollte auf den meisten Maschinen sein, aber ich würde nicht unbedingt darauf wetten.
Da Sie davon ausgehen müssen, dass Sie fast nichts über das System wissen, auf dem Sie das ausführen, würde ich sagen, der kleinste gemeinsame Nenner wäre:
String-Befehl="/ bin / sh";
Zeichenfolge Befehl="sh";