
Wie im Titel geschrieben, möchte ich einen Befehl NUR ausführen, nachdem der vorherige Befehl „youtube-dl“ abgeschlossen und geschlossen wurde. Ich führe diesen Befehl nicht auf Bash aus, sondern nur auf dem Ubuntu-Terminal.
Ich möchte diesen Befehl ausführen:
Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory
Befehl 1 kann zwischen 5 Sekunden und xx Minuten laufen und wenn ich einfach 4 Sekunden schlafe, kann es sein, dass es nicht lange genug dauert, um Befehl 2 auszuführen, wenn Befehl 1 beendet und geschlossen wurde, unabhängig vom Ergebnis. Ich könnte Schlaf 4 für einen unbegrenzten Zeitraffer verwenden, aber das würde meine Geschwindigkeit bei der Ausführung von Befehlen insgesamt wirklich beeinträchtigen.
Antwort1
Wenn Sie die Datei wirklich nur verschieben möchten, warum geben Sie sie dann nicht direkt in das Zielverzeichnis aus?
youtube-dl -o /to-directory/output.file link
Wenn Sie eine andere, viel kompliziertere Aufgabe ausführen möchten, können Sie die --exec
unten beschriebene Option verwenden youtube-dl -h
. Der Befehl sollte dann etwa so aussehen:
youtube-dl -o output.file link --exec 'mv {} /to-directory/'
Hier ist ein funktionierendes Beispiel:
youtube-dl -o irakli https://youtu.be/FyV_49qbvU4 --exec 'mv {} ~/Desktop/'
Nachdem der Befehl abgeschlossen ist, irakli.mkv
befindet sich die Datei bei Ihnen Desktop
. Viel Spaß beim Anschauen!
Bonustrack :) Hier ist ein Skript, das ich verwende, um MP3s von youtube.com herunterzuladen, während ich es über meinen Desktop-Browser durchsuche.
cat /usr/local/bin/youtube-dl-clipboard # The file must be executable, of course
#!/bin/sh
notify-send "YouTube-Download BEGIN"
youtube-dl -i -x --audio-format mp3 --output "$HOME/Downloads/%(title)s.%(ext)s" "$(xclip -o)"
- Beachten Sie, dass das Skript verwendet
xclip
. Es sollte daher zusammen mit der aktuellsten Version von installiert werden.youtube-dl
.
Erstellen Sie eine benutzerdefinierte Verknüpfung wie diese:
Dann, während Sie surfenyoutube.com, kopieren Sie einfach den Link eines beliebigen Videos - Ctrl+ Cund drücken Sie dann Ctrl+ Alt+ V. Nach einigen Sekunden steht eine neue MP3-Datei im Download-Verzeichnis zur Verfügung.
Antwort2
Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
oder noch besser:
Youtube-dl -o /to-directory/output.file link
weil Sie später nichts mehr verschieben müssen.
Wenn youtube-dl tatsächlich im Hintergrund läuft und so eingestellt ist, dass es nach dem Download beendet wird,
können Sie Folgendes verwenden:
youtube-dl -o output.file link; while :;do sleep 1; [[ $(ps -C youtube-dl -o pid=) ]] || break;done; mv output.* /to-directory/
Erläuterung
while :;
- eine Endlosschleife, die darauf wartet, dass youtube-dl beendet wird.
[[ $(ps -C youtube-dl -o pid=) ]] || break
- prüfen, ob eine Prozess-ID für youtube-dl vorhanden ist. Wenn ja, wiederholen Sie die Schleife. Andernfalls beenden Sie die Schleife (mit break
).
NOTIZ: pidof Youtube-dl
Mit dem Befehl kann die Prozess-ID eines Programms abgerufen werden. Da youtube-dl jedoch mithilfe von Python3 aufgerufen wird, verfügt es über keinen eigenen Prozess. Daher pidof youtube-dl
würde es in diesem Fall keinen Wert ergeben. Daher ps
wurde der Befehl verwendet, um die PID abzurufen.