macOSでコマンドを使ってみよう! ――ターミナルから広がる新しい世界

macOSでは、日常的なほとんどの操作をGUIGraphical User Interface画面上のアイコン等で操作するインターフェイス)で行うようになっていますが、CUICharacter User InterfaceやCLICommand 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」に変更する
画面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でコマンドラインを組み立てる
画面2 Numbersでコマンドラインを組み立てる

このように、⁠コマンドを使う」と言っても、何もかもをターミナルでやらねばならないというわけではありません。便利そうなところから徐々に取り入れていけばOKです。ポイントは、コマンドを使うという発想と、その⁠とっかかり⁠となる少しの知識があるかどうかです。


本記事で使用しているlsやmvなどのコマンドはUNIX系OSで広く使われています(本記事内ではpbcopyのみmacOS独自のコマンドです⁠⁠。したがって、macOSのコマンドラインで得た知識はLinuxなどのUNIX系OSで容易に活かすことができます。コマンドラインに親しむことで、きっと世界が広がります。

※注)
[アプリケーション⁠⁠-⁠ユーティティ]から辿れます。

西村めぐみ(にしむらめぐみ)

千葉県出身。MIDIシーケンサーを作ることを夢見て勉強しはじめたプログラミングにはまりプログラマに。DOS生まれLinux育ちでコマンドラインが好き。主な著書は図解でわかるLinuxのすべて(日本実業出版社),シェルの基本テクニック(IDGジャパン),はじめてでもわかるSQLとデータ設計(ディーアート)など。