Lowlevel

Lowlevel => OS-Design => Thema gestartet von: bscreator am 27. February 2009, 20:04

Titel: Kommandozeilendesign
Beitrag von: bscreator 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
Titel: Re: Kommandozeilendesign
Beitrag von: Jidder am 27. February 2009, 23:38
Genau das.
Titel: Re: Kommandozeilendesign
Beitrag von: bitmaster 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
Titel: Re: Kommandozeilendesign
Beitrag von: Termite 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.
Titel: Re: Kommandozeilendesign
Beitrag von: bscreator am 28. February 2009, 20:44
Gute idee, danke euch allen
Titel: Re: Kommandozeilendesign
Beitrag von: jgraef 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.
Titel: Re: Kommandozeilendesign
Beitrag von: kevin 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.
Titel: Re: Kommandozeilendesign
Beitrag von: jgraef 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.