这个ok了,楼主再接再励,解决无法卸载的臭虫gududehuo 写了:我改了下,脚本里确实有错误,可能替换的时候替换错了,我这里没有提示让我指定文件格式(我试验挂载的是一个wubi安装的root.disk文件),而是直接出现了如附件所示的错误信息,并且创建的空文件夹没有删![]()
photor再帮我试下
![:em09 :em09](./images/smilies/em09.gif)
这个ok了,楼主再接再励,解决无法卸载的臭虫gududehuo 写了:我改了下,脚本里确实有错误,可能替换的时候替换错了,我这里没有提示让我指定文件格式(我试验挂载的是一个wubi安装的root.disk文件),而是直接出现了如附件所示的错误信息,并且创建的空文件夹没有删![]()
photor再帮我试下
是不是因为路径中有空格造成的?我挂载的文件是gududehuo 写了:正在解决正在解决
不过我都能正常卸载,
我能正常卸载,你是所有的挂载光盘都不能卸载吗photor 写了:是不是因为路径中有空格造成的?我挂载的文件是gududehuo 写了:正在解决正在解决
不过我都能正常卸载,
/media/disk/Documents/My Virtual Machines/WINME.iso
我系统是8.10的photor 写了:昨天是在8.10上试验的,路径中带不带空格都不行,今天我换了一台机器,是8.04的,可以成功卸载,而且路径中含有空格的也可以,没明白咋回事
错误提示是加载出错还是卸载出错呢而且在新机器上还发现了一个问题:文件名中有空格不行(有n个空格显示n+1个错误信息),这个绝对是可以重复的臭虫
卸载gududehuo 写了:我系统是8.10的photor 写了:昨天是在8.10上试验的,路径中带不带空格都不行,今天我换了一台机器,是8.04的,可以成功卸载,而且路径中含有空格的也可以,没明白咋回事错误提示是加载出错还是卸载出错呢而且在新机器上还发现了一个问题:文件名中有空格不行(有n个空格显示n+1个错误信息),这个绝对是可以重复的臭虫
我已经更新脚本了,增加了显示哪些程序在访问加载点,并且可以结束访问的进程。photor 写了:卸载gududehuo 写了:我系统是8.10的photor 写了:昨天是在8.10上试验的,路径中带不带空格都不行,今天我换了一台机器,是8.04的,可以成功卸载,而且路径中含有空格的也可以,没明白咋回事错误提示是加载出错还是卸载出错呢而且在新机器上还发现了一个问题:文件名中有空格不行(有n个空格显示n+1个错误信息),这个绝对是可以重复的臭虫
给个贴图吧,我这里这么没看见有什么界面显示你说的新功能,还是跟以前一样?gududehuo 写了:我已经更新脚本了,增加了显示哪些程序在访问加载点,并且可以结束访问的进程。photor 写了:卸载gududehuo 写了:我系统是8.10的photor 写了:昨天是在8.10上试验的,路径中带不带空格都不行,今天我换了一台机器,是8.04的,可以成功卸载,而且路径中含有空格的也可以,没明白咋回事错误提示是加载出错还是卸载出错呢而且在新机器上还发现了一个问题:文件名中有空格不行(有n个空格显示n+1个错误信息),这个绝对是可以重复的臭虫
![]()
我怎么卸载都正常的,
![]()
![]()
![]()
功力还不够,看来还得区啃书。
![]()
![]()
![]()
你那里文件名带空格时也能正常卸载吗?看来这样调试没什么线索。可惜我对脚本不熟,只能抽时间再好好折腾你的源代码了gududehuo 写了:
我的xpdf正在运行光盘里的文件,我运行脚本会出现出错提示,然后暗确定就出现是什么程序在访问光盘了,按确定就会kill掉访问程序,然后卸载光盘,删除目录。
代码: 全选
#! /bin/bash
if [ ! -z "$1" ]; then
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS=$1
fi
isopath=$(echo "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}" | sed 's/ /\\ /g ; s/(/\\(/g ; s/)/\\)/g ; s/&/\\&/ ; s/;/\\;/')
test="readlink -f $isopath "
isopath=`eval $test`
isofilename=$(echo "${isopath}" | sed 's/^\/.*\///')
rm /tmp/samenamefilepath
rm /tmp/filepath
rm /tmp/mounterror
rm /tmp/mountedlist.txt
rm /tmp/mountpointlist
rm /tmp/delerror.txt
echo -e '\r' | sudo losetup -a
if [ $? -eq 1 ]
then
mima=$(zenity --title="请输入密码" --hide-text ---entry --text=由于加载光盘需要root权限,请输入root密码)
echo $mima | sudo -S losetup -a
fi
if [ $? -eq 1 ]
then
mima=$(zenity --title="请输入密码" --hide-text --entry --text=不要挑战我的耐心,密码还是错误,请重新输入ROOT密码)
echo $mima | sudo -S losetup -a
fi
if [ $? -eq 1 ]
then
mima=$(zenity --title="请输入密码" --hide-text --entry --text=我受不了了,密码还是错误,请重新输入ROOT密码)
echo $mima | sudo -S losetup -a
fi
if [ $? -eq 1 ]
then
zenity --info --title="退出" --text=你退出吧,我无话可说!
exit
fi
#zenity --info --text=$mima
#######################################################
function umountdevice() {
loadediso=$(sudo losetup -a)
if [ "${loadediso}" != "" ] ; then
sudo losetup -a | grep /dev/loop | sed 's/\:.* (/ / ; s/),*.*/ /' | while read looppath isloaded ; do
isoloadpath=$(sudo mount|grep "$looppath" | sed 's/^.* on // ; s/ type.*$//')
isloaded=$(echo ${isloaded} | sed 's/ /\\ /g ; s/(/\\(/g ; s/)/\\)/g;s/&/\\&/; s/;/\\;/')
isoloadpath=$(echo ${isoloadpath} | sed 's/ /\\ /g ; s/(/\\(/g ; s/)/\\)/g;s/&/\\&/; s/;/\\;/')
echo -n FALSE >> /tmp/mountedlist.txt
echo -n " " >> /tmp/mountedlist.txt
echo -n ${looppath} >> /tmp/mountedlist.txt
echo -n " " >> /tmp/mountedlist.txt
echo -n ${isoloadpath} >> /tmp/mountedlist.txt
echo -n "/ " >> /tmp/mountedlist.txt
echo -n ${isloaded} >> /tmp/mountedlist.txt
echo -n " " >> /tmp/mountedlist.txt
done
xianshilist="zenity --title="已加载的loop设备" --width=1000 --height=350 --list --checklist --column="选择" --column="loop设备" --column="加载点" --column="文件路径" $(cat /tmp/mountedlist.txt)"
selectlist=`eval ${xianshilist}`
selectlist=$(echo $selectlist | sed 's/|/ /g')
echo $selectlist | sed 's/ /\n/g' | while read looppath ; do
[ "${looppath}"x == ""x ] && exit 0
isoloadpath=`sudo mount|grep "${looppath}" | sed 's/^.* on // ; s/ type.*$//'`
echo -n "${isoloadpath}" | sed 's/ /\\ /g ; s/(/\\(/g ; s/)/\\)/g;s/&/\\&/; s/;/\\;/' >> /tmp/mountpointlist
echo -n "/ " >> /tmp/mountpointlist
done
deldirlist="`cat /tmp/mountpointlist`"
umounttest="sudo umount "$deldirlist""
eval $umounttest
[ "${deldirlist}"x == ""x ] && exit 0
deldir="sudo rmdir "${deldirlist} 2>> /tmp/delerror.txt""
eval $deldir 2>> /tmp/delerror.txt
[ -s /tmp/delerror.txt ] && zenity --title= --text-info --filename=/tmp/delerror.txt
exit 0
fi
[ "${loadediso}"x == ""x ] && zenity --title= --info --text=你没有加载任何的loop设备
}
##################################################################
if [ -d "${isopath}" ] ; then
umountdevice
exit 0
fi
if [ -z ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ] && [ ! -z ${NAUTILUS_SCRIPT_CURRENT_URI} ] ; then
umountdevice
exit -
fi
##################################################################
loadediso=$(sudo losetup -a)
appurl=`echo "${isopath}" | sed 's/^\/.*\///'` #| sed 's/.iso//'`
nrgtest=`echo "${isopath}" | grep "\(\.nrg\)$"`
if [ ! -z "$nrgtest" ]; then
offset="offset=307200"
fi
[ "${loadediso}"x = ""x ] && [ -d /media/"${appurl}" ] && sudo mount -o loop,iocharset=utf8,"${offset}" "${isopath}" /media/"${appurl}" 2> /tmp/mounterror
[ "${loadediso}"x = ""x ] && [ ! -d /media/"${appurl}" ] && sudo mkdir /media/"${appurl}" && sudo mount -o loop,iocharset=utf8,"${offset}" "${isopath}" /media/"${appurl}" 2> /tmp/mounterror
#[ -s /tmp/mounterror ] && sudo rmdir /media/"${appurl}"
[ "${loadediso}" != "" ] && sudo losetup -a | grep /dev/loop | sed 's/\:.* (/ / ; s/)$//' | while read looppath isloaded ; do
isloadedfilename=$(echo $isloaded | sed 's/^\/.*\///')
[ "${isloaded}" != "${isopath}" ] && [[ "${isofilename}" != "${isloadedfilename}" ]] && continue
[ "${isloaded}" != "${isopath}" ] && [ "${isofilename}" == "${isloadedfilename}" ] && isoloadpath=`sudo mount|grep "$looppath" | sed 's/^.* on // ; s/ type.*$//'` && echo "${isoloadpath}" > /tmp/samenamefilepath && continue
[ "${isloaded}" == "${isopath}" ] && isoloadpath=`sudo mount|grep "$looppath" | sed 's/^.* on // ; s/ type.*$//'` && echo "${isoloadpath}" > /tmp/filepath
done
if [ -f /tmp/samenamefilepath ] ; then
while read isoloadpath ; do
zenity --title= --info --text=你选择的文件没有加载,但已经有一个同名文件已经加载到了"${isoloadpath}"
done < /tmp/samenamefilepath
fi
if [ -f /tmp/filepath ] ; then
while read isoloadpath ; do
zenity --title= --info --text=你选择的文件已经加载到了"${isoloadpath}"
done < /tmp/filepath
fi
if [ ! -f /tmp/filepath ] && [ ! -f /tmp/samenamefilepath ] ; then
[ "$loadediso" != "" ] && [ -d /media/"${appurl}" ] && sudo mount -o loop,iocharset=utf8,"${offset}" "${isopath}" /media/"${appurl}" 2>/tmp/mounterror
fi
if [ ! -f /tmp/filepath ] && [ ! -f /tmp/samenamefilepath ] ; then
[ "$loadediso" != "" ] && [ ! -d /media/"${appurl}" ] && sudo mkdir /media/"${appurl}" && sudo mount -o loop,iocharset=utf8,"${offset}" "${isopath}" /media/"${appurl}" 2>/tmp/mounterror
#[ -s /tmp/mounterror ] && sudo rmdir /media/"${appurl}"
fi
ftet="mount: 您必须指定文件系统类型"
[ ! -f /tmp/filepath ] && [ ! -f /tmp/samenamefilepath ] && if [ -s /tmp/mounterror ] ; then
fte=`cat /tmp/mounterror`
[ "$ftet" != "$fte" ] && sudo rmdir /media/"${appurl}" && zenity --title= --text-info --filename=/tmp/mounterror && exit 0
[ "$ftet" == "$fte" ] && filetype=`zenity --title= --entry --text=系统无法识别该文件格式,请你指定文件格式` && sudo mount -t "${filetype}" -o loop,iocharset=utf8,"${offset}" "${isopath}" /media/"${appurl}" 2> /tmp/mounterror
[ -s /tmp/mounterror ] && sudo rmdir /media/"${appurl}" && zenity --title= --info --text=还是无法加载你选中的文件,可能系统无法支持该文件格式或文件已经损坏 && exit 0
[ ! -s /tmp/mounterror ] && zenity --title= --info --text=加载成功 && exit 0
else
zenity --title= --info --text=加载成功 && exit 0
fi