Wie erstelle ich eine eigene Shell?

... komplette Frage anzeigen

4 Antworten

was ist jetzt die Frage?

Ist diese Shell für deine eigene Linux-Distribution vorgesehen?

https://www.gutefrage.net/frage/kennt-wer-ein-paar-gute-namen?foundIn=user-profile-question-listing

Programmierer, wenn sie mal groß werden wollen, fangen klein an, dazu gehören dann Fleiß, Ausdauer, Probieren, Verwerfen, neu anfangen...

Wer aber schon andere nach einem Namen für seine eigene Distribution fragen muss, dem fehlt wohl doch etwas.


Wenn man wirklich eine eigene Shell ( im Sinne von äußere Schale ) schreiben will, dann fängt man an, alle gewünschten Funktionen aufzuschreiben. Dabei hört es sich lächerlich an, das Suchen nach  Befehlsnamen   ( wv , cd ... ) an exponierte Stelle zu setzen. Bei der Festlegung solcher Namen ( Buchstaben-Kombinationen) wirst die immer Kompromisse abschließen müssen, denn wv ist dann schon für Arbeitsplatz

"w
ütend verlassen"

 vergeben.


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
22.08.2015, 11:29

Nein es ist nicht fuer meine eigene Distribution. Und den Namen meiner Distrubution ist mir am ende alleine eingefallen... Irgendwie (ist so) hast du recht, diese Fragen zu den Namen sind unnoetig. Meine Linux Distribution sollte Linux Nista heissen, habe das Projekt aber verworfen, es war nachher einfach zu unfertig und instabiel.

Ich weiss das es sich echt laecherlich anhoert mit, ich suche Namen und so, aber manchmal faellt mir echt nichts ein weil ich mit dem Code beschaeftigt bin.

Das mit den Befehlen ist ja so ne Sache, im Sinne von "vw" meine ich "Verzeichnis Wechseln" (in Latein: "Mutatio Presul", also "mp").

Ich habe auh schon nachgedacht ob ich das mit Latein machen will, da ich die Sprache so mag. 

Das mit dem Programmieren stimmt und ich habe noch viel for mir. Das ich so manche Programme versucht habe zu entwickeln und du sehen wirst das ich noch ganz unten bin versuche ich mal was neues. Denn ein Programm das mit der DOS Box (Windows CMD) kommuniziert habe ich schon mal geschrieben. Wie du gesagt hast, ich versuche es nur, wenn es klappt (also das Programm mit der Shell kommuniziert und die Shell antwortet) gehe ich weiter.


Ich kann erst (falls es noch eine rueckmeldung gibt) inj c.a. 3 Tagen antworten.

0
Kommentar von gerlochi
15.10.2015, 21:22

bin spät drann aber, keine bessere shell, sondern eine eigene ;). ne bessere ist für mich fast unmöglich

0
Kommentar von gerlochi
15.10.2015, 21:23

und neeigene programmiersprache, so verrückt bin ich dann auch nicht

0

Hallo

ich moechte gerne eine eigene Shell mit..... Java Programmieren! ;)

Das ist doch Unsinn, JAVA ist eine Laufzeitumgebung, während eine Shell direkt mit dem Kernel interagiert. Ich glaube kaum dass das Deine Absicht ist.

Ist es moeglich mit Eclipse eine Java-Konsolen Aplikation zu erstellen?

Bitte sehr:

Beschreibung: SWT is the software component that delivers native widget functionality for the Eclipse platform in an operating system independent manner. It is analogous to AWT/Swing in Java with a difference - SWT uses a rich set of native widgets.

.

Wie mache ich wenn 1 klappt die Ausfuehrung des Befehls? ALso ich weiss das ich es mit if mache, also falls der Scanner gleich (zb) "vw "+d dann soll in das verzeichnis von D gewechselt werden. In C ging das immer mit System("CD"); oder so, aber wie in Java?

  1. Das hängt doch davon ab welche Kommandos Du Deiner Shell beibringst.
  2. Weißt Du denn was das Wort if übersetzt heißt?
  3. Der "Scanner" ist ein Wert!

DESCRIPTION:

The if command evaluates expr1 as an expression (in the same way that expr evaluates its argument).

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
21.08.2015, 23:11

Danke

Manchmal machen mich deine verbesserungen echt wuschig :D. Ich bin erst ** Jahre! Naja :D

