因为Linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:
1、rpm包安装的
可以用rpm -qa
看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”
。
[root@xia ~] rpm -qa | grep ruby
2、以deb包安装的
可以用dpkg -l
能看到。如果是查找指定软件包,用dpkg -l | grep “软件或者包的名字”
;
[root@xia~]dpkg-l|grepruby
3、yum方法安装的
可以用yum list installed
查找,如果是查找指定包,命令后加 | grep “软件名或者包名”
;
[root@xia ~] yum list installed | grep ruby
4、以源码包自己编译安装的
例如.tar.gz
或者tar.bz2
形式的,这个只能看可执行文件是否存在了,
上面两种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin
目录下。
说明:其中rpm yum
是Redhat系linux的软件包管理命令,dpkg
是debian系列的软件包管理命令
shell脚本怎么判断源码包是否安装
#!/bin/bash
read -p "input your rpm_packet'name:" i
x=`rpm -qa | grep $i`
if [ `rpm -qa | grep $i |wc -l` -ne 0 ];then
echo -e "yes,the packet_list: \n$x"
else
echo "no"
fi
1、获取shell函数调用的返回值:
#!/bin/sh
info()
{
cat jlb.sh
}
res=`info`
echo "state: "$?
echo "res: "${res}
说明:
res=`info`
这一行为调用函数info,里面的符号`不是单引号,而是Esc按键下面的那个,另外$?返回的为上一条命令的执行状态,不是返回值;
2、获取shell命令的返回值,原理同上,例如:
#!/bin/sh
info=`cat jlb.sh`
echo "info: "${info}
说明:同1