DTPab

DTPにまつわるあれこれ

シンボリックリンクを作るドロップレット

概要

シンボリックリンク作ることがあんまりないようでたまにあるんですよ。
シェルスクリプト使ったら思いの外簡単に実装できたので載せておきます。

コード

on open (theList)
    set shellScpt to "ln -s "
    tell application "Finder"
        repeat with tgt in theList
            set myFile to tgt's POSIX path
            set symbolName to do shell script "n=" & myFile's quoted form & ";echo \"${n##*/}\""
            do shell script shellScpt & myFile & " ~/desktop/" & symbolName
        end repeat
    end tell
end open

これをスクリプトエディタにコピペして、アプリケーション形式で書き出せばOKです。

説明とか

シェルスクリプトは都合2回使ってます。
1回目はファイル名の抽出(POSIXパスの最後のスラッシュから末尾までを取得する)、2回目はシンボリックリンクを作成です。
注意点としては、ファイル名(絶対パスの中のどこか)に半角スペースが使われていると挙動が変わります*1

書き出し先

do shell script shellScpt & myFile & " ~/desktop/" & symbolName
この部分がシンボリックリンク作成部分になるので、ここを書き換えればリンクの書き出し先を変えられます。

" ~/desktop/"を適当なパスに変更してもらえればいいのですが、先頭のスペースを消さないようにしてください。このスペースがコマンド上の区切りになっており、これより前がリンクとして作成する元のファイルパス、後ろがリンク作成先のパスになっています。

参考

ファイル名を抽出するコマンド(検索置換)について参考にしました。 eng-entrance.com

シンボリックリンク作成について参考にしました。 www.atmarkit.co.jp

*1:詳しくは ln -s コマンドについて見てみてください。参考サイトの後者がそれです