Und keine richtige Shell, nur sozusagen ein Schwarzes Fenster das meine eigenen Befehle iuebersetzt und zum Terminal rueberschickt, das dann eine antwort gibt.

Naja also if hoer sich wie falls oder wenn an. Und ich weiss das der Scanner ein Wet ist. ich dachte mir das so:

d ist ein String und ich habe es mal ohne den ganzen schnickschnack vor Scanner  = new Scanner gemacht (nachher mach ich es richtig).

Scanner s = new scanner
if(s=="vw"+d){
CODE DER DAs VERZEICHNIS ZU D WECHSELT
}
0

1 Geht, habe ich schon oft gemacht (viele Lösungen auf programmieraufgaben.ch sind Java-Konsole-Lösungen)

2. Dazu musst Du die Zeilen "parsen" also "vw XYZ" wird auseinandergenommen (entweder mit "split", einer REGEX, einem String-Tokenizer, der APACHE-CLI-Library oder von Hand, wie es Dir am Besten behagt). Danach kannst du die Java-File-Befehle aufrufen z. B. "new File("XYZ")", listFiles, ... was es halt so in "java.io.File" gibt. Das aktuelle Verzeichnis kannst Du ja immer in der Konsole vor dem Befehl angeben, damit der Benutzer auch weiß, wo er gerade steht. Ob es schlauer ist, das CurrentWorking Directory zu verschieben, oder einfach ein globaler String mit dem aktuellen Verzeichnis abzuspeichern, weiß ich nicht. Müsste ich erst etwas ausprobieren. Die zweite Variante [String akt = new File(".").getAbsolutePath() oder ähnlich] muss in jedem Fall funktionieren.

3. Hier einige Vorschläge
vw: Verzeichnis wechseln
bnw: bilde neues Verzeichnis
kill: löschen (Achtung nicht ganze Verzeichnisse, sonst legst Du Dir noch ein Ei)
list: Verzeichnis Inhalt ausgeben
listr: Verzeichnis rekursiv ausgeben
list *.txt: Pattern-Suche
schieb a b: schiebe Datei 'a' ins Verzeichnis 'b/'
find <pattern>: Suche rekursiv nach allen Files und Ordnern mit dem pattern

Die Frage auch, ob es nicht einfacher ist, die Linux-Shell-Befehle aus Java heraus aufzurufen, dann brauchst Du unter Umständen nicht einmal neue Namen zu erfinden und hättest eine sehr mächtige Shell, welche Du um Deine eigenen Befehle ergänzen könntest.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
21.08.2015, 23:13

Danke das ist sehr hilfreich!

0
Kommentar von GWBln
22.08.2015, 19:19

Wenn Du Kurzformen für beliebige Kommandos haben willst, kannst du das mit alias erledigen, z.B.

alias md='mkdir -p'
alias mv='mv -viu'
alias ScanDevices='find /dev/disk/ -exec ls -l {} \; |grep dev/disk'

Das Erste ist eine Konzession an DOS/Windows,
das Zweite gibt dir etwas Sicherheit beim Bewegen/Umbenennen.

Damit funktionierende Aliase nicht -- nach Neustart -- immer wieder neu eingegeben werden müssen, packe sie in die Datei

$HOME/.alias bzw $HOME/.bash_aliases

und überprüfe, ob eine dieser Dateien auch aktiviert wird. Kandidaten:

.profile
.bashrc

0
Kommentar von gerlochi
21.10.2015, 06:43

@phigeek Habe meine eigene Shell nun fertig! Aber mit C#. Leiser kann man sie dann unter Linux nicht benutzen :(

0

1. Verwechsel nicht Shell mit Konsolenprogramm. Ein Konsolenprogramm läuft auf der Shell.

2. Es ist problemlos möglich, aber ich fürchte, du bist noch lange nicht so weit.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
22.08.2015, 11:33

2. Es ist problemlos möglich, aber ich fürchte, du bist noch lange nicht so weit.

Naja mal sehen, eine eigene richtige echte Shell wird es ja nicht sondern nur ein Kommunikations-Programm zwischen der Shell und meinem Programm, es uebersetzt meine Befehle zu den Shell befehlen und sagt es ihr denn.


0
Kommentar von gerlochi
15.10.2015, 21:27

jop

0
Kommentar von gerlochi
21.10.2015, 06:43

FERTIG ;)

0

Was möchtest Du wissen?