
タイトルに書いたように、前のコマンド「youtube-dl」が終了して閉じた後にのみコマンドを実行したいと思います。このコマンドは bash ではなく、Ubuntu ターミナルでのみ実行しています。
次のコマンドを実行したいと思います:
Youtube-dl -o output.file link ; sleep 4 ; mv output* /to-directory
コマンド 1 は 5 秒から xx 分まで実行できますが、4 秒間スリープすると指定した場合、結果に関係なくコマンド 1 が終了して閉じられたときにコマンド 2 を実行するのに十分な時間がかからない可能性があります。無期限のタイムラプスにはスリープ 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
。ぜひご覧ください。
ボーナス トラック :) 以下は、デスクトップ ブラウザーで youtube.com を閲覧しているときに、mp3 をダウンロードするために使用しているスクリプトの 1 つです。
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。数秒後、ダウンロード ディレクトリ内に新しい mp3 ファイルが作成されます。CCtrlAltV
答え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 を取得しています。