【Linux】CentOS7上rpm命令批量卸载删除模糊rpm包名例如,我要删除如下⽂件名匹配上wine的所有⽂件
如果单独rpm删除卸载⼀个rpm包的话,命令如下:
rpm -evh --nodeps wine-common-1.8.arch
-e 卸载
-vh 合在⼀起使⽤,展⽰详细信息和进度条
--nodeps 不⽤查其他依赖,直接卸载这个
wine-common-1.8.arch ⽂件名,从上⾯复制下来的
但是,上⾯这个wine打头的⽂件实在是很多,不想⼀个⼀个卸载,怎么办了?
1.⾸先vim命令新建并打开⼀个⽂件,
vim uninstall
粘贴如下⽂本:
进⼊之后,键盘i进⼊编辑模式,粘贴下⾯的话
#!/bin/bash
>>>>>>>>>>>>####
#
# function: batch uninstall rpm packages
# setup:
# 1. copy the scripts and save as a file, such as: ex.sh
# 2. switch to root user. su - root
# 3. change the file's permission: chmod +x ex.sh
# 3. running the script with no parameter: ./ex.sh
# runing:
# uninstall [rpm package name]
# author: Topurce Zhou (topurce#at#hotmail)
#
>>>>>>>>>>>>####
if [ "$UID" -ne 0 ]
then
echo -e 'must be \E[34m\033[1mroot\033[0m to run this script.'
echo -ne '\E[0m'
exit 67
fi
if [ ! -f /usr/bin/uninstall ]
then
echo ""
scripts="$(cat $0)"
declare -i index=1
cat $0 | while read line
do
if (( index == 19 ))
then
echo 'echo -e "must be \E[34m\033[1mroot\033[0m to run this script."'>>/usr/bin/uninstall
echo 'echo -ne "\E[0m"'>>/usr/bin/uninstall
elif (( index == 23 ))
then
echo 'stips="searching packages for \"$1\":"'>>/usr/bin/uninstall
echo 'usage="usage: $0 \"package name\""'>>/usr/bin/uninstall
elif (( index != 19 && index != 20 && (index<23 || index>52) ))
then
echo $line>>/usr/bin/uninstall
fi
index+=1;
done
chmod +x /usr/bin/uninstall
echo "try \"uninstall [package name]\" again."
exit
fi
stips="searching packages for \"$1\":"
usage="usage: $0 \"rpm package name\""
if [ $# -eq 0 ]
then
echo "$0: no rpm packages given for uninstall."
echo $usage
elif [ $# -gt 1 ]
then
echo $usage
else
echo $stips
rpms="$(rpm -qa | grep $1)"
declare -i count=0
for rpmk in $rpms
do
count+=1
echo "package: $rpmk"
done
if (( count == 0 ))
then
echo "no packages"
exit
fi
echo "packages: $count"
echo
read -p "are you sure you want to uninstall all above packages?(y/n)"
if [[ $REPLY == [Yy] ]]
then
echo "starting to "
for rpmk in $rpms
do
count+=1vim的命令
echo "uninstalling package: $rpmk"
rpm -e --nodeps $rpmk
if [ $? -eq 0 ]
then
echo "done"
else
echo "faild to uninstall $rpmk"
fi
done
fi
fi
View Code
记住,最后⼀⾏不⽤给回车或者换⾏。
粘贴完成,Esc以下,shift+Q以下,x保存退出。
2.接下来,修改⽂件权限为可执⾏
ls -l
查看当前⽂件的详细信息,包含权限
chmod +x uninstall
为uninstall⽂件添加x 即可操作的权限
再次查看,就可以看到uninstall⽂件当前已经有了可读可写可操作的权限了。
3.最后执⾏本⽂件
.
/uninstall
./⽂件名,就是执⾏本⽂将
可以看到
提⽰中,要求在执⾏./uninstall⽂件的时候,直接在后⾯把rpm package name加上⼀起执⾏,注意这⾥的rpm包名字是模糊查询的,【注意】:⼀定要注意,如果你不能确定rpm包名模糊匹配下删除的⽂件,涉及到linux系统
的,千万不要使⽤此⽅法去批量卸载删除。
正因为是模糊查询的,因此本⽅法中是由相关提⽰的,你可以在下⾯执⾏过程中,查看是否不会涉及到你不想卸载的东西⽽决定是否继续。上⾯接着,要加上rpm包名,所以执⾏下⾯的命令:
./uninstall wine
wine就是我要卸载的包名,模糊查询,出来下⾯的结果
上⾯将你即将要卸载的⽂件⼀⼀列出来了,确定要批量删除的话
键⼊y即可。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------批量删除完成-------------------------------------------------------------------------------------------
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
Linux命令实验题目
« 上一篇
linux中syntax on的作用
下一篇 »
发表评论