上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(ディレクトリへの)シンボリックリンク作成ツール

Ubuntu9.04用のGTKツール(GUI版)です。他のバージョンでも正常に動作するかもしれません。

ディレクトリへのシンボリックリンクを作成します。先に投稿した、ファイルへのシンボリックリンクの作成ツールを若干変更しただけです。要は
ln -s
ですが、絶対パスだけではなく相対パスでのリンクも作成できます。また、ディレクトリの選択をGUIでできます。作成しようとしたリンクと同じ名前のファイルがあったら、警告を表示して存在しないファイル名を入力するように促します。このときに、存在するファイルやディレクトリを分かってもらうために、nautilusを開きます。

以下のファイルをダウンロード(右クリックして保存)してファイル名をgtk_ln-sD.shに変えてください。
gtk_ln-sD.txt

そして、Ubuntuなどの端末でダウンロードしたファイルの存在するディレクトリに移動して、
$ bash ./gtk_ln-sD.sh
で実行してください。
もしくはダウンロードしたファイルを右クリックして「プロパティ」ー「アクセス権」で
「プログラムとして実行できる」にチェックすれば、
ダブルクリックで「実行する」をクリックすることでも使えるようになります。

gtk_ln-sD.txt
の内容は以下のとおりです。


#!/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

関連記事

テーマ : Linux
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

プロフィール

kiyoshi

Author:kiyoshi
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
since 2011/9/25
現在の閲覧者数:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。