Shell entwickeln

TRex

Mitglied
Hallo,
ich beabsichtige eine Shell (ähnlich der BASH) mit wenigen Kommandos zu entwickeln. Hat jemand eine Idee oder Lösungsansatz? Gibt es evtl. Sourcecode den man übernehmen oder partiell verwenden kann? Die Suche mit Google "Bash / Shell entwickeln" hilft leider nicht.
 
Was heißt mit wenigen Kommandos? Sollen das eigene Kommandos werden?

Da ich nicht genau weiß, was du alles mit deiner Shell abdecken möchtest, bin ich mir nicht sicher, ob Java die richtige Sprache dafür ist. In C++ würdest du neben Funktionen für das Einlesen von Strings und einer entsprechenden Ausgabe auf jeden Fall die Befehle fork(), execv() und wait brauchen. Mit fork wird ein Kindprozess erzeugt. Auf dem so entstandenen Adressraum kannst du mit mit execv() "rumarbeiten". Wird das Kind wieder beendet, müsste dieses evtl von einem Signal-Handler gemeldet und anschließend eingesammelt werden. Da ein Prozess mehrere Kinder erzeugen kann und diese evtl auch im Vorder- oder Hintergrund laufen, wird auch noch wait() benötigt.
Literatur habe ich nicht zur Hand, die genannten Befehle sind keine Java-Befehle.
 
Meinst du mit wenigen Kommandos auch das Auswerten von mathematischen Ausdrücken. z.B. a=a+1
falls ja kommst Du nicht umhin eine Parser zu schreiben. Ich arbeite gerade an einem kleinen Rechner, der mathematische Ausdrücke versteht und habe mich für einen handgeschriebenen Lexer und Parser entschieden. Es gibt dafür auch Tools wie Lex & Yacc. Für Java gibt es z.B. den Parsergenerator JavaCC.
Ich selbst habe diesen noch nicht verwendet. Hier der Link https://javacc.java.net/
 
Vielen Dank für eure Antworten!
In meiner Oberfläche mit Eingabeprompt möchte ich eingegebene Kommandos nach drücken der Entertaste ausführen.

Beispielhaft möchte ich ein paar Kommandos aufführen, die auf jedenfall funktionieren müssen.
  • echo
  • ls
  • pwd
  • cat
  • wc
  • clear
  • |
  • >
  • >>
  • <
Mathematische Ausdrücke möchte ich auch nach BASH-Style auswerten, z.B. echo $((4+3))
Für die aufgeführten Kommandos beabsichtige ich jeweils eine eigene Klasse schreiben, ich habe gehofft, dass jemand bereits Erfahrungen in diesem Gebiet hat bzw dass es evtl. quelloffenen Sourcecode gibt. Man musss ja nicht alles neu erfinden... 😉
 
@thecain: vielen Dank für Deine Infos.

Als Hintergrundinfo, ich möchte ein Übungsprogramm zur Vorbereitung auf die LPIC erstellen. Ich finde es wann man die Themen an einer Konsole übt, statt viel lesen und Ankreuzfragen beantworten. Daher meine Frage...
 

Zurück
Oben