1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

shellscript starten in KDE

    • Linux
  • stephan007
  • 4. Juli 2006 um 14:19
  • Unerledigt
  • stephan007
    4
    stephan007
    Mitglied
    Punkte
    175
    Beiträge
    28
    • 4. Juli 2006 um 14:19
    • #1

    Hi!

    Ich würde gern folgendes tun: Ich hab eine Hand voll shellscript und will die nicht im shell selbst mit ./script starten. Ich will mir am Desktop Symbole anlegen, hinter denen die Scripts stehen. Soll heißen, wenn ich das Script starten will, dann klicke ich auf das entsprechende Icon.

    Bis jetzt habe ich es so weit gebracht, daß ich ein Start angelegt hätte. Das Problem dabei ist aber nur, daß die die Frage bekomme, was ich mit der Datei machen will mit Auswahl "im Shell ausführen", "Anzeigen", "Abbrechen" und "Ausführen". Außerdem verschwindet das Shell (nach "im Shell ausführen") sofort wieder. Meine zwei Probleme sind also:

    1) wie verhindere ich diese "Zwischenmeldung"?
    2) wie kann ich dafür sorgen, daß das Shell offen bleibt?

    ich will hier die Funktionalität erreichen, wie ich sie mit dem bereits offenen Terminal und ./script erreiche.

    Die Dialogboxen bieten mir hierfür keinerlei Einstellmöglichkeiten. Wie kann ich das dennoch erreichen? Also Klick aufs Icon und Ausführung des Scripts in offenem Terminal, daß ich die Ausgabemeldungen sehe bzw. daß die Befehle nicht sofort terminiert werden.

    Danke!

    Lg,
    Stephan.

  • [fl]Quel`Tos
    12
    [fl]Quel`Tos
    Mitglied
    Reaktionen
    14
    Punkte
    1.384
    Beiträge
    262
    • 4. Juli 2006 um 15:08
    • #2

    Also wenn du ein Shellscript schreibst und dann ausführst wird eine shell gespawnt, in der das script läuft und die wird natürlich gleich wieder geschlossen, wenn das script aus ist.
    D.h. wenn du was zurückgeben willst das länger dastehn soll, dann schreibst du das explizit ins script (z.B. einfach ein read o.ä.)
    ODER du willst eigentlich ein Terminal aufmachen und halt gleich nach aufmachen dein Script laufen lassen. Dann kannst das script sicher irgendwie als Argument angeben. Müsst ich aber jetzt selbst nachschaun (=> man bash/sh/whatever).

    Aja.. die Zwischenmeldung hab ich jetzt vergessen. Probiers mit einem symbolic link in deinem .desktop-verzeichnis. (od. gibts bei KDE nicht eh sowas wie eine Verknüpfung wie in Win auch?). Müsst ich jetzt auch nachschaun. Ich sags dir wenn ich zufällig wieder mal im KDE vorbeikommen sollte :winking_face:

    Let us be thankful we have commerce. Buy more. Buy more now. Buy. And be happy.

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 4. Juli 2006 um 15:11
    • #3

    Der zweite Teil ist einfacher zu beantworten:

    Code
    read -p "Bitte Taste druecken..."


    als letzte Zeile in dein Script geben.

    Der erste Teil lässt sich auch irgendwie machen, ich komm aber grad nicht drauf, wie... es geht jedenfalls manuell auch, in der .desktop Datei muss der Exec-Eintrag "konsole -e dein_script" sein...

    Dipper dipper dii dipper dii dipper dii duuu

  • gelbasack
    25
    gelbasack
    Mitglied
    Reaktionen
    90
    Punkte
    6.525
    Beiträge
    1.241
    • 4. Juli 2006 um 15:11
    • #4

    xterm -e "/usr/bin/script && read dummy"
    Sowas?

    Na gehhhh, ich bin ja der allerletzte :frowning_face:

  • stephan007
    4
    stephan007
    Mitglied
    Punkte
    175
    Beiträge
    28
    • 4. Juli 2006 um 15:35
    • #5
    Zitat von [fl]Quel`Tos

    Also wenn du ein Shellscript schreibst und dann ausführst wird eine shell gespawnt, in der das script läuft und die wird natürlich gleich wieder geschlossen, wenn das script aus ist.
    D.h. wenn du was zurückgeben willst das länger dastehn soll, dann schreibst du das explizit ins script (z.B. einfach ein read o.ä.)
    ODER du willst eigentlich ein Terminal aufmachen und halt gleich nach aufmachen dein Script laufen lassen. Dann kannst das script sicher irgendwie als Argument angeben. Müsst ich aber jetzt selbst nachschaun (=> man bash/sh/whatever).



    Nun, ich hab z.B. ein script geschrieben, das mir 5 Programme nacheinander startet. Alle diese Programme geben selbst Statusmeldungen aus, z.B. wenn ein Datenpaket verarbeitet wird und damit eine Aktion in einem Programm auslöst. Wenn also das Skript im laufenden Terminal gestartet wird, dann sehe ich laufend Unmengen an Statusmeldungen, bis ich alle Programme terminiere. Läßt sich mit einem "ping -t xxxx" vergleichen. Sowas in der Art machen meine Programme. Und das soll im Terminal natürlich zu sehen sein, sonst machts ja keinen Sinn, das auszugeben. Ganz abgesehen davon, daß eines dieser Programme ein GUI startet, welches natürlich sonst auch gleich wieder weg wäre, bevor ich noch irgendwas dabei machen kann.

    Daher ist der Tip gut gemeint auf eine Eingabe mit Read zu warten, hilft aber leider wohl nicht weiter, weil das vielleicht meine Programme sperrt, solange nicht eingegeben wird, oder?

    Also kurz gesagt, ich habe mehrere Programme, wobei eines ein GUI startet, die anderen ständig output a la "ping -t" liefern. Und das will ich sehen, bis ich die Programme beende.

    Ich hab zwar auch einige Skripts, die mir einfach Dateien von A nach B kopieren bzw. austauschen, da störts mich ja nicht, wenn das Terminal gleich wieder zu ist. Aber genau bei dem einen Skript (das ich sinnigerweise startall.sh getauft habe) ist das kontraproduktiv.

    Lg,
    Stephan.

  • eaglo
    3
    eaglo
    Mitglied
    Punkte
    80
    Beiträge
    15
    • 6. Juli 2006 um 14:37
    • #6

    also am besten machst du folgendes:
    A,B sind deine skripte die du ausführen willst
    start ist das startskript

    in start steht:
    #!/bin/bash
    gnome-terminal --command="A"
    gnome-terminal --command="B"

    das startet 2 terminal mit deinen skripten drin (das sie automatisch beenden kannst du - wie sauzachn schon geschrieben hat - mit "read -p "Bitte Taste drücken ..." in A bzw. B abfangen)

    das ganze is jetz zwar für das gnome terminal (hab kein KDE) aber das sollte mit der "Konsole" im prinzip auch funktionieren :)

    damit die meldung mit mit dem anzeigen nicht kommt erstellst du einfach einen starter (eine verknüpfung) auf das startskript ...

    mfg

    -~-~ "Wenn du nicht irrst, kommst du nicht zu Verstand!" ~-~-

  • stephan007
    4
    stephan007
    Mitglied
    Punkte
    175
    Beiträge
    28
    • 7. Juli 2006 um 09:43
    • #7
    Zitat von eaglo

    das startet 2 terminal mit deinen skripten drin (das sie automatisch beenden kannst du - wie sauzachn schon geschrieben hat - mit "read -p "Bitte Taste drücken ..." in A bzw. B abfangen)



    das sonderbare ist hier allerdings: Wenn ich dieses read -p Kommando am Ende des Skripts reinsetze, passiert garnichts, das Fenster geht trotzdem zu, so als ob ich diese Zeile erst garnicht drinnen hätte.

    Wenn ich die Befehlszeile aber direkt ins Terminal schreibe, dann gehts. Bzw. wenn ich das Skript direkt im Terminal starte ...

    Verstehe ich zwar nicht ganz. Was ich mir momentan überlege ist, ob man mit sleep() das schließen verhindern kann, allerdings glaub ich, daß ich damit wohl auch meine Tasks schlafen schicke :frowning_face:

    Mal schauen, ob ich aus dem einen Script ein anderes aufrufen kann, welches mir das Schließen des Fensters unterbindet ...

    Stephan.

  • eaglo
    3
    eaglo
    Mitglied
    Punkte
    80
    Beiträge
    15
    • 7. Juli 2006 um 13:56
    • #8

    also ich hab jetz angenommen dass das mit dem read -p funktioniert :) ...
    probier einfach mal:

    print "Bitte eine Taste drücken"
    read

    sollte auch gehn ...

    -~-~ "Wenn du nicht irrst, kommst du nicht zu Verstand!" ~-~-

  • stephan007
    4
    stephan007
    Mitglied
    Punkte
    175
    Beiträge
    28
    • 7. Juli 2006 um 14:57
    • #9

    also ich hab das nun so gelöst (zwar nicht elegant, aber es geht trotzdem):

    xterm -e sh -c "script.sh; sh"

    dann hab ich zwar auch ein leeres Terminalfenster aber so funkts, wenn auch wie gesagt nicht elegant. Aber ich will damit ja keinen Schönheitspreis gewinnen. Wenns doch anders geht und das besser aussieht, dann klarerweise bevorzugt!

    Danke jedenfalls für alle Tips!

    Lg,
    Stephan.

  • Maximilian Rupp 27. Dezember 2024 um 00:11

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern