シェルのtouchコマンドをFinderでも使いたい
私は基本的にMac万歳な人なのですが、ときどきWindowsもいいなーと思うときが あります。
空のテキストファイル作成機能もそのひとつです。
Windowsのエクスプローラーには「新規作成」の中にフォルダだけでなく、テキストファイルやビットマップ画像もあります。これはちょっと羨ましい。
パソコンで何かデータを作る際には2種類のパターンがあります。
- 先に空のファイルを作ってからそれをアプリで開く
- とりあえずアプリを起動してデータを入力してから保存する
どっちが優れているというワケではなく、両方使い分けられると便利なんですよね。
Macでもターミナルでtouchコマンドを使えば空ファイルが作成できます。
touch file.txt
でもいちいちターミナルを開くのも面倒。
というわけで、今開いているフォルダの中に空のテキストファイル作成するAutomatorアプリを作りました。
AppleScriptでフォルダのパスを取得してシェルコマンドでtouchする
コードは以下の通りです。
Automatorの「アプリケーション」として作成します。
やっていることは単純です。
1段目の「AppleScriptを実行」ブロックでFinder最前面のウインドウのパスを取得しています。
パスはPOSIX形式でreturnして引数として次のブロックに渡します。
tell application "Finder"
set this_folder to target of front window as alias
end tell
return POSIX path of this_folder
2段目の「シェルスクリプトを実行」ブロックでは、前段からパスを引数として受け取ります。引数は変数$1で取得できます。
重複しないファイル名を作るためにdateコマンドで"日付と時間.txt"の文字列を生成します。
最後にtouchコマンドの引数にパス($1)とファイル名($filename)を合体させておしまいです。
filename=`date +%Y%m%d_%H%M%S`.txt
touch $1$filename
Finderのツールバーにアプリを登録
アプリケーションはファインダーのツールバーに登録して使います。
コマンドキーを押しながらドラッグ&ドロップすると登録できます。
クリックすればそのフォルダにファイルができる
使い方は、ファイル作りたいフォルダを開いてツールバーのアプリアイコンをクリックするだけです。
すぐに日付と時間をファイル名にしたテキストファイルが作られます。
アプリのアイコンを変えたりしたい気もしますが、まぁ実用品なのでこのままでもいいかなー。
テキスト以外はテンプレートを用意してコピーすればいい?
テキストファイルは空でも良いのですが、画像ファイルなんかは適当な大きさを持った白地の画像とかが必要です。
その場合はプログラムで生成するよりも、適当なテンプレートファイルをどこかに用意しておき、自動コピーするようなAutomatorアプリを作ればいいかなと思います。