Autor Thema: Kommandozeilendesign  (Gelesen 6874 mal)

bscreator

  • Gast
Gespeichert
« am: 27. February 2009, 20:04 »
Hallo OS-Coder,
bin grad dabei, meinem OS eine Kommandozeile mit ein paar Befehlen zu "spendieren".

Um zu erkennen, ob die Benutzereingabe einen gültigen Befehl darstellt, mach ich folgende Schritte:

1. Benutzereingabe mit den gültigen Befehlen vergleichen (vergleichen zweier Zeichenketten auf Gleichheit)
2. Falls ja, wird der gleichnamige Befehl ausgeführt
3. Falls nein, Fehlermeldung

Was macht ihr, um zu überprüfen, ob die Benutzereingabe einen gültigen Befehl darstellt ?

Grüßle,
bsc

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 27. February 2009, 23:38 »
Genau das.
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 28. February 2009, 10:38 »
Tjo wenn du Code sehen willst, dann musst du erstmal die Programmiersprache nennen bzw. eigentl. dürftest du mit so einer "Kleinigkeit" keine Probleme haben wenn du schon ein OS codest. Also ich würde noch an folgendes denken:

Die ersten und letzten Leerzeichen der Eingabe sollten übersprungen werden, damit z.B. eine Eingabe von "   ls" das Selbe ergibt wie "ls" oder auch "ls     ". Und natürlich sollte man daran denken, dass die ersten Leerzeichen nach dem Befehl die Trennung von Befehl und Parametern signalisieren (vorausgesetzt es folgt noch etwas nach den Leerzeichen).

KA ob du zwischen Groß-/Kleinschreibung unterscheiden willst oder nicht. Ansonsten solltest du daran auch noch denken. Da gibt es zwei Möglichkeiten. Endweder du sorgst dafür, dass die Eingabe so umgewandelt wird dass du alles in Kleinbuchstaben hast und vergleichst es dann mit den Zeichenketten der Befehle, die dann auch nur aus Kleinbuchstaben bestehen dürfen oder du machst das Selbe nur mit Großbuchstaben. Im Grunde ist das egal.

Und was soll passieren wenn man gar nichts eingibt (nur Enter drückt oder vorher nur Leerzeichen eingegeben hat). Evtl. eine Ausgabe dass es die Datei/den Befehl nicht gibt (also so als ob was falsches eingegeben wurde) oder halt einfach einen Zeilensprung machen. Wie du es haben willst.

Tjo woran sollte man sonst noch denken? KA, fällt mir jetzt so schnell nichts ein. Ihr könnt ja ergenzen falls euch noch was einfällt.

bitmaster
In the Future everyone will need OS-64!!!

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 28. February 2009, 13:51 »
vieleicht noach das, wie die ggf benötigten Parameter an das programm übergeben werden.

auch mal darüber gedanken machen, welche zeichen für ein komando überhaupt zugelassen sind. dann kann man sich ggf das suchen sparen.

bscreator

  • Gast
Gespeichert
« Antwort #4 am: 28. February 2009, 20:44 »
Gute idee, danke euch allen

jgraef

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 04. March 2009, 19:25 »
Im Prinzip muss die Eingabe nur in einen Vektor gelesen werden. Das gestartete Programm bekommt das dann als argv. argv[0] gibt das Programm an (muss z.B in /bin gesucht werden).

Man kann natürlich auch noch Pipes und alles mögliche einbauen, aber das macht bestimmt viel Arbeit. Eine Lösung wäre es, sowas wie bash zu portieren.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 05. March 2009, 00:56 »
Naja, Pipes zu parsen dürfte machbar sein. Interessanter ist es, sie umzusetzen - und das muß man auch, wenn man "nur" eine bash portiert.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

jgraef

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 05. March 2009, 17:17 »
Naja es geht ja nicht nur um Pipes. Implementieren muss man das dann natürlich immer noch. Aber das muss man sowieso.

 

Einloggen