JaS*_*ers 2 command-line bash gnome-terminal yad
我有一个半古怪的东西我正在摆弄。我正在寻找一种方法,可以更轻松地将 MPV(视频播放器)启动到视频链接。MPV 的默认行为是mpv https://url.of.video在终端中启动,或将 URL 拖放到 MPV 窗口。我不认为这个犹太洁食者是一个以键盘为中心的人。相反,我想启动一个弹出框,粘贴 URL,按 Enter,然后让 MPV 将视频启动到该 URL。这样我就可以将此命令绑定到键盘快捷键,使整个过程变得非常简单。我有这个完整的,但有一个小剪纸 - gnome-terminal 窗口悬而未决。这是一个简单的单线:
URL=$(yad --entry) && gnome-terminal -- bash -c "mpv $URL"
Run Code Online (Sandbox Code Playgroud)
如果我启动该命令,由于 YAD,我会收到一个弹出框。此时,我粘贴 URL,按 Enter,然后在 1-2 秒内打开该视频的 MPV 窗口。惊人的。正是我想要的。
我提到的剪纸是 gnome-terminal 保持运行的事实。不是什么大问题,但我想弄清楚上面的这个命令是否有办法启动 gnome-terminal,调用 MPV,附加变量(URL),然后让 gnome-terminal 在不结束视频的情况下自行关闭溪流。
好奇是否有人有任何想法。非常感谢!
des*_*ert 11
这里的正确解决方案是首先省略调用gnome-terminal,bash甚至设置不需要的变量,在您的情况下不需要所有这些:
mpv -- "$(yad --entry)"
Run Code Online (Sandbox Code Playgroud)
我添加了引号以正确处理 URL,这确保它可以包含例如空格和与号 ( &) 并且命令仍然有效。--告诉mpv停止寻找选项,而是将您选择的任何内容视为论据。--version想象一下你在启动mpv的目录中有一个文件名的常见情况,只需输入这个文件名,怎么mpv知道是显示它的版本字符串还是打开文件?
nohup或者disown可用于将进程与启动它的 shell 分离,请参阅"<command> & disown" 和 "nohup <command> & disown" 之间的差异。
在您的情况下,正确的解决方案是:
gnome-terminal -e nohup mpv -- "$(yad --entry)"
Run Code Online (Sandbox Code Playgroud)
但是,对于更好的解决方案,请参见上文。