#!/bin/bash option=$(zenity --title="ディレクトリへのシンボリックリンク作成ツール" --list --checklist --text="このツールではディレクトリへのシンボリックリンクを作成します。希望するオプションにチェックしてください" --multiple --column="↓チェック" --column="" --column="オプション" 1 1 "生成するリンクの名前を自分で入力する(これをチェックしない場合、できる限りリンク先と同じ名前にします)" 2 2 "絶対パスでリンクする(これをチェックしない場合、相対パスにします)") if [ $? = 1 ] then zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="キャンセルが押されたので、終了します。" exit 0 fi if [ a$(echo $option|grep 1) = "a" ] then entername=0 else entername=1 fi if [ a$(echo $option|grep 2) = "a" ] then fullpath=0 else fullpath=1 fi zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="次のウィンドウでは、その中にリンクを作成するディレクトリを1つだけ選択してください。" savedir=$(zenity --title="ディレクトリへのシンボリックリンク作成ツール" --file-selection --directory) if [ $? = 1 ] then zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="キャンセルが押されたので、終了します。" exit 0 fi cd $savedir zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="次のウィンドウでは、リンク元のディレクトリを選択してください。" origin=$(zenity --title="ディレクトリへのシンボリックリンク作成ツール" --file-selection --directory --multiple --separator=" ") if [ $? = 1 ] then zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="キャンセルが押されたので、終了します。" exit 0 fi for a in $origin do if [ $fullpath = 0 ] then savedir1=$savedir savedir1=$(echo $savedir1|cut -c2-) link=$(echo $a|cut -c2-) until [ a$(echo $link|grep \/) = "a" -o a${savedir1} = "a" ] do if [ a$(echo $link|sed -e "s/\//\n/g"|head -n 1) = a$(echo $savedir1|sed -e "s/\//\n/g"|head -n 1) ] then num=$(expr $(echo $link|sed -e "s/\//\n/g"|head -n 1|wc -c) + 1) link=$(echo $link|cut -c${num}-) savedir1=$(echo $savedir1|cut -c${num}-) else break fi done if [ a$savedir1 = "a" ] then num=0 else num=$(echo $savedir1|sed -e "s/\//\n/g"|wc -l) fi while [ $num -gt 0 ] do link="../"${link} num=$(expr $num - 1) done else link="$a" fi linkname=$(echo $a|sed -e "s/\//\n/g"|tail -n 1) if [ $entername = 1 ] then nautilus ${savedir} && sleep 2 linkname=$(zenity --title="ディレクトリへのシンボリックリンク作成ツール" --entry --entry-text=${linkname} --text="${link}へのリンクの名前を入力してください。ただし、リンクを作成するディレクトリが別ウィンドウで開いたはずです。そこに無い名前にしてください。") if [ $? = 1 ] then zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="キャンセルが押されたので、終了します。" exit 0 fi fi while [ -e "${savedir}/${linkname}" ] do nautilus ${savedir} && sleep 2 linkname=$(zenity --title="ディレクトリへのシンボリックリンク作成ツール" --entry --text="生成したいリンク${savedir}/${linkname}が存在します。リンクを作成するディレクトリ${savedir}が別ウィンドウで開かれたはずです。存在しない名前をリンクの名前として入力してください。") if [ $? = 1 ] then zenity --title="ディレクトリへのシンボリックリンク作成ツール" --info --text="キャンセルが押されたので、終了します。" exit 0 fi done ln -s "${link}" "${linkname}" if [ $? = 1 ] then zenity --warning --title="ディレクトリへのシンボリックリンク作成ツール" --text="${savedir}/${linkname}を作成できません。\nおそらく${savedir}への書き込み権限がありません。\n書き込み権限があるディレクトリを指定してください。\nリンクを作成せずに終了します。" exit 0 fi done exit 0