Hallo,
wäre es kompliziert, ein Shellskript zu machen, welches beim Aufruf einer Datei diese auswechselt?
Konkret:
Ich habe 10 Bilder n1,.. n10.
n1 verlinke ich auf n_link.
Wenn n_link aufgerufen wird, dann soll n_link danach mit einem neuen Bild (n_random) verknüpft werden.
Ziel ist es, dass das zu erzeugende Dokument unterschiedliche Bilder anzeigt, ich das aber nicht händisch anpacken muss.
Ein Literaturtip zum Einlesen wird auch gerne genommen.
Vielen Dank
Fith
shellskript dateiaustausch
Re: shellskript dateiaustausch
Ich vermute mal "n_link aufrufen" bedeutet so viel wie, das verlinkte Bild mit einem Bildbetrachter zu öffnen. Das sollte recht trivial sein (ungetestet):
Insbesondere das Zusammensuchen der Bilder zum Verlinken könnte man sicher noch ausgereifter gestalten (z.B. mit find). Hier gehe ich einfach davon aus, dass alle in Frage kommenden Bilder in einem Verzeichnis stehen, und dass dort auch nichts anderes steht. Aber das Prinzip sollte klar werden.
Code: Alles auswählen
rm -f /pfad/zu/n_link
ln -s $(ls /pfad/zu/bilderverzeichnis | sort -R | head -n 1) /pfad/zu/n_link
bildbetrachter /pfad/zu/n_link
Re: shellskript dateiaustausch
Danke hikaru,
ja, die Bilddatei wird von einer "html"-Seite eingebunden.
Grob geht das in die Richtung, was ich vorhabe. Ich hänge aber daran, dass das Bild nicht nach jedem Aufruf ausgetauscht wird.
Wäre es möglich, das der Bildlink in Wirklichkeit auf ein shellscript zeigt, welches dann das Bild liefert?
quasi nur:
ja, die Bilddatei wird von einer "html"-Seite eingebunden.
Grob geht das in die Richtung, was ich vorhabe. Ich hänge aber daran, dass das Bild nicht nach jedem Aufruf ausgetauscht wird.
Wäre es möglich, das der Bildlink in Wirklichkeit auf ein shellscript zeigt, welches dann das Bild liefert?
quasi nur:
Code: Alles auswählen
ls /pfad/zu/bilderverzeichnis | sort -R | head -n 1
Re: shellskript dateiaustausch
Ja, das wäre möglich, aber den Versuch, ein "Bild" auszuführen, sollte dir jedes nicht völlig durchlöcherte Linux um die Ohren hauen.fitheach hat geschrieben:25.07.2018 17:11:29Wäre es möglich, das der Bildlink in Wirklichkeit auf ein shellscript zeigt, welches dann das Bild liefert?
Das wäre wohl eine Aufgabe für die Scriptsprache, die dir den HTML-Code generiert (PHP, Javascript, etc.). Und die hat dann sicher passende standardisierte Methoden um meine Shell-Pipe zu ersetzen.fitheach hat geschrieben:25.07.2018 17:11:29ja, die Bilddatei wird von einer "html"-Seite eingebunden.
Aber da fragst du besser jemanden, der sich nicht vor 10 Jahren verwirrt von Webprogrammierung abgewandt hat.
Re: shellskript dateiaustausch
Der Ausdruck "daran hängen" lässt hier für mich zwei widersprüchliche Interpretationen zu :fitheach hat geschrieben:25.07.2018 17:11:29Ich hänge aber daran, dass das Bild nicht nach jedem Aufruf ausgetauscht wird.
(1) Es ist Dir wichtig, dass das verlinkte Bild über mehrere Aufrufe des Links konstant bleibt ("daran hängen" im Sinne von "gern haben").
(2) Du möchtest im Gegenteil, dass das Bild zuverlässig bei jedem Aufruf ausgetauscht wird ("hängen" im Sinne von "nicht weiterkommen").
Im zweiten Fall ließe sich hikarus Lösung *) derart ergänzen, dass das jeweils aktuell verlinkte Bild bei der neuen Zufallsgenerierung ausgeschlossen wird, etwa so:
Code: Alles auswählen
curr=$(basename "$(readlink /pfad/zu/n_link)") #Name des aktuell verlinkten Bildes
rand=$(ls /pfad/zu/bilderverzeichnis | grep -v $curr | sort -R | head -n 1) #Neues Zufallsbild
ln -fs /pfad/zu/bilderverzeichnis/$rand /pfad/zu/n_link
Re: shellskript dateiaustausch
Erst einmal danke euch beiden!
Zu meinem Hängen. Eine Idee war, einen cronjob laufen zu lassen, der dann immer schaut, ob seid seinem letzten Aufruf auf das Bild zugegriffen worden ist. Wenn ja, dann wird der Link "aktualisiert".
Nachteil an dieser Methode, das verbraucht mehr Systemresourcen, als wenn man nebenläufig mit dem Aufruf des Bildes der Austausch angestoßen wird. Und leider sind auch alle Bilder zwischen 2 cronjobs identisch.
Aber was besseres ist mir bis jetzt nicht eingefallen.
Hab ich jetzt auch gelernt.*) Ich habe dank hikaru dazugelernt, dass sort über eine Randomisierungsoption verfügt!
(3) Hängen im Sinne von "ich komme nicht weiter.Der Ausdruck "daran hängen" lässt hier für mich zwei widersprüchliche Interpretationen zu :
(Ruby on Rails). Aber ich möchte für so eine Kleinigkeit nicht das Originalprogramm verändern und diese Änderung dann bei jedem Update wieder einpflegen müssen.Das wäre wohl eine Aufgabe für die Scriptsprache, die dir den HTML-Code generiert (PHP, Javascript, etc.).
Zu meinem Hängen. Eine Idee war, einen cronjob laufen zu lassen, der dann immer schaut, ob seid seinem letzten Aufruf auf das Bild zugegriffen worden ist. Wenn ja, dann wird der Link "aktualisiert".
Nachteil an dieser Methode, das verbraucht mehr Systemresourcen, als wenn man nebenläufig mit dem Aufruf des Bildes der Austausch angestoßen wird. Und leider sind auch alle Bilder zwischen 2 cronjobs identisch.
Aber was besseres ist mir bis jetzt nicht eingefallen.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: shellskript dateiaustausch
Alternative: Per iwatch ein Script starten?