ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
1977
1977
EMPFEHLEN
-
Hallo,
ich habe ein Shell-Script in einer Datei abgespeichert. Wenn ich das Script aus einem Terminal heraus aufrufe, ist alles ok. Wenn ich das Script mit einem Doppelklick starte, dann macht das Script eigentlich auch, was es machen soll, aber es oeffnet sich kein Terminal-Fenster, sodass man z.B. die Ausgaben von echo nicht sehen kann. Wie kriege ich das hin, dass das Terminal-Fenster sichtbar ist?
Dankie schoen!
-
Hi!
Welche Arbeitsumgebung benutzt Du?
Im Wesentlichen musst du nichts weiter tun als ein zweites Skript schreiben, dass einen Terminal-Emulator startet und die eigentliche Aufgabe erfüllt.
Ungefähr so:
Code :1 2 3 4 5 6 7 8 9 10 11
lenny:~/test$ chmod +x startup.sh aufgabe.sh lenny:~/test$ cat startup.sh #!/bin/sh [B]x-terminal-emulator -e[/B] ./aufgabe.sh lenny:~/test$ cat aufgabe.sh #!/bin/sh echo "Teeeeeeeeeeeest!" read # wichtig, ähnlich dem "@pause" in dos... lenny:~/test$
Jetzt einfach auf startup.sh anstelle von aufgabe.sh klicken.
Allerdings kann sich der Fett gedruckte Teil bei Dir auch unterscheiden - ja nachdem, wie das Ding bei Dir heisst und was es für Parameter erwartet.
Übrigens kannst Du bei den meisten Umgebungen in den Menüleisten Buttons platzieren, die einen Shell-Befehl ausführen.
In diesem Fall würde das startup.sh Skript wegfallen - einfach die Zeile als Button basteln...
Gruß
Enum
-
Dein Beispiel hat super funktioniert, danke! Ich benutze uebrigens Ubuntu (Gnome).
Der einzige Hacken dabei: mir gefaellt die zweite Datei nicht
Ich bin es von Windows gewohnt, dass man einfach irgendeine Batch-Datei, die irgendwas macht, irgendwo liegen hat, und wenn man sie anklickt, dann oeffnet sich ebe das cmd-Fenster und das Script laeuft durch.. Das ist ja bloed, dass das bei Linux so nicht geht
Das heisst dann ja, wenn ich viele Shell-Scripte rumliegen habe und zu jedem noch ein Startup-Script erstelle, dass dann ziemlich schnell die Uebersicht weg ist.
Gruss.
-
Wenn ich bei Ubuntu eine ausführbare Datei auf den Desktop lege und einen Doppelklick auf diese ausführe, dann erscheint eine Dialogbox, bei der man u.a. auch auswählen kann, dass die Datei in einem neuen Terminal ausgeführt werden soll. Ist das bei dir nicht so?
Leg die Dateien einfach in deinem Heimverzeichnis (bzw. in einem Unterverzeichnis dessen) ab. Auf dem Desktop kannst du dann einfach einen Starter dafür erstellen (Rechtsklick auf den Desktop, Starter anlegen, Typ: Anwendung im Terminal). Dann leidet die Übersicht nicht und du hast deine Skripte alle an einem Ort gesammelt.
Grüße, Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Das WAR bei mir so und hat mich tierisch genervt, zum Glueck kann man das Abstellen: im Nautilus: Edit->Preferences->Behavior->Executable Text Files->Run executable text files when they are opened

