Unix 如何选择文件并将其发送到vlc播放器

Unix 如何选择文件并将其发送到vlc播放器,unix,Unix,我想用命令终端开始一首歌 在我的目录中,当我这样做时,它会打印出来 ls AlbumArtSmall.jpg Folder.jpg [SongsPK.info] Table No 21 - 02 - Man Mera.mp3 [Songs.PK] Table No 21 - 01 - O Sajna.mp3 [Songs.PK] Table No 21 - 02 - Man Mera.mp3 我想演奏第三首歌, 所以我写了这个命令 ls |sed -n "3p"|vlc 但它没有播放歌曲,v

我想用命令终端开始一首歌

在我的目录中,当我这样做时,它会打印出来

ls
AlbumArtSmall.jpg
Folder.jpg
[SongsPK.info] Table No 21 - 02 - Man Mera.mp3
[Songs.PK] Table No 21 - 01 - O Sajna.mp3
[Songs.PK] Table No 21 - 02 - Man Mera.mp3
我想演奏第三首歌, 所以我写了这个命令

ls |sed -n "3p"|vlc
但它没有播放歌曲,vlc播放器只是打开,但不播放。 如何解决这个问题

在尝试下面的答案之后

ls|sed -n "3p"|xargs -0 vlc
给了我另一个错误

VLC media player 2.2.0 Weatherwax (revision 2.2.0-0-g1349ef2)
[00000000018eb118] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00007fea5c000f28] filesystem access error: cannot open file /media/gautam/S.T.U.F.F/songs/table no.21/[SongsPK.info] Table No 21 - 02 - Man Mera.mp3
 (No such file or directory)
[00007fea600009b8] core input error: open of `file:///media/gautam/S.T.U.F.F/songs/table%20no.21/%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed

有人能解释一下为什么会发生这种情况吗?

vlc希望文件名作为命令行参数传递,而这是您没有做的。您正在将文件名传递到vlc的stdin中,在那里它不会看到/期待它们

试一试

相反。xargs从stdin(管道)获取内容,并将它们转换为命令行参数

给了我另一个错误

open of `…%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed
有人能解释一下为什么会这样吗

发生这种情况是因为
xargs
-0
选项导致文件名后的换行符不会被删除(正如我们在上面的
%0A
中看到的)。
您可以更正并同时将命令简化为:

vlc "`ls|sed -n 3p`"

另一个答案解释了这个问题,但我只想提出一个更干净的解决方案(在我看来):

键是xargs的
--分隔符'\n'
选项


旁注-我不知道你能做到这一点。很高兴发布了此消息。

[00007f5e500023d8]核心流错误:无法预填充缓冲区[00007f5e50002508]文件系统访问错误:无法打开文件/media/gautam/S.T.U.F.F/songs/table no.21/Man(没有这样的文件或目录)[00007f5e7000c018]核心输入错误:打开
file:///media/gautam/S.T.U.F.F/songs/table%20no.21/Man"失败了![00007f5e50002a68]文件系统访问错误:无法打开文件/media/gautam/S.T.U.F.F/songs/table no.21/Mera.mp3(无此类文件或目录)[00007f5e7000cbe8]核心输入错误:打开
file:///media/gautam/S.T.U.F.F/songs/table%20no.21/Mera.mp3"失败了!
open of `…%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed
vlc "`ls|sed -n 3p`"
find -iname "*mp3" | shuf | xargs --delimiter '\n' /Applications/VLC.app/Contents/MacOS/VLC