hallo,
ja ich weiss bin anfänger in shell skripten
wollte ein skript schreiben, dass den plattenplatz ausgibt. durch einen mausklick auf ein programm am desktop.
das programm sollte in der konsole das ergebnis anzeigen.
leider startet die konsole nicht..
was hab ich gemacht:
ein textfile erstellt..name ist "plattenplatz"sieht so aus
#!/bin/bash
/usr/bin/df -h
die erste zeile hab ich frei gelassen.
wenn ich plattenplatz aufrufe in der konsole..klappt alles.
nur am kde desktop..rechte maustaste..verknüpfung zu neuem programm ...pfad eingeben /usr/bin/plattenplatz..dann noch angekreuzt in terminal ausgeben...ausführbar...aber es startet nicht..wenn ich terminal ausgeben nicht ankreuze, startet es auch nicht
in der konsole sieht das so aus..
root:# ls -l /usr/bin/plattenplatz
-rwxr-xr-x 1 ich ich 25 2008-01-22 01:58 /usr/bin/plattenplatz*
der pfad ist auch in der variablen drin...
was hab ich falsch gemacht?
gruss günter
Linux 15.070 Themen, 107.540 Beiträge
Wenn ich nicht so genau Bescheid weiß über ein Unixdienstprogramm , dann probier ich diesen Befehl erstmal in der Konsole aus.
Wenn du mehrere Befehlszeilen in der Konsole testen willst, die hintereinander ausgeführt werden sollen, dann trennst du die Befehle mit einem Semikolon:
Befehl 1 ; Befehl 2 ; Befehl 3
Soll ein Befehl ausgeführt werden nach dem der erste Befehl erfolgreich ausgeführt wurde, kannst du zwei Kaufmanns UND zwischen die beiden Befehle schreiben:
Befehl 1 && Befehl 2 && Befehl 3 ....
Zurück zum Script:
Um Programme auszuführen die in der Konsole laufen sollen, mußt du diese Programme in einem Terminalfenster starten.
Es gibt verschiedene Terminalfenster (emuliert ein X Terminal):
-konsole
-gnome-terminal
-xterm
man konsole:
....
-e
Hallo Günter,
so kann das nicht funktionieren. Die Desktop-Verknüpfung musst Du für das Terminalprogramm Deiner Wahl anlegen und diesem Dein Skript (oder, weil es sich hier um einen Einzeiler handelt, einfach den '/usr/bin/df -h'-Befehl) als Parameter zum Ausführen übergeben. Mit welcher Option das geht, steht wohl in der Dokumentation des Programms. Bei xterm ist es glaube ich -e. Ohne Gewähr.
Gruß
Rheinlaender
Edit: Das hat Karsten ja schon geschrieben, war nicht so leicht zu finden, die Quintessenz.
irgendwie klappt das nicht....
hab jetzt die desktopverknüpfung für konsole angelegt.
hab nachgeschaut..mit "-e" kann man einen befehl ausgeben lassen.
nur wo schreib ich den hin?
unter befehlspfad hab ich "/usr/bin/plattenplatz"
okay da kommt die konsole..passt
und der befhl? "/usr/bin/plattenplatz -e df -h
das terminalfenster kommt für 2 sekunden und verschwindet dann..
irgendwie ist mir das noch nicht klar, wo ichden parameter eingeben soll (dieses -e)
"/usr/bin/xterm -e df -h"
Dein Problem ist aber ein KDE-Problem, kein Shellskript-Problem :-)
geht nicht
"/opt/kde/bin/konsole -e df -h" hab ich unter kommando eingegeben...habs auch mit backticks versucht..nichts.
die konsole startet einfach nicht
wenn ichs im terminal aufmachen lass (hakerl setzen im dialog) bekomm ich eine fehlermeldung
Konsole kann kein PTY (Pseudo Teletype) öffnen. Dies liegt wahrscheinlich an einem Fehler in der Einrichtung der PTY-Geräte. Konsole benötigt Lese- und Schreibzugriff auf die PTY-Geräte.
hab dann ein bisschen gegoogelt...mit mount -a sollte es dann wieder gehen..bei mir leider nicht.
in der fstab ist das devpts dateisystem auch gesetzt...
irgendeine idee?
Für diese Pseudoterminals gibt es im /dev Verzeichnis Gerätedateien
Bei mir (Debian Distribution) haben alle /dev/pty?? Gerätedateien Lese - und Schreibrechte für Jedermann:
dir -l /dev/pty??
crw-rw-rw- 1 root tty 2, 176 2008-01-22 18:22 ptya0
crw-rw-rw- 1 root tty 2, 177 2008-01-22 18:22 ptya1
crw-rw-rw- 1 root tty 2, 178 2008-01-22 18:22 ptya2
crw-rw-rw- 1 root tty 2, 179 2008-01-22 18:22 ptya3
crw-rw-rw- 1 root tty 2, 180 2008-01-22 18:22 ptya4
crw-rw-rw- 1 root tty 2, 181 2008-01-22 18:22 ptya5
crw-rw-rw- 1 root tty 2, 182 2008-01-22 18:22 ptya6
crw-rw-rw- 1 root tty 2, 183 2008-01-22 18:22 ptya7
crw-rw-rw- 1 root tty 2, 184 2008-01-22 18:22 ptya8
crw-rw-rw- 1 root tty 2, 185 2008-01-22 18:22 ptya9
crw-rw-rw- 1 root tty 2, 186 2008-01-22 18:22 ptyaa
crw-rw-rw- 1 root tty 2, 187 2008-01-22 18:22 ptyab
.......
Im Linuxkernel gibt es auch verschiedene Optionen die aktiviert müssen , damit diese Pseudoterminal funktionieren.
@Rheinlaender. Das stimmt schon das meine Antworten etwas ausführlich sind. Dafür ist aber dann auch die Redundanz etwas größer.
Was passiert, wenn du einen Starter für konsole anlegst, ohne weitere Parameter zu übergeben?
als starter funktioniert konsole auch nicht..
normal kann ich sie im menü aufrufen...
verstehen wir uns richtig:
hab ein untermenü mit menüeditor erstellt und den pfad zu konsole eingegeben..das ist mein starter
Wenn du das Programm konsole installiert hast, dann wird unter KDE ein Untermenü automatisch eingerichtet wo du Konsole starten kannst.
Geht das nicht ?
Erstelle doch einfach eine Desktopverknüpfung:
Rechte Maustaste-->Neu erstellen-->Verknüpfung zum Programm und da gibst du die entsprechende Befehlzeile an (mit oder ohne Hochkommas, weiß ich nicht so genau)
konsole geht..
aber mit dem kommando nicht
verknüpfung am desktop mit konsole kein problem...aber der befehl in der befehlszeile wird nie angenommen (das -e df)
egal ob mit hochkomma oder ohne...
Kann sein das die Parameter für den Befehl konsole in Hochkommas gesetzt werden müssen:
/usr/bin/konsole "-e......"
die konsole taucht max. 2 sec auf..und dann ist sie weg.
egal wie ich den befehl eingebe (mit oder ohne hochkomma)
Ja, das ist normal.
Der Befehl wird abgearbeitet, das Programm konsole beendet und damit ist alles vorbei.
Wenn dein Shellscript funktioniert, mußt du mal am Ende des Shellscriptes
ein
echo "Beenden mit ENTER"
read ENDE
exit 0
einfügen.
Der BASH Befehl read wartet auf eine Tastatureingabe und speichert sie in der dahinter angegeben Variable ab. Wenn dann der Anwender die ENTER Taste drückt, wird die Eingabe übernommen. In diesem Fall brauchst du nur die ENTER Taste drücken.
Besorg dir mal ein Buch über Shellprogrammeirung mit der bash. So wird das nie was.
okay..
danke karstenw..
funktioniert.
ich glaub ich muss wirklich ernsthaft mit shellprogrammierung anfangen...
Shellprogrammierung ist nicht schwierig. Ich hatte mir früher mal die Vorgängerversion von diesem Buch gekauft:
Shell-Programmierung für Unix und Linux. Grundlagen, Werkzeuge und praktische Skripte (Gebundene Ausgabe)
von Rainer Krienke (Autor)
http://www.amazon.de/Shell-Programmierung-Grundlagen-Werkzeuge-praktische-Skripte/dp/3446407375/ref=sr_1_1?ie=UTF8&s=gateway&qid=1201195373&sr=8-1
Ich glaube ich hatte dir es schon mal empfohlen. Für die ersten Gehversuche ist es nicht schlecht geschrieben.
Das größere Problem bei Shellprogrammierung sind die sehr viele Unixdienstprogramme , gerade wie der sed (Stream Editor) oder awk.
Die Struktur von einem Shellscript ist relativ simple. Die Shellscripte für die BASH erinnern schon ein wenig an C-Programme.
Man hat Programmsteueranweisungen wie for - , until - , while - Schleifen. Man kann auch Funktionen schreiben.
Bei DOS / Windows gibt es die Batchprogrammierung. Die Bash läßt sich besser programmieren als die Batchdateien von DOS/Windows.
Unixrechner werden alle mit Shellscripte beim Hochfahren des Betriebssystems konfiguriert. Mit Shellprogrammierung läßt sich wirklich viel machen.
hab mir heute in einer buchhandlung das buch angeschaut..
kostet bei uns (österreich) 38 euro...ist die 3 auflage..und wirklich gut geschrieben, was ich so durchblättern konnte.
da bin ich ja bei amazon mit versand billiger dran..kommt auf 33 euro mitversand..
danke für den tip
gruss günter
