LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 03-09-29, 09:10 第 1 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

标题: 搜索一首歌并调用XMMS播放的脚本,有兴趣的兄弟来一起完善它


有时我们可能会突然想听一首歌,但在我们的硬盘里可能一个歌曲目录里有几百首歌,慢慢地找可真是够呛的,要是有一个脚本自动找到该歌曲并启动XMMS播放那多好,这是我上课时和同学谈起的一件事情(不专心听课啊:o ),于是,我下课后马上写了这个脚本,可惜功能不够强大,不太支持通配符(有时不是全部歌名都记得住的:( ),只播MP3,有兴趣的兄弟们来完善它啊
我使用了一下,感觉还不错,要是完善了一定更令人爱不释手。

代码:
#!/bin/bash #this scricpt for find a song from a directory and play it in xmms. #fm SONG="$1.mp3" MDIR=$2 SONGPA=`find $MDIR -name $SONG` if [ "$SONGPA" = "" ] then echo "Sorry,there is not $SONG in $MDIR!!!!" else echo "Xmms is playing $SONG..." xmms -p $SONGPA fi
把这个脚本放在搜索路径中,命名为fm,即是find music,改为可执行,这样,你想听某一首歌时可以这样调用:fm 歌名 搜索路径
比如我的硬盘里在/root/music目录放了许多歌,里面分类了一些歌,有子目录,我想听一首叫“暗香”的歌,我可以这样调用:
#fm 暗香 /root/music
Xmms is playing 暗香.mp3....







__________________
深邃的技术不仅表现在敏捷的思维和高超的本领,还有过人的修养。
  kiron 当前离线   回复时引用此帖
旧 03-09-29, 11:48 第 2 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

有意思~~
你可以用dialog中的--fselect的功能,把歌曲的曲目放在一个窗口中,我想更有意思,可惜我从不听歌 :(
(我用xdialog,作窗口也很有意思,在X下点一下MOUSE就选定某个文件啦~)
  KornLee 当前离线   回复时引用此帖
旧 03-09-29, 19:46 第 3 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

一语惊醒梦中人,我有空再看看怎么做,不会使用dialog这个命令:(
刚刚man了一下,发现这个命令的功能真是强大,正好学习一下,再用这个题练习一下
  kiron 当前离线   回复时引用此帖
旧 03-09-29, 21:24 第 4 帖
lucida
 
 
 
注册会员  
  注册日期: Oct 2002
  我的住址: .:DRL:.
  帖子: 2,492
  精华: 9
 

说实话,没啥用。。
a. 不如用locate,快的多
b. 现在很多mp3名字都简单,信息在id3里面
c. 试试rhymbox或者juk,有很好的管理功能







__________________
E6300@3.2G/P5B-D WiFi/2G RAM/1TB HDD/3540A/7900GT/E-MU 0404
Logitech S 510/MX Revolution/2407WFP/LaserJet 1020
go wild, go Gentoo
  lucida 当前离线   回复时引用此帖
旧 03-09-29, 22:34 第 5 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 penny 发表
说实话,没啥用。。
a. 不如用locate,快的多
b. 现在很多mp3名字都简单,信息在id3里面
c. 试试rhymbox或者juk,有很好的管理功能
呵呵~~,像kiron兄说的,无非是个乐嘛~~ 难道不是么?
...
我现在正捉摸xdialog呢~~,里面有太多的好东西,如果把你的脚本能用dialog/xdialog包装一下确实很漂亮的!
注:我喜欢在我的音响上听些老歌...
  KornLee 当前离线   回复时引用此帖
旧 03-09-29, 22:44 第 6 帖
lucida
 
 
 
注册会员  
  注册日期: Oct 2002
  我的住址: .:DRL:.
  帖子: 2,492
  精华: 9
 

xdialog。。功能太简单了
倒是gnome下的zenity和kde下的kdialog,这两个挺好玩的。
不妨试试
  lucida 当前离线   回复时引用此帖
旧 03-09-29, 22:56 第 7 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

哦~,你说的那两个得去下载吧~~?!我觉得xdialog作为在X下一般的应用应该绰绰有余啦~
再说,各有所好嘛~~,还是把dialog/xdialog玩熟悉了再说吧~~
  KornLee 当前离线   回复时引用此帖
旧 03-09-30, 15:24 第 8 帖
777
 
777 的头像
 
 
已封禁  
  注册日期: Jun 2003
  我的住址: 中国
  帖子: 990
  精华: 6
 

能不能不要输入路径,让脚本做就行了。
  777 当前离线   回复时引用此帖
旧 03-09-30, 16:24 第 9 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 777 发表
能不能不要输入路径,让脚本做就行了。
那取决于用户的PATH!
  KornLee 当前离线   回复时引用此帖
旧 03-09-30, 16:30 第 10 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

引用:
最初由 777 发表
能不能不要输入路径,让脚本做就行了。
如果你是把音乐都是放进同一个目录就好做了,把这个目录加进第五行把$2替换掉,比如,你的音乐一般都是下载到/root/music目录的话,可以这么做:
把MDIR=$2改成MDIR=/root/music,这样就OK了,
可以这样调用:
#fm 暗香
Xmms is playing 暗香.mp3....
  kiron 当前离线   回复时引用此帖
旧 03-09-30, 18:37 第 11 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

要是你想创建一个新的目录为了放新下载的音乐,那脚本还能找到吗?

惭愧~~~~脚本看不懂,:o给你提个建议。
  devel 当前离线   回复时引用此帖
旧 03-09-30, 19:00 第 12 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

引用:
最初由 devel 发表
要是你想创建一个新的目录为了放新下载的音乐,那脚本还能找到吗?

惭愧~~~~脚本看不懂,:o给你提个建议。
太可惜,不能找到了,如果你加搜索路径的话就还可以找到,不加就不行了,
sorry!!!不记得给脚本加注释了,原稿不可编辑了,在下面补上

代码:
#!/bin/bash #this scricpt for find a song from a directory and play it in xmms. #fm SONG="$1.mp3" #一共是给出两个参数给脚本,第一个参数为歌名,加 #上.mp3,所以只支持mp3格式的歌曲。这样就有了 #歌曲的全名,赋给变量SONG MDIR=$2 #第二个参数是搜索路径,赋给变量MDIR SONGPA=`find $MDIR -name $SONG` #调用find命令在$MDIR搜索名为$SONG #的歌,并把找到的路径给变量 #SONGPA,若是找不到,在RH下不会 #给出信息,SONGPA变量为空 if [ "$SONGPA" = "" ] #这里本来用$?来判定find命令是否有找到歌曲的, #但是测试了几次发现find命令的返回值都是0,没法判 #定,只好用变量SONGPA来判定。SONGPA为空,表示 #没有找到歌曲,执行下一行的then语句 then echo "Sorry,there is not $SONG in $MDIR!!!!" else echo "Xmms is playing $SONG..." #若是找到路径,则SONGPA有值,就调 #用XMMS播放,并给出播放信息。 xmms -p $SONGPA fi

此帖于 03-09-30 19:03 被 kiron 编辑.
  kiron 当前离线   回复时引用此帖
旧 03-09-30, 20:17 第 13 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

谢谢!!!

我用的是mplayer ,我就是不懂在命令后面 跟个参数。我一般是先运行命令,在输入目标的。
你能教教我要怎么做吗?


我的RedHat 8.0出毛病了。
[root@localhost scr]# cat mp
#!/bin/bash
mount /mnt/d 2>/dev/null
a=`pwd
cd /mnt/d/media/good/
while true
do
echo "input music name: (exit if you enter q )"
read $name
if [$name = "q"];then echo "Good bye ! dear";exit 0;fi
mplayer $name
echo "music already played complete !"
fi

[root@localhost scr]# mp
/root/bin/mp: line 3: unexpected EOF while looking for matching ``'
/root/bin/mp: line 14: syntax error: unexpected end of file
[root@localhost scr]# ls /root/bin
ls mp tcpdump up
[root@localhost scr]# ./mp
./mp: line 3: unexpected EOF while looking for matching ``'
./mp: line 14: syntax error: unexpected end of file
[root@localhost scr]# file mp
mp: Bourne-Again shell script text executable
[root@localhost scr]# echo $0
bash
[root@localhost scr]# exit
exit
[root@localhost ~]# bash
bash: alia: command not found
[root@localhost root]#
  devel 当前离线   回复时引用此帖
旧 03-09-30, 20:28 第 14 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 devel 发表

...
我的RedHat 8.0出毛病了。
[root@localhost scr]# cat mp
#!/bin/bash
mount /mnt/d 2>/dev/null
a=`pwd
...
[root@localhost root]#
a=`pwd
你的第三行,看看少了什么!:(

此帖于 03-09-30 20:30 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-09-30, 20:49 第 15 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

还有一处出了错呢~~正考虑打个洞钻进去。:o
唉~~怎么近来来是出错

那我运行bash怎么显示有错,错在哪里?
  devel 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 13:16


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org