mattintosh note

どこかのエンジニアモドキの備忘録

Finder からアーカイブの中身を確認する

ちょっと tar の勉強中なので Finder から選択したアーカイブ内のファイル一覧をテキストエディタで開くシェルスクリプトを考えてみた。

# mode: stdin

while read f
do
    [ ! -f "$f" ] && continue
    
    ### open in term ###
    #tmp=/tmp/`uuidgen`
    
    case "${f##*.}" in
        bz|bz2|gz|tar|tbz|tbz2|tgz|zip)
            ### open in textedit ###
            tar tf "$f" | open -ft
            
            ### open in term ###
            #printf 'tar tf "%s" | less' "$f" > $tmp; chmod +x $tmp; open $tmp
        ;;
        lzma|xz)
            ### open in textedit ###
            which xz && xz -tdc "$f" | tar tf - | open -ft
            
            ### open in term ###
            #which xz && printf 'xz -tdc "%s" | tar tf - | less' "$f" > $tmp; chmod +x $tmp; open $tmp
        ;;
    esac
done

open -ft で標準入力から受け取った結果をユーザーデフォルトテキストエディタで開く。Apple デフォルトのテキストエディタだと文字エンコーディングによっては開けないことがあるので CotEditor.app などにしておくといいかも。

CotEditor.app

### open in term ### の方のコメントアウトを外せばターミナルアプリでコマンドが実行されて less でファイル一覧が確認できる。また、tar -tvf だと ls -l と同じような出力結果になる。

tar -t って -z とか -j とかの指定が必要かと思ったけど要らないらしい。*.tar.bz2 でも *.tar.gz でも tar -tf だけで中身を確認してくれるし、*.zip にも対応している(zipinfo の役目が…)。*.tar.xz は流石に無理なので xz をテストモードで標準出力。これで解凍せずに tar に送れる。新しい tarxz にも対応してるみたいだから単独でもできるのかも。

欠点は Windows で作成したアーカイブだと日本語が文字化けする可能性があるということ。どうしてもという時は WINE に入れてある 7zFM.exe を使えるのでそれほど拘りはない。

使い勝手は Quick Look プラグイン系の方がいいと思う。

Mac OS でランダム文字列の生成

今までランダム文字列の生成に $$(←これはランダムとは言わないかもしれないけど)や $RANDOM を使っていたけど uuidgen なんていうコマンドがあって、とてつもなく長いランダム文字列を生成してくれることを知った。(長いので1フィールド目か2フィールド目だけで充分なくらい)

$ /usr/bin/uuidgen
2330C8BE-B6DC-43D1-B4F8-457E5E4DBA69