rcmdnk's blog

Take Control of the Mac Command Line with Terminal 電子書籍: Joe Kissell

MacにはOSを操作するコマンドが色々と用意されていますが なかなか知る機会も無ければ覚えるのも難しいものです。

m-cliはそんなシステムコマンドをわかりやすいサブコマンドとして まとめたツールです。

m-cli

Swiss Army Knife for Mac OS X、ということで Macの色々な便利ツールをmというコマンドから引っ張りだして 使える様にしたまとめツールです。

インストールはHomebrewで

$ brew install m-cli

もしくは直接

$ curl -fsSL https://raw.githubusercontent.com/rgcr/m-cli/master/install.sh | sh

curlでインストールはちょっと議論になるところでもあるので きちんと確認してから。

インストールするとmというコマンドが使える様になるので取り敢えず打ってみると、

$ m

  Swiss Army Knife for Mac OS X ! 


usage:  m [OPTIONS] COMMAND [help]

    OPTIONS
        --update        update m-cli to the latest version
        --uninstall     uninstall m-cli

    COMMANDS:
        help
        battery
        bluetooth
        dir
        disk
        dns
        dock
        finder
        firewall
        gatekeeper
        group
        hostname
        info
        lock
        network
        nosleep
        ntp
        restart
        safeboot
        screensaver
        service
        shutdown
        sleep
        timezone
        trash
        update
        user
        volume
        vpn
        wallpaper
        wifi
$

こんな感じでヘルプが出てきます。 サブコマンド一覧が出てきますが見れば大体出来ることが分かりそうです。

各サブコマンドのヘルプが見たい場合はサブコマンドにhelpを付けて実行すると

$ m battery help
    usage: m battery [ status | help ]

    Examples:
      m battery status    # get the battery status

こんな感じでそのサブコマンドに関する詳細なヘルプが出ます。

一応サブコマンドのヘルプ一覧はReadme にあるので最初にざっと見ておくと良いかもしれません。

m-cliからMacのシステムコマンドを学ぶ

m-cliはシェするクリプトで作られているので中身を見ると 実際どの様なコマンドが呼ばれているか見ることが出来ます。

大元は

$ which m
/usr/local/bin/m

にあるmコマンドですが、その中で

export MPATH=/usr/local/Cellar/m-cli/0.1.1
...
COMMAND=$1; shift;

[ ! -f ${MPATH}/plugins/${COMMAND} ] && usage
${MPATH}/plugins/${COMMAND} "$@"

という行があり、この中のpluginsというディレクトリの中のファイルを呼んで居ることが分かります。 この中に

$ ls /usr/local/Cellar/m-cli/0.1.1/plugins/
battery     dns         gatekeeper  lock        restart     shutdown    update      wallpaper
bluetooth   dock        group       network     safeboot    sleep       user        wifi
dir         finder      hostname    nosleep     screensaver timezone    volume
disk        firewall    info        ntp         service     trash       vpn

こんな感じで各サブコマンドに対応するシェするクリプトが入っています。

GitHub上ではrgcr/m-cli/plugins にあります。

ちょっと見てみると、 battery なんかは

rgcr/m-cli/plugins/batery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh


help(){
    cat<<__EOF__
    usage: m battery [ status | help ]

    Examples:
      m battery status    # get the battery status
__EOF__
}

battery_status(){
    pmset -g batt
}

case $1 in
    help)
        help
        ;;
    status)
        battery_status
        ;;
    *)
        help
        ;;
esac

# vim: set ts=4 sw=4 softtabstop=4 expandtab

こんな感じになっていて、m battery statusとすると実際には

$ pmset -g batt

というコマンドを呼んでることが分かります。 実際に両方のコマンドを実行してみれば同じ結果が戻ってくるのがわかると思います。

他のスクリプトではdefaultsコマンドを使ったりしているものもあります。

また、いくつかのスクリプトではosascriptを使って 簡単なAppleScriptを実行しているものもあります。

volume の中では

volume
1
2
3
4
mute(){
    osascript -e "set volume output muted true"
    echo "Vol, Mute: true "
}

こんな感じのミュート用の関数が用意されていて、 AppleScriptでボリュームをコントロールしていることが分かります。

こんな感じでMacをコントロールする術をm-cliから学ぶことが出来ると思います。

Mac-CLI

Mac-CLIはm-cliを作るにあたって参考にされた同じ様なツールです。

こちらはmysqlssh等、Macのシステムコマンド以外にも色々とまとめて macというコマンドから出来る様になっています。

今のところHomebrewにはオフィシャルなFormulaは入っておらず、 インストールするにはcurlで、

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/guarinogabriel/mac-cli/master/mac-cli/tools/install)"

などしてインストールします。

こちらは全てサブコマンドのさらに細かいコマンド設定は:でくっつけて表現する様な形になっていて、 volumeなどは

mac volume X: Set the volume from the terminal - X = Level (0-100)
mac volume:mute: Mute volume
mac volume:unmute: Unmute volume
mac volume:ismute: Check if the volume is muted or not

みたいな感じで、muteとかは:volumeにくっつけて

$ mac volume:mute

とするようになっています。

mysql等、システム以外のコマンドを含めると沢山コマンドがありますが、 Macのシステムを管理する、と言う意味ではm-cliの方が ソースコードも含めて良くまとまっていてわかりやすいと思います。

Sponsored Links
Sponsored Links

« Skype+Microsoftが昔ながらのウイルスソフト的な攻撃をしてくる 120年分のオリンピック100m走金メダリストを一斉に走らせたら »

}