is4975 님 말씀대로 스크립트를 좀더 수정해 보았습니다.
이미지 마운트
[code:txs0vvgc]
#!/bin/bash
Nautilus script - fuseiso
phiDel (http://blog.foxb.kr/)
Patch by Anna Lee (2009.11.24)
BASENAMECOMMAND="/usr/bin/basename"
FUSERMOUNT="/bin/fusermount"
FUSEISO="/usr/bin/fuseiso"
ZENITY="/usr/bin/zenity"
ECHO="/bin/echo"
SED="/bin/sed"
AWK="/usr/bin/awk"
MKDIR="/bin/mkdir"
RMDIR="/bin/rmdir"
CURRENTDIR=$PWD
변환 할수 있는 확장자명을 선언
IMAGE_ATTRIBUTE="iso bin mdf img bwi nrg"
case $LANG in
en* )
NOTSELECTED="CD-image not selected"
QUESTIONTEXT="CD-image is already mounted.\nWould you like the new mount?"
NOTIMAGE="Not a CD-Image File."
;;
* )
NOTSELECTED="선택한 CD-이미지가 없습니다."
QUESTIONTEXT="이미 마운트된 CD-이미지가 있습니다.\n새로 마운트 하시겠습니까?"
NOTIMAGE="이미지 파일이 아닙니다."
;;
esac
아무것도 선택 되지 않았을 경우 에러 호출
if [ ! $NAUTILUS_SCRIPT_SELECTED_URIS ] ; then
$ZENITY --error --title "Error" --text "$NOTSELECTED"
exit
fi
#유니코드 변환 함수 선언
urldecode(){
x=$ECHO "$@" | $SED 'y/+/ /; s/%/\\\\x/g; s/\//\\\\\//g'
$ECHO "$x" | $SED ‘s/^.*$/’"$x"‘/’
}
FILENAME=$BASENAMECOMMAND $NAUTILUS_SCRIPT_SELECTED_URIS
CD 이미지인지 확인하기 위해 확장자만 분리
FILE_ATTRIBUTE=$ECHO $FILENAME | $AWK -F"." '{print $2}'
대문자를 소문자로 변환
FILE_ATTRIBUTE=$ECHO $FILE_ATTRIBUTE | tr '[:upper:]' '[:lower:]'
파일명으로 생성할 디렉토리
MOUNTDIR="$HOME/urldecode $FILENAME | $AWK -F"." '{print $1}'
"
마운트 할 파일명
FILENAME=urldecode "$FILENAME"
IS_IMAGE_FLAG="N"
#확장자를 선언한 변수를 가져와 루프
for ATTRIBUTE in $IMAGE_ATTRIBUTE ; do
if [ $FILE_ATTRIBUTE = $ATTRIBUTE ] ; then
if [ ! -d "$MOUNTDIR" ] ; then
$MKDIR "$MOUNTDIR"
else
# 마운트할 디렉토리가 존재 한다면 다시 시도 할지 종료할지 질문
$ZENITY --question --title "Question" --text "$QUESTIONTEXT"
if [ $? = 1 ] ; then
exit
fi
# 기존 디렉토리 언마운트
$FUSERMOUNT -u "$MOUNTDIR"
fi
# 홈디렉토리로 이동후 생성한 디렉토리에 이미지 마운트
RESULT=`cd ~ && $FUSEISO "$CURRENTDIR/$FILENAME" "$MOUNTDIR" 2>&1`
# 오류가 발생 했다면
if [ -n "$RESULT" ] ; then
$ZENITY --error --title "Error" --text "$RESULT"
$RMDIR "$MOUNTDIR"
exit
fi
# 정상적으로 마운트가 되면 마운트경로 기록
$ECHO $MOUNTDIR >> /tmp/.imagemount
IS_IMAGE_FLAG="Y"
fi
done
이미지 파일이 아니라면 에러 호출
if [ $IS_IMAGE_FLAG = "N" ] ; then
$ZENITY --error --title "Error" --text "$NOTIMAGE"
fi
[/code:txs0vvgc]
이미지 언마운트
[code:txs0vvgc]
#!/bin/sh
Nautilus script - fuseiso
phiDel (http://blog.foxb.kr/)
Patch by Anna Lee (2009.11.24)
IMAGE_LIST="/tmp/.imagemount"
IMAGE_TMP="/tmp/.imagemount_tmp"
ZENITY="/usr/bin/zenity"
CAT="/bin/cat"
ECHO="/bin/echo"
AWK="/usr/bin/awk"
SED="/bin/sed"
RMDIR="/bin/rmdir"
MOVE="/bin/mv"
REMOVE="/bin/rm"
FUSERMOUNT="/bin/fusermount"
case $LANG in
en* )
FILENOTFOUND="don’t mount Image or \n Can’t open $IMAGE_LIST."
QUESTIONTEXT=" unmount do you want?"
;;
* )
FILENOTFOUND="마운트된 이미지가 없거나 \n $IMAGE_LIST 파일을 열수 없습니다."
QUESTIONTEXT="를 언마운트 하시겠습니까?"
;;
esac
마운트경로 기록 파일이 없을 경우
if [ ! -f "$IMAGE_LIST" ] ; then
$ZENITY --error --title "Error" --text "$FILENOTFOUND"
exit 1
fi
마운트경로 기록파일을 한줄씩 처리
$CAT $IMAGE_LIST | while read IMAGE_LIST_LOAD
do
# 마운트경로에서 파일 이름만 추출
IMAGE_NAME=`$ECHO $IMAGE_LIST_LOAD | $AWK -F"/" '{print $4}'`
# 언마운트 할지 질문
$ZENITY --question --title "Question" --text "$IMAGE_NAME$QUESTIONTEXT"
if [ $? = 0 ] ; then
if [ -d "$IMAGE_LIST_LOAD" ] ; then
RESULT=`$FUSERMOUNT -u "$IMAGE_LIST_LOAD" 2>&1`
# 에러 호출
if [ -n "$RESULT" ] ; then
$ZENITY --error --title "Error" --text "$RESULT"
$ECHO $IMAGE_LIST_LOAD >> $IMAGE_TMP
else
$RMDIR "$IMAGE_LIST_LOAD"
fi
fi
else
$ECHO $IMAGE_LIST_LOAD >> $IMAGE_TMP
fi
done
if [ -f $IMAGE_TMP ] ; then
$MOVE $IMAGE_TMP $IMAGE_LIST
else
$REMOVE $IMAGE_LIST
fi
[/code:txs0vvgc]