我想删除当前正在中播放的MP3文件mplayer
。如果可能的话,我想用一个mplayer
命令。这样我就不必退出mplayer
并使用删除此文件,也不必rm
打开另一个终端并在那里删除该文件。
我想删除当前正在中播放的MP3文件mplayer
。如果可能的话,我想用一个mplayer
命令。这样我就不必退出mplayer
并使用删除此文件,也不必rm
打开另一个终端并在那里删除该文件。
Answers:
是的,可能且容易。我使用以下版本的修改版本来整理/修剪我的媒体收藏。
(1)保存以下bash脚本(rmplaying.sh)
#/bin/bash
# rmplaying.sh
# only works when exactly 1 instance of mplayer is running
function playing {
PID=`pidof mplayer`
WHICH=`which mplayer`
if [ $PID ]; then
lsof -p $PID | awk '{ if ($5=="REG" && $4!="mem" && $9)print $0 }' | grep -v "$WHICH" | grep -oP '\/.*'
fi
}
FILE="$(playing)"
echo "file: $FILE"
if [ "$FILE" ]; then
rm "$FILE" && echo "Removed '$FILE'"
fi
(2)设置权限以使其执行
chmod +x rmplaying.sh
(3)编辑或创建文件“〜/ .mplayer / input.conf”并添加以下行
Ctrl+d run "/path/to/rmplaying.sh"
而已。
要进行测试,请使用mplayer播放文件,然后按“ Ctrl + d”。该文件将通过“ rm”命令删除,但是媒体将继续播放。
如果从终端窗口启动mplayer,则应该看到消息“已删除'/path/to/media/file.mp3'”。如果您没有使用终端启动它,请检查该文件是否已从其目录中删除。
*将playing()函数移至其自己的实用程序脚本以进一步定制
您无法删除文件。用户唯一能做的就是调用unlink(2)
(例如使用rm(1)
),这将从目录中删除文件名,从而导致硬链接计数器减少。仅当硬链接计数器达到零且没有应用程序具有此文件的打开文件句柄时,操作系统才会删除该文件。
由于您在mplayer
其中播放文件,因此将有一个打开的文件句柄,并且无法删除该文件。但是,unlink(2)
系统调用应该成功。实际上,这意味着您可以调用rm(1)
该文件,但是不要期望在退出之前释放空间mplayer
。
mplayer
。我正在寻找一种告诉文件系统“在可能的情况下删除此文件” 的便捷方法。最好是mplayer
本身。因此,我不必启动另一个终端,无需查找文件名并使用rm
命令将其显式删除。
为了解决这个问题,我在文件中添加了以下行~/.mplayer/input.conf
:
DEL run "rm '${path}'"
这使delete
mplayer中的键在mplayer rm
当前正在播放的文件的完整路径上运行shell命令。
另外,${path}
一部分被mplayer的本身取代:${path}
是不 shell变量插值。
不过,不幸的是,mplayer坚持使用外壳程序运行命令这一事实意味着,精心删除的文件名可能会导致执行任意外壳代码。避免这种情况的想法很受欢迎。
还要注意,单引号对于使此功能在文件路径中使用空格很重要,但对于在名称中带有单引号的文件,则停止使用单引号。
还要注意,这不需要shell脚本或不喜欢使用lsof
,因此应在任何unix-y操作系统上运行,并与同时运行的mplayer的多个实例一起使用。
确切的命令文档可以在mplayer的从属模式文档中找到。
首先,为什么不试试看呢?无论如何,从mplayer
自身删除可能是不可能的,为什么媒体播放器具有文件处理功能?这就像询问您是否可以使用来复制文件acroread
。
在播放文件时删除文件应该不是问题。程序打开后,文件将立即复制到RAM中,您可以毫无问题地从硬盘中删除文件(只需使用mplayer进行检查即可)。如果我没记错的话,Windows不喜欢你这样做,但是我从未在Linux中遇到过这种情况。
lkchoi和ndim解决方案对我不起作用。
因此,我创建了一个名为“ Cesar”的系统,如果歌曲不好,我将其删除,如果很好,请移至另一个文件夹。
这在选择音频时非常有用,例如重要的录音是WhatApp备份?
在我还使用过的巨大的Hair Metal包中过滤歌曲,这很简单:
mplayer */*/*3 | sed "s@Playing \(.*\).\$@\nrm \"\1\"\nmv \"\1\" ../saved\n@"
mplayer回显“正在播放” +歌曲名+文件扩展名+哑点,我删除了这些内容并安装了删除或移动所需的语句。
它会回显所有预期的信息,但是显示正在播放...它将显示:
rm“绝对发金属Vol。56-111 /绝对发金属Vol。100/06 Leatherwolf-The Calling.mp3” mv“绝对发金属Vol。56-111 /绝对发金属Vol。100/06 Leatherwolf-呼叫。 mp3“ ../saved
...
我知道单击两次然后用鼠标中键粘贴然后按Enter键很烦人。但是其他解决方案停止工作,并且还存在一些安全问题。
也许您需要将\ n更改为\ r。结果:
mplayer */*/*3 | sed "s@Playing \(.*\).\$@\rrm \"\1\"\rmv \"\1\" ../saved\n@"