例如,我要刪除如下文件名匹配上wine的所有文件
如果單獨rpm刪除卸載一個rpm包的話,命令如下:
rpm -evh --nodeps wine-common-1.8.6-1.el7.noarch
-e 卸載
-vh 合在一起使用,展示詳細信息和進度條
--nodeps 不用查找其他依賴,直接卸載這個
wine-common-1.8.6-1.el7.noarch 文件名,從上面復制下來的
但是,上面這個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.com) # ################################################################ 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 "building file..." scripts="$(cat $0)" declare -i index=1 cat $0 | while read line do if (( index == 19 )) thenecho '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 uninstall packages..." for rpmk in $rpms do count+=1 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
為文件添加x 即可操作的權限
再次查看,就可以看到文件當前已經有了可讀可寫可操作的權限了。
3.最后執行本文件
./uninstall
./文件名,就是執行本文將
可以看到
提示中,要求 在執行./文件的時候,直接在后面把rpm package name加上一起執行,注意這里的rpm包名字是模糊查詢的,
【注意】:一定要注意,如果你不能確定rpm包名模糊匹配下刪除的文件,涉及到linux系統的,千萬不要使用此方法去批量卸載刪除。
正因為是模糊查詢的,因此本方法中是由相關提示的,你可以在下面執行過程中,查看是否不會涉及到你不想卸載的東西而決定是否繼續。
上面接著,要加上rpm包名,所以執行下面的命令:
./uninstall wine
wine就是我要卸載的包名,模糊查詢,出來下面的結果
上面將你即將 要卸載的文件一一列出來了,確定要批量刪除的話
鍵入y即可。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------批量刪除完成-------------------------------------------------------------------------------------------
*請認真填寫需求信息,我們會在24小時內與您取得聯系。