macOSでは、日常的なほとんどの操作をGUI(Graphical User Interface 、画面上のアイコン等で操作するインターフェイス)で行うようになっていますが、CUI(Character User Interface )やCLI(Command Line Interface )と呼ばれる「文字で操作するインターフェイス」も備わっています。コンピュータに対する文字による指示がコマンド (command ) 、コマンドを入力する場所や入力した内容がコマンドライン (command line )です。macOSの場合、「 ターミナル」( ※注 )というアプリケーションでコマンドを入力、実行します。
[活用例1]コマンドでファイル名を一括変換!
ファイル名を一定のルールに従って変更する、これはコマンドラインの得意領域です。やり方はいろいろですが、たとえば、「 ls *.png | <文字列置換コマンド> | bash
」のように、lsコマンドで取得したファイル名のリストを元に、文字列置換コマンドで「ファイル名を変更するためのコマンドライン」を作り、bash(シェル)に渡して実行するという方法があります。ファイル名を変更するためのコマンドラインは「mv <元のファイル名> <新しいファイル名>
」です。ちなみに、mv部分をcpに変えるとファイルのコピーとなります。
画面1 では、この方法でスクリーンショットのファイル名を「<年>-<月>-<日>-<時分秒>.png」に変更しています。ファイル名の変更をいきなり実行するのは心配なので、❶の「ls *.png | <文字列置換コマンド>
」で実行内容を確認してから、❷で❶の末尾に「| bash
」を付け加えて実行しています。なお、一度実行したコマンドは上下の矢印キーで呼び出すことができます。元のファイルが5つだとメリットが感じにくいかもしれませんが、100個でも1000個でも手間は同じです。
画面1 スクリーンショットのファイル名を「年-月-日-時分秒.png」に変更する
※ スクリーンショットのデフォルトのファイル名は「固定文字列、スペース、日時」となっており、固定文字列部分をimageに変更するにはターミナルで「defaults write com.apple.screencapture name "image"
」を、日時を含めたくない場合は「defaults write com.apple.screencapture include-date -bool false
」を実行する。なお、元に戻したい場合は「defaults delete com.apple.screencapture
」を実行する。
<文字列置換コマンド>
部分はsedを使い「ls *.png | sed -E 's/.*(20.*) (.*)\.(.*)\.(.*)\.png/mv "&" \1-\2\3\4.png/'
」で元のファイル名から日付と日時だけを取り出して空白と時刻のピリオドを取り除いていますが、ファイル名を「image<連番>.png」に変更するなら「ls *.png | awk 'BEGIN{i=0}{print "mv","\x22" $0 "\x22","image"i++ ".png"}'
」のようにします。
[活用例2]表計算アプリケーションを利用する
「ファイル名を変更するためのコマンドライン」を表計算アプリケーションやテキストエディタで作成してもかまいません。たとえば、画面2 では表計算アプリケーションのNumbersでコマンドラインを作成しています。ここでは関数を使ってファイル名を生成していますが、手入力でも良いし、複数の列を使って組み合わせる方法もあります。
画面2 Numbersでコマンドラインを組み立てる
このように、「 コマンドを使う」と言っても、何もかもをターミナルでやらねばならないというわけではありません。便利そうなところから徐々に取り入れていけばOKです。ポイントは、コマンドを使うという発想と、その“ とっかかり” となる少しの知識があるかどうかです。
本記事で使用しているlsやmvなどのコマンドはUNIX系OSで広く使われています(本記事内ではpbcopyのみmacOS独自のコマンドです) 。したがって、macOSのコマンドラインで得た知識はLinuxなどのUNIX系OSで容易に活かすことができます。コマンドラインに親しむことで、きっと世界が広がります。