by shigemk2

当面は技術的なことしか書かない

Finderとコマンドラインをリンクさせたい

Emacs, Mac OS X and Unix: コマンドラインからゴミ箱に捨てるシェルスクリプト

id:masutaka26から教えて頂きました。
ありがとうございます。

やっていることはAppleScript を内部で使うシェルスクリプトの作成なので、
まずはシェルスクリプトのパスを通すところから。

1. シェルスクリプトのパスを通す
.zshrcにこの記述を追加する。

export PATH=~/bin:$PATH

2. シェルスクリプト作成
上記リンクからまるまるパクリです。

trash
ゴミ箱(~/.trash)に捨てる

#!/bin/sh

# Trash items.
# Usage: trash [files]

# Backslashes and doublequotes must be escaped.
# replace  \  -->  \\
# replace  "  -->  \"
CWD=`pwd | sed -E -e 's/\\\\/\\\\\\\\/g' -e 's/"/\\\\"/g'`

osascript - "$@" <<EOF
on run argv
    set itemArray to {}

    repeat with i in argv
        if first character of i is not "/" then
            set i to "$CWD" & "/" & i
        end if
        set itemArray to itemArray & (i as POSIX file as Unicode text)
    end repeat

    tell application "Finder"
        delete itemArray
    end tell
end run
EOF

このコマンドの利点は、コマンド実行直後なら、Finderでcommand+zを実行すると
ゴミ箱に捨てたファイルが元に戻ることだろう。

ワイルドカードやパイプも使えるかもしれないね☆

reveal
Finder で「オリジナルを表示」する

#!/bin/sh

# Reveal in Finder.
# Usage: reveal [files]

CWD=`pwd | sed -E -e 's/\\\\/\\\\\\\\/g' -e 's/"/\\\\"/g'`

osascript - "$@" <<EOF
on run argv
    set itemArray to {}

    repeat with i in argv
        if first character of i is not "/" then
            set i to "$CWD" & "/" & i
        end if
        set itemArray to itemArray & (i as POSIX file as Unicode text)
    end repeat

    tell application "Finder"
        activate
        reveal itemArray
    end tell
end run
EOF

getinfo
Finder で「情報を見る」

#!/bin/sh

# Show information window in Finder.
# Usage: getinfo [files]

CWD=`pwd | sed -E -e 's/\\\\/\\\\\\\\/g' -e 's/"/\\\\"/g'`

osascript - "$@" <<EOF
on run argv
    repeat with i in argv
        if first character of i is not "/" then
            set i to "$CWD" & "/" & i
        end if
        set i to (i as POSIX file as Unicode text)

        tell application "Finder"
            open information window of item i
        end tell
    end repeat

    tell application "Finder"
        activate
    end tell
end run
EOF

ファイル名はtrash、reveal、getinfoとし、
~/username/binに保存する。
保存したファイルは、chmodを利用して実行権限を付与する。

以上により、これらのシェルスクリプトをコマンドとして実行出来る。

使い方はターミナルから

% trash hoge.txt
% reveal hoge.txt
% getinfo hoge.txt

ね、便利かな?