OSXの固有コマンド

提供: MacWiki
2009年1月2日 (金) 22:09時点における219.97.41.191 (トーク)による版

移動: 案内検索

UNIXターミナルで利用できるコマンドのうち、OSXに固有のものを紹介します。 (⇒UNIX入門に戻る)

コマンド/テンプレート に倣って、徐々に分割していきます。(find:コマンド/

目次

open …ファイルやフォルダを開く

openコマンドはFinderにおけるダブルクリック操作に相当する。

open DIRECTORY

を実行すると、指定したフォルダが Finder ウィンドウに表示される。たとえば open /Applications/ を実行すると、Finder ウィンドウに /Applications フォルダが表示される。

open FILE

を実行すると、指定されたファイルを開くデフォルトのアプリケーションでファイルが開かれる。たとえば、open hoge.txt を実行すると、テキストエディットが起動し、より柔軟な操作が可能でhoge.txt が開かれる。

open -a APPLICATION FILE

のようにして、開くアプリケーションを指定することも出来る。指定するアプリケーションが /Applications フォルダ以下にあればアプリケーションのパスを気にする必要はなく、Emacs.app のようにバンドルの拡張子 .app をつける必要もない(つけてもかまわない)。ただし、アプリケーション名に空白を含む場合には「"Adobe Illustrator 10"」などのように引用符で囲んで指定する必要がある。なお、テキストエディットだけは特別で、

open -e file.txt

と -e オプションを指定するだけで file.txt がテキストエディットで開かれる。

open URL

を実行すると、デフォルトの Web ブラウザ(初期状態では Safari)で URL が開かれる。

open afp://(IP adress)/

のようなサービスも利用できる。(文字列 "afp://(IP adress)/" をドラッグ&ドロップしてできたアイコンをダブルクリックすることと同じ)。


なお,

open -a APPLICATION

のように開くファイルを指定しないで -a オプションを付けると、単に指定したアプリケーションが起動する。もちろん、

open -e

とすればテキストエディットが起動する。

また、sudo コマンドを使って

sudo open -a APPLICATION FILE

とすれば管理者権限でアプリケーションが起動し、本来は書き込み権限のないファイルも編集できる。

Tiger の open コマンド

Tiger では使用できるオプションが -a-b-e-f-t の 5 つに増えています.

  • それぞれのコマンドについて,Mac OS X のバージョンごとの違いをきちんと記述する必要がありますね.

pbcopy, pbpaste ...コピーとペーストをコマンドから

pbcopy は標準入力(の内容)をクリップボード(clipboard)へコピーする。pbpaste はクリップボードにあるものを標準出力に渡す。

コマンドの標準出力をコピーする。

コマンド | pbcopy

クリップボードにあるものをファイルに保存する。

pbpaste > ファイル

クリップボードにあるテキスト内容をスクリプト等の標準入力へ入れる.(途中で改行コードをnkfコマンドを用いてLFへ変更している.)

pbpaste | nkf -Lu | myscript


screencapture …スクリーンキャプチャ

Mac OS X は Cmd + Shift + 3、Cmd + Shift + 4 でスクリーンキャプチャが行えますが、コマンドラインツールを使うと保存場所を決める等小回りがききます。デフォルトのフォーマットは 10.3 以前は PDF でしたが、10.4 から PNG になりました。

screencapture [-SWcimswx] [-t<format>] <file>
  • -i : 対話式モード。
  • -W : (-i と併用)ウィンドウキャプチャモード。
  • -S : (-iW と併用)ウィンドウ範囲のスクリーンキャプチャモード。上に重なっているウィンドウが重なってキャプチャされます。
  • -c : ファイルに保存せず、クリップボードに保存する。<file> 指定は無視されます。
  • -C : カーソルもキャプチャする。-i スイッチとは併用できません。

以下のオプションは 10.4 以降対応です。

  • -t<format> : ファイルフォーマット。-t と <format> の間に空白をおいてはいけません。

例:

画面全体をクリップボードにコピーする。

screencapture -c

選択範囲をクリップボードにコピーする。

screencapture -ic

マウスで選択したウィンドウを captue.png として保存する(10.3以前は .pdf に読みかえてください)。

screencapture -iW capture.png
# sleep している間に目的のウィンドウをアクティブにできます。
sleep 2 && screencapture -iW capture.png

sips ... 画像の操作とフォーマット変換

http://pcweb.mycom.co.jp/column/osx/073/

say ... 英語を発音する

コマンド/say を参照して下さい。


以下のコマンドは標準では Mac OS X にはインストールされておらず、Xcode などの Apple 製開発ツールをインストールすると /Developer/Tools にインストールされる。常用するなら /Developer/Tools にパスを通しておくとよい。(参考:パスを通す

CpMac --- ファイルのメタデータとフォークを保持したままファイルをコピーする

コマンド cp では Classic MacOS のファイルが持つリソースフォークなどの情報はコピーされない。 Mac OS X の登場後、リソースフォークをサポートするアプリケーションは次第に減りつつあるが、まだまだリソースフォークを保持したままファイルをコピーしたい場面は多い。そのような場合、CpMac コマンドを用いてリソースフォークを保持したままファイルをコピーすることができる。cp コマンドに比べて利用できるオプションの数はだいぶ少ないが、ほぼ cp と同様の使い方ができる。すなわち、

CpMac FILE TARGET

とすることで、TARGET が既存のディレクトリだった場合には FILETARGET ディレクトリにコピーし、TARGET が存在しないパス名だった場合には、これが新しいファイル名と見なされ、その名前で FILE の複製が作られる。-p オプションを指定すると,ファイルの修正日やアクセス権などの情報もそのままコピーされる.また、

CpMac -r DIRECTORY TARGET

とすることで、DIRECTORY 以下のファイルが、サブディレクトリも含めて TARGET ディレクトリにコピーされる。

ちなみに、リソースフォークなどを保持したままファイルをコピーしたければ、ほかに ditto コマンドを利用することもできる。

なお、Mac OS X 10.4 (Tiger) では cp コマンドがリソースフォークに対応したので、CpMac コマンドは必要なくなった (コマンド自体は Xcode 2.0 をインストールすれば /Developer/Tools にインストールされる)。CpMac のオンラインヘルプによれば、将来的にはこのコマンドは廃止される予定である。

  • [質問]逆に(?)Tiger の cp、mv 等にリソースフォークを無視する(分離・削除する)オプションは用意されているでしょうか?
    • man cp しても通常の BSD の cp コマンドのマニュアルしか出てこないので、どうもそのようなオプションはないような気がします。もう少し調べてみますが……
    • ありがとうございます。いちいち SplitForks を使わなければならないのであれば Tiger への移行は見送ります。周りがみんな Mac ユーザならうれしい変更なのですが.....。
    • まだちゃんと調べていませんが,自分で cp や mv をビルドして /usr/local/bin にでも入れておけばよいかもしれませんね.Tiger は起動や最適化,Finder の動作などが速くなった (たとえばコマンドでのファイル操作の結果が即時に反映されます) のがよいと感じています.比較的低速なマシンを使っている身にはありがたいです.
    • Tiger では、ditto コマンドで -norsrc オプションを使えば、リソースフォークおよび HFS メタデータは無視されてコピーされます。
    • リソースフォークに対応していないファイルシステム(HFSやHFS+以外)にファイルを移動またはコピーすると、リソースフォークが分離し別名で保存されます。

MvMac --- ファイルのメタデータとフォークを保持したままファイルを移動する

UNIX の標準的な mv コマンドでは、ファイルの移動の際に Classic MacOS のファイルが持つリソースフォークなどの情報は保存されない。そうした情報を持ったままファイルを移動したいときには MvMac コマンドを使うとよい。

MvMac FILE DIRECTORY

とすることで、FILEDIRECTORY 下に移動される。DIRECTORY が存在しないパス名だった場合には、MvMac コマンドはこれをファイル名と見なし、FILEDIRECTORY にリネームされる。FILE は複数指定することもできる。この場合、DIRECTORY が存在しないパス名だったときには、DIRECTORY というディレクトリが新たに作成され、その下に指定したファイルが全て移動される。

なお、mv コマンドと異なり、MvMac にはオプションを指定できない。また、指定したファイルのあるボリュームと異なるボリュームにファイルを移動することはできない。

Mac OS X 10.4 (Tiger) では mv コマンドがリソースフォークに対応したので、MvMac コマンドは必要なくなった (コマンド自体は Xcode 2.0 をインストールすれば /Developer/Tools にインストールされる)。将来的にはこのコマンドは廃止される予定である。

GetFileInfo --- ファイルタイプ・クリエータ等の情報を表示する

GetFileInfo FILE

SetFile --- ファイルタイプ・クリエータを設定する

SetFile [-a attributes] [-c creator] [-d date] [-m date] [-t type] FILE

SetFileファイルタイプクリエータなどのファイル属性を設定する。ただし、このコマンドで属性を設定できるのは HFS+ ディレクトリにあるファイルに限られる。FILE は複数指定することも可能。

オプションには、次のようなものがある。

-a attributes

ファイルの属性を設定する。文字列 attributes は以下に示すローマンアルファベットからなる文字列(長さはいくつでもよい)で、大文字と小文字が区別される。attributes 内の文字列それぞれがファイル属性に対応しており、大文字の場合にはその属性のビットがオン(1)に、小文字の場合にはオフ(0)になる。

a エイリアス(シンボリックリンクではない)である
b バンドルである
c カスタムアイコンを持つ(フォルダにも適用可)
d デスクトップにある(フォルダにも適用可)
e 拡張子が非表示(フォルダにも適用可)
i ファインダーがウィンドウ内の位置を記憶している(フォルダにも適用可)
l ロックされている
m 複数回起動が可能なアプリケーションである
n INIT リソースを持たない
s システムファイルである(名称変更不可)
t
v ファインダー上で不可視である(フォルダにも適用可)

-c creator

ファイルのクリエータcreator に設定する。 クリエータとは Classic MacOS でファイルとそれを作成したアプリケーションを関連させるために用いられていた情報で、英数字または空白4文字からなる文字列で指定される。クリエータが空白を含む場合には必ず引用符で creator を囲む必要がある。

-d date

ファイルの作成日を設定する。date の書式は mm/dd/[yy]yy [hh:mm:[ss] [AM | PM]] となる。date が空白を含む場合には引用符で囲まなければならない。

-m date

ファイルの修正日を設定する。date の書式は -d オプションと同じ。

-t type

ファイルタイプを設定する。ファイルタイプとは Classic MacOS でファイルの種類を示すために用いられていた情報で、クリエータと同様に必ず4文字の英数字または空白からなる。ファイルタイプが空白を含む場合には、やはり引用符で囲む必要がある。

  • むか〜し作った Maple(v.6) ワークシートを開くためわざわざ Classic 環境をインストールして、いざ開こうとしたら開けず.....。初めて上記コマンドのお世話になりました。

hdiutil, hdid, ditto の使い方

次のページで詳しく解説されています。

ディレクトリをもとに(Windowsでも見れる)hybridなisoイメージを作成するには

hdiutil makehybrid -o hogehoge.iso /Path/To/Directory

isoイメージをCDなどに焼くには

hdiutil burn foobar.iso


defaults --- ユーザーデフォルトシステムへのアクセスを提供する

defaults [-currentHost | -host hostname] sub-command [parameters] 
sub-command = read | read-type | write | rename | delete | ...

アプリケーションの初期設定を操作するコマンド。アプリケーション自身の初期設定パネルからアクセスできない変更も可能にします。

(例)ダッシュボードを起動しないようにする(NO を YES に変えると復活):

defaults write com.apple.dashboard mcx-disabled -boolean NO
killall Dock

defaults read [domain [key]]

defaults write domain {plist | key value}

(未完成)

(例)Safari において PDF ファイルをウィンドウ内表示させる:

defaults write com.apple.Safari WebKitOmitPDFSupport -bool YES

(例)スクロールバーの矢印 (スクロールアロー) を双方向にして両端におく(DoubleBoth の代わりに Single,DoubleMin,DoubleMax (あるいはDouble) が指定できる):

defaults write "Apple Global Domain" AppleScrollBarVariant DoubleBoth

security --- キーチェーンと Security.framework に対するコマンドラインインターフェイス

security [-hilqv] [-p prompt] [command] [command_options] [command_args]
command = help | list-keychains | default-keychain | 
login-keychain | create-keychain | delete-keychain | lock-keychain | 
unlock-keychain | set-keychain-settings | show-keychain-info | 
dump-keychain | create-keypair | add-internet-password | 
add-certificates | find-internet-password | find-certificate | 
create-db | import | export | install-mds | leaks

すべての command に共通のオプション -h :指定された command の使い方を表示する。

find-internet-password [-gh] [-a account_name] [-d security_domain] [-p path] [-P port] [-r protocol] [-s server_name] [-t authentication_type] [keychain...]

指定されたキーチェーン( keychain )に対し、与えられた条件に合致するインターネットパスワード項目を検索し、内容を出力する。

  • keychain が省略された場合、登録されているすべてのキーチェーン(ユーティリティフォルダのキーチェーンアクセス.app で見ることができる)に対し検索が行われる。
  • '-g' オプションを与えるとパスワードも出力される。出力先は標準エラー出力であることに注意。また、この場合、キーチェーンがロックされていたり、あるいは当該インターネットパスワード項目のアクセス制御設定に依存して、利用者に対しキーチェーンのパスワードの入力を促すダイアログや、確認ダイアログが表示される。

softwareupdate --- ソフトウェアアップデートを実行する

コマンド/softwareupdate を参照して下さい。

srm --- セキュアなファイル/ディレクトリ消去

場所:/usr/bin/srm

このコマンドは厳密にはMac OS X固有ではない。ソースコードは http://srm.sourceforge.net/ でメンテナンスされており、FreeBSD等各種UN*X系のシステムで動作する模様。

srm はファイルを unlink する前に上書き、移動、切り捨てを行うことによって他のユーザーが消したファイルを復活させたり、ファイルに関する情報を取得することを予防する。

rm と同様に権限のないファイルやディレクトリを消去することはできない。

srm [-dfirsmznv] [--help] [--version] FILE...

rm と同じようなオプションを備えており、-d, -f, -i, -r, -R, -v について同じように動作する。このうち、-d は rm との互換のためだけに残っており、指定しても無視される。つまり、-d を指定しなくてもディレクトリを削除できる。

その他のオプションは以下。

  • -s, --simple : 対象のファイルをランダムなデータで上書きしてから消去する。
  • -m, --medium : 対象のファイルを US DoD(アメリカ国防総省)規格に準拠した方式で7回上書きしてから消去する。(0xF6, 0x00, 0xFF, random, 0x00, 0xFF, random の順で上書きする)。
  • -z, --zero : 上書き後にファイルのブロックサイズをゼロにする。
  • -n, --nounlink : ファイルを上書きするが、移動、削除は行わない。
  • --help : ヘルプメッセージを出力し、終了する。
  • --version : バージョン情報を出力し、終了する。

-s オプションは -m オプションに優先する。どちらのオプションも指定しなかった場合は、(simple, medium に対し)最高が指定されたとみなし、Gutmannアルゴリズムによって35回上書きしてから消去する。

Finderにある「確実にゴミ箱を空にする」はsrmを利用している。

open-x11 --- X11でプログラムを実行する

pstopdf --- PostScript ファイルを PDF ファイルに変換する

場所:/usr/bin/pstopdf

 pstopdf [infile] [-o outfile] [-lpi] 

pstopdf は infile で指定した PostScript ファイルを PDF に変換し、-o で指定したファイルか、infile の拡張子を .pdf に変換したファイルとして保存する。

  • -l : ログは通常標準出力に出力されるが、-l を指定すると、ログを出力ファイル名の後ろに .log をつけたファイルに保存する。
  • -p : 1 ページ変換する度に標準出力に情報を表示する。
  • -i : 標準入力を入力ファイルとして指定する。

例:sample.ps を sample.pdf に変換する

pstopdf sample.ps

例:標準入力から受けとった PostScript データを sample.pdf に変換して保存し、ログを sample.pdf.log に保存する。

cat sample.ps | pstopdf -i -o sample.pdf
  • Ghostscript には ps2pdf という同種のツールが付いてくる。Ghostscript によってレンダリングがおこなわれる点が異なる。

plutil --- プロパティリストファイルの検証と変換

場所:/usr/bin/plutil

 plutil -help
 plutil [-lint] [-s] file ...
 plutil -convert format [-o outfile] [-e extension] file ...

plutil はプロパティリスト形式のファイルの文法検証とフォーマット変換を行うユーティリティである。Mac OS X 10.2 以降で利用できる。

-lint オプションは、指定したファイルの文法チェックを行う。これはデフォルトの動作で、オプションが指定されなかった場合も同じ動作になる。-s オプションを同時に指定すると、成功した場合は何も出力しない。

-convert オプションは直後にフォーマットを指定して、.plist ファイルのフォーマットを変換する。現在、以下のフォーマットを指定可能。

  • xml1 -- XML プロパティリスト バージョン 1
  • binary1 -- バイナリプロパティリスト バージョン 1

他にオプションを指定しない場合、元のファイルは変換後のファイルで置き換えられる。

-o オプションを指定すると、outfile に変換後のファイルを書き出す。これは 1 ファイルだけ変換する際に有効。もし複数のファイルを指定した場合は、outfile の中身は最後に変換したファイルになる。

-e オプションを指定すると、.plist の代わりに指定した拡張子で変換後のファイルを書き出す。

例:myconfig.plist を文法チェック

plutil -lint myconfig.plist

例:myconfig.plist をバイナリフォーマットに変換

plutil -convert myconfig.plist

ni** -- NetInfo 関連コマンド

NetInfo を参照。

mdfind -- Spotlight のコマンド版

  • OSのバージョン : Tiger 以降
  • 場所:/usr/bin/mdfind
mdfind [-live] [-onlyin directory] query

mdfind は query の内容を Spotlight エンジンを用いて検索し、結果内容を含むファイルの一覧を表示します。

-live オプションは検索結果やマッチした件数をリアルタイムに更新するようです。

-onlyin オプションは検索対象となるディレクトリをしぼる場合に使います。

  • 例:"apple"で始まるファイル名を探索(case insentitive指定で)
mdfind 'kMDItemDisplayName == "apple*"c' 
mdfind -0 'kMDItemDisplayName == "apple*"c' |xargs -0 basename
  • 例:"apple"で始まり".txt"で終わるファイル名の探索は,下記のように指定してもできないようです.
mdfind 'kMDItemDisplayName == "apple*.txt"'

Query Expression Syntaxの指定方法の説明は、 http://developer.apple.com/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html#//apple_ref/doc/uid/TP40001849

  • 英語ですが、mdfindの使い方が詳しく紹介されています。

http://www.macdevcenter.com/pub/a/mac/2006/01/04/mdfind.html

osascript -- AppleScript を実行する

コマンド/osascript を参照して下さい。

launchctl -- daemonやagentを管理する

コマンド/launchctl を参照して下さい。

convert -- 画像ファイル形式を変換

/System/Library/Printers/Libraries/convert

入力形式

  • jpeg, giff, pict, tiff, pdf, text など

出力形式の指定

  • -j "application/pdf" (デフォルト)
  • -j "application/postscript" (epsのこと?)


Wiki内の関連ページ