
如標題中所寫,我想僅在上一個命令“youtube-dl”完成並關閉後運行命令。我不只是在 ubuntu 終端機上的 bash 上運行此命令。
我想運行這個命令:
Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory
命令 1 可以運行 5 秒到 xx 分鐘,如果我聲明只休眠 4 秒,那麼當命令 1 完成並關閉時,無論結果如何,可能都沒有足夠的時間來運行命令 2。我可以使用 sleep 4 來實現無限期的延時拍攝,但這確實會完全妨礙我執行命令的速度。
答案1
如果您確實只想移動文件,為什麼不直接將其輸出到目標目錄呢?
youtube-dl -o /to-directory/output.file link
如果您想執行其他一些非常複雜的任務,您可以使用 選項--exec
,如 底部所述youtube-dl -h
,因此命令應如下所示:
youtube-dl -o output.file link --exec 'mv {} /to-directory/'
這是一個工作範例:
youtube-dl -o irakli https://youtu.be/FyV_49qbvU4 --exec 'mv {} ~/Desktop/'
命令完成後,該文件irakli.mkv
將位於您的Desktop
.喜歡看!
附贈曲目 :) 這是我透過桌面瀏覽器瀏覽 mp3 時使用的腳本,用於從 youtube.com 下載 mp3。
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)"
- 請注意該腳本使用
xclip
,因此應將其與最新版本的youtube-dl
。
建立自訂快捷方式如下:
然後當你瀏覽時youtube.com,只需複製您喜歡的任何影片的連結 - Ctrl+ C,然後按Ctrl+ Alt+ V。幾秒鐘後,下載目錄中將出現一個新的 mp3 檔案。
答案2
Youtube-dl -o output.file link && sleep 4 && mv output* /to-directory
甚至更好:
Youtube-dl -o /to-directory/output.file link
因為您以後不必移動任何東西。
如果 youtube-dl 確實在背景運行並設定為下載後退出,
您可以使用:
youtube-dl -o output.file link; while :;do sleep 1; [[ $(ps -C youtube-dl -o pid=) ]] || break;done; mv output.* /to-directory/
解釋
while :;
- 無限循環意味著等待 youtube-dl 完成。
[[ $(ps -C youtube-dl -o pid=) ]] || break
- 檢查是否存在 youtube-dl 的進程 ID。如果存在則再次循環。否則結束循環break
。
筆記:pidof Youtube-dl
命令可用來取得程式的進程ID。但是,由於 youtube-dl 是使用 python3 呼叫的,因此它沒有自己的進程。因此pidof youtube-dl
在這種情況下不會產生值。因此,ps
已經使用命令來獲取pid。