Hi Leute!
Ich wollte mir ein Icon auf meinen Desktop legen, um ins Internet zu kommen. Der Befehl für die bash lautet:
"/usr/sbin/pppd call 1und1"
Ich dachte es reicht, wenn ich diesen Befehl in eine Datei mit der Endung .sh schreibe - hat aber leider nicht funktioniert. Wie geht\'s richtig?
Danke für alle Antworten!
Linux 15.070 Themen, 107.540 Beiträge
Unter Linux kann jede Datei, unabhängig von der Endung, ausführbar sein. Es muss also kein ".sh" am Ende deines Miniskriptes stehen, nur muss die Bash irgendwie wissen dass die Datei ausführbar ist. Dieses Attribut kann man mit "chmod u+x datei" vergeben.
Das Recht zum Ausführen hat geholfen - irgendwie auch logisch. Aber es funktioniert trotzdem nur mit der Endung .sh . Wenn ich die Endung weglasse, wird die Datei in KWrite geöffnet.
Ich bin nicht so das Bash-Frickler. ".sh" ist wohl ein Signal, dass es sich um ein Bashskript handel. Man könnte das wohl auch erzwingen in dem man "bash datei" ausführt.
Naja, egal. Problem gelöst.
das liegt dann vermutlich an kde, welches halt windows-like nach endung statt nach dateiheader einteilt.
ein bash Script sollte immer mit dem Pfad zur eigentlchen Shell beginnen.
z.B. (falls es sich um die Bash handelt)
#!/bin/sh
Dann wird diese auch als Script erkannt, unabhängig von einer eventuellen Extention !
In einem Shellsricpt soll immer in der ersten Zeile ein Pseudokommentar stehen , wie repi es schon gesagt hat. Dabei wird dann immer automatisch die entsprechende Shell gestartet, in welcher das Shellscript ausgeführt wird. Das stammt noch vom alten Unix von 1969 von Bell Lab. Ein Shellscript wird immer in einer neuen Shell ausgeführt, in einer sogenannten Subshell.
#!/bin/sh oder #!/bin/bash startet eine Bash (wenn das Shellscript für eine Bash geschrieben worden ist)
#!/bin/ksh startet eine Kornshell (von Solaris), wenn das Shellscript für eine Kornshell geschrieben worden ist
#!/bin/csh startet eine C-Shell , wenn das Shellscript für einen C-Shell oder eine erweiterte C-Shell geschrieben worden ist.
Die BASH (Born Again Shell) ist am beliebtesten unter Linux.
Hallo,
vielleicht liege ich als Newbie ja total falsch, aber unter KDE kann ich mit dem Kontextmenu eine "Verknüpfung zu einem Programm" erstellen. Programmname, inkl. Pfad und Parameter eingeben und ich kann auf den Batch / Skript ganz verzichten.
Gruß
heriL
Habe ich auch probiert. - Hat aber nicht geklappt, aber vielleicht habe ich mich auch nur zu blöd angestellt...
Aber irgendwie sollte es doch auch möglich sein...!?!
Ja, aber manchmal will man auch unter KDE mehr als nur ein Programm mit Übergabeparametern anstarten und dann nimmt man eben einen Script !
ggf. mal den Script im Terminal laufen lassen , um zu sehen, was passiert !
Das stimmt natürlich. Die Shellprogrammierung stammt aus Zeiten als es noch Terminals gab, die an Unixgroßrechner angeschlossen waren und sie dafür gedacht z.B. Konfigurationsarbeiten zu automatisieren. Sie wird aber auch benutzt um die Konfigurations des Rechners beim Hochfahren (Runlevels) zu automatisieren. Früher mußte man mehr mit den klassischen Unixbefehlen arbeiten. Das X-Windowssystem ist erst 1984 am MIT in Amerika entwickelt worden. Seitdem gibt es erst Workstation mit grafischer Benutzeroberfläche (KDE, fvwm2-Windowmanager ...).
Man kann mit der Shellprogrammierung diverse Arbeiten automatisieren,anstatt gleich ein Programm in C oder C++ zu
programmieren.
Bloß mal nebenbei.
Nur wenn man sein Linux System wirklich ernsthaft selbst administrieren will und am persönlichen Geschmack die Feinheiten ausrichten will, kommt man um Shellprogrammierung bzw. gewisser Grundkenntnisse dazu nicht drumhereum.
Ausserdem macht es Spaß, ist interessant und wenn ich nur auf einer grafischen Oberfläche klicken will, ist das sehr unbefriedigend.
Denn gerade an Linux ist es das Schöne, daß ich grafisch und auch an einer vollwertigen Kommando-Shell arbeiten kann und dies auch noch gewschind hin und her zwitschen kann !
Eieiei, natürlich sind Skripte sinnvoll, und ich verwende selber kleine Skripts, z.B. um meine Daten zu sichern. Ich meinte nur, daß, einen einzigen Befehl direkt aus dem Icon abzurufen, doch direkter ist, als den Umweg über einen Skript zu gehen - natürlich nur, wenn's funktioniert.
Ein Script wird wie ein einzelner Befehl über ein Icon aufgerufen, da ein Script eigentlich auch eine Kommandoerweiterung der Shell ist !
So kleine Shell-Skripte sind was feines für faule Leute. Mit dem Mencoder kann man z.B. recht gut seinen Rechner als Videorecorder missbrauchen. Entweder gibt man den Rattenschwanz an Kommandos jedesmal händisch ein, oder man baut sich halt ein Billigst-Skript wie folgendes (Zeilenumbrüche aus Nächstenliebe eingefügt):
#!/bin/bash
#ARD
xterm -e mencoder tv:// -tv driver=v4l:device=/dev/video1:width=640:height=480:fps=25:freq=203,25 -ovc lavc -lavcopts vcodec=mpeg4:vqscale=4 -oac mp3lame -lameopts abr:br=96 -o /home/ralph/video.avi
Das lässt sich prima mit einem Klick ausführen; dabei poppt ein xterm auf mit der Ausgabe von mencoder; xterm schließen, schon ist die Aufzeichnung fertig.
In Verbindung mit kdialog lassen sich im KDE-Stil auch noch Abfragen im Popup-Fensterchen oder Auswahldialoge starten. Billig-Beispiel (auch hier sind aus Platzgründen die Zeilen umgebrochen):
#!/bin/bash
cd /home;
kdialog --title "Sicherung" --yesno "Mit der Sicherung beginnen?" && xterm -e rsync -avz --progress --delete -e ssh ralph root@schwarz:/Web/Sicherung/leo
Mei ganzes Seti-Handling unter Linux habe ich auf einer Sammlung von Scripten aufgebaut !
Sieh dazu z.B. hier
Ich bin überrascht, wie viele Leute mir geantwortet haben und ich bin für alle Antworten sehr dankbar. Nun aber noch eine Frage:
Ich möchte, dass ein Shell-Skript beim Herunterfahren und beim Neustart des Systems ausgeführt wird. Dazu habe ich das entsprechende Skript in /etc/rc.d/init.d/ kopiert und in rc6.d und rc0.d Links auf dieses Skript angelegt. Leider funktioniert das Ganze noch nicht. Ich habe die Links jeweils "K02captive_beenden" genannt.
Wisst ihr, warum das Skript nicht ausgeführt wird?
Danke!
Was klappt denn da nicht? Wird es nicht beendet? Zeigt der Link auch auf das Script? Ist das Script ausfuehrbar. Zeige mal das Ding.
Klaus
#!/bin/bash
umount /mnt/daten
umount /mnt/standard
---------------------
Diese Laufwerke müssen bei mir "von Hand" ausgehangen werden, weil sie mit den captive NTFS Treibern gemountet sind. Diese verschlucken ganz gern mal Daten, wenn zu früh beendet wird. Wenn ich die Befehle da oben per Kommandozeile ausführe, klappt alles.
Normalerweise haengt Linux alle Sachen, die beim runterfahren noch gemountet sind, automatisch aus. Vielleicht sind die dann schon ausgehangen. Es kann aber auch sein, dass irgendwie die Zeit nicht reicht.
Schreibe doch mal folgendes vor den beiden mount Befehlen und dann noch einmal danach rein:
echo -e " \\a"
sleep 1
echo -e " \\a"
Wenn du dann 2 Beebtoene hoerst und danach noch einmal 2, dann wird es ausgefuehrt.
Klaus
Hi!
Ich habe jetzt die Zeilen, wie von dir beschrieben, eingefügt. Er piept aber nicht. Nichtmal, wenn ich das Skript direkt ausführe.
Da ist aber irgendetwas oberfaul. Mach am besten mal einen neuen Thread auf und schreibe genau, was du gemacht hast und welche Fehlermeldung genau kommt. Ich habe hier langsam den ueberblick verloren.
Klaus
