我想使用命令终端开始播放歌曲。
在我的目录中,当我这样做时,它会打印
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
有人能解释我为什么会这样吗?
答案 0 :(得分:0)
vlc期望文件名作为命令行参数传递,这是你不做的事情。您将文件名传递给vlc的stdin,在那里它没有查看/期待它们。
尝试
Data
代替。 xargs从stdin(管道)获取东西并将它们变成命令行参数。
答案 1 :(得分:0)
ls|sed -n "3p"|xargs -0 vlc
给了我另一个错误
open of `…%5BSongsPK.info%5D%20Table%20No%2021%20-%2002%20-%20Man%20Mera.mp3%0A' failed
有人能解释我为什么会这样吗?
这种情况正在发生,因为-0
选项xargs
会导致文件名后的换行符无法删除(正如我们在上面的%0A
中看到的那样)。
您可以更正并同时将命令简化为:
vlc "`ls|sed -n 3p`"
答案 2 :(得分:0)
另一个答案解释了这个问题,但我只是想提出一个更清洁的解决方案(我认为):
find -iname "*mp3" | shuf | xargs --delimiter '\n' /Applications/VLC.app/Contents/MacOS/VLC
关键是xargs的--delimiter '\n'
选项。
旁注-我没有意识到您可以这样做。很高兴这已发布。