hm, waere auch eine moeglichkeit, aber immernoch zu kompliziert.. Ich wollte das jetzt so loesen, dass ich das startup-Script ins /usr/bin/ legen, und dann die Dateizuordnung mache, dass alle .sh Dateien mit diesem Script geoffnet werden (der Dateiname wird dann als Argument uebergeben) bloss finde ich jetzt gerade nicht, wie man so eine Dateizuornung anlegt - ARGH!!
-
Das ist alles nicht so wild:
Code Gar kein:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
lenny:~/skripte$ cat termstart.sh #!/bin/sh SRCDIR=/home/enum/skripte x-terminal-emulator -e $SRCDIR/`echo "$0" | sed "s/.*\///"`.sh lenny:~/skripte$ cat hello.sh #!/bin/sh echo "Hello world!" read lenny:~/skripte$ su Passwort: lenny:/home/enum/skripte# ln -s /home/enum/skripte/termstart.sh /usr/local/bin/hello lenny:/home/enum/skripte# exit exit lenny:~/skripte$ hello lenny:~/skripte$
Eleganter wäre es aber, wenn Dein(e) Skript(e) via Parameterübergabe in der Lage sind ein Terminal-Fenster zu öffnen.
Obwohl, eher Geschmackssache, aber immerhin lernt man was dabei:Code bash:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
#!/bin/sh NUM=1 USETERM=0 VAR= USAGE="Echo world! Funktionsweise: $0 [-t] [-p ...] [--] ... -t Wenn -t genau ein mal übergeben wird, versucht das Skript ein neues Terminal-Fenster zu öffen. -p Optional: Irgendetwas das nach STDOUT geschrieben wird. -- Alles danach wird als Text behandelt. " while getopts "thp:-" OPTION do if [ "$OPTION" = "p" ] then NUM=`expr $NUM + 2` if [ "x$VAR" = "x" ] then VAR="$OPTARG" else VAR="$VAR $OPTARG" fi else NUM=`expr $NUM + 1` case "$OPTION" in t) USETERM=`expr $USETERM + 1`;; h) echo "$USAGE" && exit;; -) break;; esac fi done # Wenn genau ein -t dann im Emulator starten und 2tes -t anhängen if [ $USETERM = 1 ] then x-terminal-emulator -e $0 -t $@ exit $? fi # Vor dem -- sind Argumente, kein Text... until [ $NUM = 0 ] do shift NUM=`expr $NUM - 1` done # Die eigentliche Aufgabe if [ "x$VAR" = "x" ] then if [ ! "x$@" = "x" ] then echo $@ fi else echo "$VAR $@" fi # Status der Aufgabe zwischenspeichern RESULT=$? # Pause wenn im Emulator if (($USETERM>2)) then read fi exit $RESULT
Und schon quasi Perfekt wäre ein automatischer Start im Emulator getriggert durch Umgebungsvariablen:Allerdings habe ich spontan keine Idee wie man dafür sorgen könnte, dass Zeile 9 nur in einem explizit gestarteten Fenster ausgeführt wird.Code bash:1 2 3 4 5 6 7 8 9 10
#!/bin/sh if [ "$TERM" = "dumb" ] then x-terminal-emulator -e $0 $@ exit $? fi echo "Hello World!" RESULT=$? read exit $RESULT
Ausserdem bin ich mir nicht sicher ob alle Systeme beim Doppelklick auf ein Skript $TERM=dumb setzen.
Gruß
Enum
PS: Ist es nicht erbärmlich? Die highlight-Funktion hier im Forum kennt "bash" aber nicht "sh". Grund gütiger.
[EDIT]
Nach /usr/bin solltest Du übrigens nichts packen.
Nicht unter Linux, das ist der Paketverwaltung (apt und Konsorten) vorbehalten.
Für die eigenen Spielereien gibt es /usr/local/bin.Geändert von Enumerator (13.10.09 um 03:41 Uhr)
-
Hm, schaut schon alles interessant aus, aber das muuuuussss doch einfacher gehen! Ich will doch nur ein Shell-Script in einem Terminal-Fenster starten!!
)
Aber ich habe schon viel aus deinem Beispiel gelernt - bin naemlich noch ein Laie, was Shell-Scripting angeht, deine Beispiele zu sed und getopts weiss ich zu schaetzen!
Eine Frage noch: du hast ja getestet, ob eine Variable einen leeren String als Wert hat mit der Anweisung
Code :1
if [ "x$VAR" == "x" ]
in Windows Batch ging das immer mit
Code :1
if "%VAR%" == ""
geht das in bash nicht? Also sprich
Code :1
if [ "$VAL" == "" ]
-
Hi!
Frag mich nicht.
Das hab' ich mir vor langer Zeit angewöhnt aus irgendeinem Grund.
Ich glaube das gibt zumindest Portabilitätsprobleme.
Es kann aber auch einfach nur ein Mythos sein.
Oder stammt aus einer anderen Sprache.
Oder einer anderen Shell.
Oder gar DOS?!
Gruß
Enum
[EDIT]
Mir ist gerade eine Lösung für mein Problem oben bzw. Deines allgemein eingefallen.
Ohne "x"Code bash:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/bin/sh EMU=0 if [ "$TERM" = "dumb" ] then x-terminal-emulator -e $0 --an-argument-you-would-never-pass $@ exit $? else if [ "$1" = "--an-argument-you-would-never-pass" ] then shift EMU=1 fi fi echo "Hello World!" RESULT=$? if [ "$EMU" = "1" ] then read fi exit $RESULT
Geändert von Enumerator (13.10.09 um 19:38 Uhr)
-
"Mir ist so nebenbei die Loesung eingefallen"Mir ist gerade eine Lösung für mein Problem oben bzw. Deines allgemein eingefallen.


Ähnliche Themen
-
Terminal-Fenster automatisch schließen
Von DaRealMC im Forum Mac OSAntworten: 5Letzter Beitrag: 24.03.09, 20:21 -
Neues Fenster für neuen Inhalt erzwingen (window.open) auch wenn Fenster geöffnet
Von altox-de im Forum PHPAntworten: 2Letzter Beitrag: 19.08.06, 12:38 -
SWT Fenster erzeugt neues SWT Fenster
Von Loro im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 26.12.04, 15:13 -
link in popup fenster der neues fenster öffnet und bestehendes schliesst.
Von sunny79 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 18.11.04, 14:43 -
[neues fenster] Woher bekomme ich den Namen fürs Fenster ?
Von ureich im Forum HTML & XHTMLAntworten: 10Letzter Beitrag: 26.10.04, 08:14





Zitieren


Login





