Shell Script

StylusDark

Enthusiast
Thread Starter
Mitglied seit
16.11.2010
Beiträge
2.019
Ort
Bayern
Hey Leute,

ich versuche mich gerade etwas an Shell Skripten.
Hoffe ihr könnt mir ein wenig unter die Arme greifen:

Gibt es einen Befehl der mir alle Dateien eines Ordners nach und nach öffnet.
Also Datei 1 öffnen, 5 Sek warten, Datei schließen, Datei 2 öffnen, 5 Sek warten, Datei schließen usw.

Habe gehofft es irgendwie so zu lösen:
Die Ausgabe von "dir" kann ja in eine Datei geschrieben werden. (Evtl. ist ein Array besser geeignet?)
Dann eben aus dieser Datei die Namen ziehen und nach und nach öffnen und schließen.

Evtl. hat ja jemand von euch nen Tip?

Gruß

EDIT:

Bin jetzt schonmal so weit gekommen die Dateien in ein Array zu bringen und sie nach ner gewissen Zeit zu öffnen, aber wie bekomm ich sie geschlossen und ist es möglich die Dateien im Vollbild zu öffnen?

Code:
#! /bin/bash
arr=( * )

for ((i=0; i<${#arr[@]}; i++)); do 
xdg-open "${arr[$i]}"
sleep 5s
done
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Die quick and dirty version könnte! so ausschauen. Ist allerdings nicht getestet

Code:
#!/bin/bash
for i in `ls -1`; do
xdg-open $i &
sleep 5
b=$(ps -ef | grep xdg-open | awk '{ printf $2 }')

kill -9 $b
done
 
Die quick and dirty version könnte! so ausschauen. Ist allerdings nicht getestet

Code:
#!/bin/bash
for i in `ls -1`; do
xdg-open $i &
sleep 5
b=$(ps -ef | grep xdg-open | awk '{ printf $2 }')

kill -9 $b
done


Hey danke für deine Antwort,

leider funktioniert die Lösung nicht.
Es kommt ls -1 er kennt das Argument -1 nicht.

Hab deins und meins zusammen geschmissen, er öffnet es zwar, schließt es aber nicht mehr.

Gruß
 
Ich bin auch kein Bash-Profi, aber ich glaube das sollte eigentlich so lauten:

ps -ef | grep xdg-open | awk '{ printf $i }'
 
Dann geh die Schritte doch mal langsam durch. Einfach blind Code testen wird nichts. Du sagst, dass das Fenster sich zwar öffnet, aber nicht wieder schließt. Was spuckt denn "ps -ef | grep xdg-open" aus, wenn die Datei geöffnet wurde. Wenn da schon nichts gelistet wird, dann haben wir da schon die Ursache gefunden.
 
Handelt es sich bei den Dateien immer um den selben Dateityp?
Dann könntest du es so machen:
#!/bin/bash
for i in $(ls); do
xdg-open $i;
sleep 5s;
kill -n 9 $(pgrep gwenview);
done

Hab mal angenommen das es sich um Bilder handelt, deshalb wird nach gwenview gesucht.
Da musst du einfach dein Programm eintragen das die Dateien öffnet.
 
Dann geh die Schritte doch mal langsam durch. Einfach blind Code testen wird nichts. Du sagst, dass das Fenster sich zwar öffnet, aber nicht wieder schließt. Was spuckt denn "ps -ef | grep xdg-open" aus, wenn die Datei geöffnet wurde. Wenn da schon nichts gelistet wird, dann haben wir da schon die Ursache gefunden.

Stimmt da hast du recht. Werd ich heute oder morgen mal nochmal in Angriff nehmen.

Handelt es sich bei den Dateien immer um den selben Dateityp?
Dann könntest du es so machen:


Hab mal angenommen das es sich um Bilder handelt, deshalb wird nach gwenview gesucht.
Da musst du einfach dein Programm eintragen das die Dateien öffnet.

Ah ok ^^ Erklärt das ganze etwas. Es sind teilweise PDF und teilweise Videos. Also gemischt.
 
Code:
find . -type f -maxdepth 1 \
| while read file; do
    xdg-open "${file}" &
    b=$!
    sleep 5
    kill ${b}
done

Ich weiß nicht, wie sich xdg-open überhaupt verhält, ob es unter seiner PID weiterläuft oder sich nach dem Starten des eigtl. Programms beendet. Ggf. muss man die zu killende PID anders suchen.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh