Gre*_*one 2 command-line bash redirect background youtube-dl
我youtube-dl通过&在命令后面运行在后台运行。问题是它不在乎我把它放在后台并在终端中保持打印信息。
它不仅拒绝以Ctrl+C或Ctrl+停止Z,而且除了显示这些消息之外什么也不做。要阻止它,我必须关闭终端。
以下是确切发生的情况:
mohamed@Smithers:~$ clear
mohamed@Smithers:~$ youtube-dl https://www.youtube.com/watch?v=LMQsYSuw8hw &
[1] 2028
mohamed@Smithers:~$ [youtube] LMQsYSuw8hw: Downloading webpage
[youtube] LMQsYSuw8hw: Downloading video info webpage
[youtube] LMQsYSuw8hw: Extracting video information
[youtube] LMQsYSuw8hw: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Resuming download at byte 11440128
[download] Destination: I Was On Japanese TV... and I F#%KING HATED IT.-LMQsYSuw8hw.f137.mp4
[download] 4.8% of 231.85MiB at 199.01KiB/s ETA 18:56^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download] 4.8% of 231.85MiB at 136.95KiB/s ETA 27:30^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download] 5.0% of 231.85MiB at 127.41KiB/s ETA 29:31^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download] 5.0% of 231.85MiB at 111.38KiB/s ETA 33:44^C
mohamed@Smithers:~$ ^C
[download] 5.0% of 231.85MiB at 111.21KiB/s ETA 33:47^C
mohamed@Smithers:~$ ^C
[download] 5.1% of 231.85MiB at 116.77KiB/s ETA 32:09^C
[download] 5.5% of 231.85MiB at 108.71KiB/s ETA 34:24^C
[download] 5.6% of 231.85MiB at 76.68KiB/s ETA 48:41
Run Code Online (Sandbox Code Playgroud)
youtube-dl正在后台运行,但它仍在向您的终端发送输出,并生成大量输出以通知您其进度。有许多的方法来改变这一点,但你可能要么想使youtube-dl 产生更少的输出,或导致其输出发送到一个文件(或干脆丢弃),而不是出现在你的终端。
youtube-dl -q以抑制状态消息。如果您不想看到进度消息,您可以将-q标志(或--quiet,它做同样的事情)传递给youtube-dl命令:
youtube-dl -q https://www.youtube.com/watch?v=NZ-ElsvYKyo &
Run Code Online (Sandbox Code Playgroud)
当然,您必须用您尝试下载的任何内容替换该 URL。可能仍会打印一些消息,包括错误和警告。但很可能你想看到这些。
如果您不想youtube-dl产生任何警告,则可以youtube-dl使用该--no-warnings标志运行。不过,我不建议这样做,除非您确定这是您想要的。
youtube-dl -q --no-warnings https://www.youtube.com/watch?v=NZ-ElsvYKyo &
Run Code Online (Sandbox Code Playgroud)
要了解有关 接受的命令行选项的更多信息youtube-dl,您可以在线运行man youtube-dl或阅读其手册页。
youtube-dl到文件。要将输出附加到dl.log当前目录中(您可以将其命名为您想要的名称,如果它不存在,则会创建它),运行:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
Run Code Online (Sandbox Code Playgroud)
如果要覆盖 dl.log而不是将文本附加到末尾,请使用>代替>>:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > dl.log &
Run Code Online (Sandbox Code Playgroud)
然后将正常输出重定向到dl.log(或您告诉它使用的任何文件)。但是,错误输出仍将显示在您的终端上。例如,当我运行该命令时,我的终端上打印了一个警告:
ek@Io:~$ youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
[1] 14456
ek@Io:~$ WARNING: Requested formats are incompatible for merge and will be merged into mkv
Run Code Online (Sandbox Code Playgroud)
其他所有内容都进入了日志文件:
ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download] 23.2% of 359.52MiB at 204.49KiB/s ETA 23:02ek@Io:~$
Run Code Online (Sandbox Code Playgroud)
您可以随时查看输出cat(正如我在上面所做的那样),以检查进度。
当您youtube-dl不使用 运行时-q,它会产生主要用于终端的输出。此输出包括控制字符,它告诉终端擦除先前的进度消息,以便可以用新的进度消息在视觉上替换它。某些查看文件的方式(例如cat dl.log)不会显示“已删除”消息或控制字符。不过,它们仍然是文件的一部分,您可以使用其他一些实用程序查看它们;例如,view dl.log作品。
/dev/null以摆脱它。如果您希望输出只是被丢弃而不是保存在实际文件中,那么您可以将其重定向到/dev/null:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > /dev/null &
Run Code Online (Sandbox Code Playgroud)
使用/dev/null,“覆盖” ( >) 或“附加” ( >>)都没有关系。
这通常是一种方便的技术,尽管对于youtube-dl. 如果你想抑制进度,你可以直接运行youtube-dl -q。
常规输出和错误输出是分开的。youtube-dl两者都生产是很常见的。上述方法仅重定向标准输出。您还可以重定向标准错误。重定向可以做很多事情,包括将两个输出流重定向到单独的文件。出于我们的目的,我将展示如何将标准输出和标准错误发送到同一个文件:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &>> dl.log &
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我的外壳只显示
[2] 15009
Run Code Online (Sandbox Code Playgroud)
...并且常规输出和错误输出都出现在dl.log:
ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download] 0.0% of 359.52MiB at 107.65KiB/s ETA 56:59ek@Io:~$
Run Code Online (Sandbox Code Playgroud)
上面使用的示例&>>,附加到dl.log. 要改写文件,请使用&>(or >&,这也适用) 而不是&>>:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> dl.log &
Run Code Online (Sandbox Code Playgroud)
/dev/null.如果你真的想要,你可以将标准输出和标准错误都重定向到,/dev/null这样它就被简单地丢弃了:
youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
不过,您可能希望看到实际的错误消息。如果它只是您不想要的状态消息和警告,那么您不需要任何重定向。在这种情况下,您可以youtube-dl -q --no-warnings如上所述使用。(见方式1。)