デスクトップにシェルを叩くと新規テキストファイル作成

2018-12-17

ダブルクリックで、簡単に新規ファイル作成

Windowsだとエクスプローラーから、右クリックメニューで新規テキストファイルを作成する事ができますが、macOSだとFinderにその項目がありません。「Automator」だとその機能を追加する事ができるような記事を見かけましたが、同じ手順でおこなってもOSバージョン違いが右クリックメニューにはでてきませんでした

他にいい方法が無いか考えましたが、新規ファイルを作るシェルスクリプトを作って、新規ファイルを作成したらテキストエディタに渡すようなものを作れば良いと思ったので、その方法を紹介します

新規ファイルを作成してテキストエディタで開くシェルスクリプト

シェルスクリプトは以下のようになります。
簡単な流れですが、touchコマンドでテキストファイルを作成して、そのファイルをテキストエディタで開いているだけです。テキストファイル作成時に同一ファイル名が無いか簡単にチェックして、同一ファイルがあればそのファイル名に末尾に+1のような感じで作成しています

#!/bin/bash

# 新規ファイルを作成するディレクトリ
DESKTOP_DIR=~/Desktop

# 同名のファイルが有れば、そのファイル名+1とする
cnt=`ls ${DESKTOP_DIR} | grep newtext | grep -v grep | grep txt |  wc -l`
fcnt=`echo $cnt`
if [ "$fcnt" -gt 0 ]; then
  FILENAME=${DESKTOP_DIR}/newtext_${fcnt}.txt
else
  FILENAME=${DESKTOP_DIR}/newtext.txt
fi

# touchコマンドd新規テキストを作成
touch ${FILENAME}

# 作成したファイルをテキストエディタで開く。下記の場合では「CotEditor」を使用
open ${FILENAME} -a /Applications/CotEditor.app

exit

簡単にシェルスクリプトの説明です

下記では、新規ファイルを作成するディレクトリを設定しています

DESKTOP_DIR=~/Desktop

下記では、cnt=ls ~/Desktop/ | grep newtext〜〜で、同一ファイ名が数をカウントしてます
fcnt=echo $cnt でカウントした数から空白を除去しています
その後、FILENAMEでファイル名と指定して、ファイルのフルパスを変数に入れています
cnt=`ls ${DESKTOP_DIR} | grep newtext | grep -v grep | grep txt | wc -l`
fcnt=`echo $cnt`
if [ "$fcnt" -gt 0 ]; then
  FILENAME=${DESKTOP_DIR}/newtext_${fcnt}.txt
else
  FILENAME=${DESKTOP_DIR}/newtext.txt
fi

上記で作成した新規テキストファイルのtouchコマンドでファイルを作成しています
touch ${FILENAME}

テキストエディタにテキストファイルのパスを渡して起動しています
open ${FILENAME} -a /Applications/CotEditor.app

最後に作成した、シェルスクリプトを「xxxxx.sh」から「xxxx.command」にファイル名を変更します。

また、シェルを実行した際にターミナルを終了する場合は、ターミナルの環境設定で「プロファイル」→「シェル」→「「シャルの終了時:」を「シェルが正常終了した場合は閉じる」に変更します

commandファイルのファイル名変更と、ターミナル終了時の動作の詳細は「ダブルクリックでシェルスクリプトを実行する(macOS)」を参照して下さい

スポンサーリンク