
Como está escrito en el título, me gustaría ejecutar un comando SÓLO después de que el comando anterior 'youtube-dl' haya finalizado y se haya cerrado. No estoy ejecutando este comando en bash solo en la terminal de Ubuntu.
Me gustaría ejecutar este comando:
Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory
El comando 1 puede ejecutarse desde 5 segundos hasta xx minutos y si digo que solo duermo durante 4 segundos, es posible que no tome el tiempo suficiente para ejecutar el comando 2 cuando el comando 1 haya finalizado y cerrado independientemente del resultado. Podría usar Sleep 4 para un lapso de tiempo indefinido, pero realmente obstaculizaría por completo mi velocidad de ejecución de comandos.
Respuesta1
Si realmente solo desea mover el archivo, ¿por qué no enviarlo directamente al directorio de destino?
youtube-dl -o /to-directory/output.file link
Si desea realizar alguna otra tarea mucho más complicada, puede usar la opción --exec
, descrita en la parte inferior de youtube-dl -h
, por lo que el comando debería verse así:
youtube-dl -o output.file link --exec 'mv {} /to-directory/'
Aquí hay un ejemplo práctico:
youtube-dl -o irakli https://youtu.be/FyV_49qbvU4 --exec 'mv {} ~/Desktop/'
Una vez finalizado el comando, el archivo irakli.mkv
estará en su archivo Desktop
. ¡Disfruto ver!
Bonus track :) Aquí hay un script que estoy usando para descargar mp3 desde youtube.com, mientras lo navego a través de mi navegador de escritorio.
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)"
- Tenga en cuenta que el script utiliza
xclip
, por lo que debe instalarse junto con la versión más reciente deyoutube-dl
.
Crea un atajo personalizado como este:
Luego mientras navegasyoutube.com, simplemente copia el enlace de cualquier vídeo que te guste - Ctrl+ Cy luego presiona Ctrl+ Alt+ V. Después de unos segundos, estará disponible un nuevo archivo mp3 en el directorio de descargas.
Respuesta2
Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
o mejor aún:
Youtube-dl -o /to-directory/output.file link
ya que no tendrías que mover nada más adelante.
Si youtube-dl realmente se ejecuta en segundo plano y está configurado para salir después de la descarga,
puede usar:
youtube-dl -o output.file link; while :;do sleep 1; [[ $(ps -C youtube-dl -o pid=) ]] || break;done; mv output.* /to-directory/
Explicación
while :;
- un bucle infinito destinado a esperar a que finalice youtube-dl.
[[ $(ps -C youtube-dl -o pid=) ]] || break
- compruebe si existe una identificación de proceso para youtube-dl. si existe, haga un bucle nuevamente. De lo contrario, finalice el ciclo (usando break
).
NOTA: pidof Youtube-dl
el comando se puede utilizar para obtener la identificación del proceso para un programa. sin embargo, como se llama a youtube-dl usando python3, no tiene un proceso propio. Por lo tanto, pidof youtube-dl
no arrojaría un valor en este caso. como tal, ps
se ha utilizado el comando para obtener el pid.