OSXの固有コマンド

提供: MacWiki
移動: 案内検索

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


調べるには,

$ zgrep -l "Mac OS X" /usr/share/man/man1/*


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

目次

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

open … ファイルやフォルダを開く[編集]

コマンド/openを参照してください。

osascript … AppleScript を実行する[編集]

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

pbcopy, pbpaste … コピーとペーストをコマンドから[編集]

  • pbcopy: 標準入力(の内容)をクリップボードへ入れる(コピーする)。
  • pbpaste: クリップボードに入っているものを標準出力へ渡す。

使用例[編集]

コマンドの標準出力を文字コードUTF-8へ変換しクリップボードに入れる。また同時にターミナル上にもそれを表示する。

コマンド | nkf -w | pbcopy
コマンド | nkf -w | tee /dev/stderr | tr -d '\n' | pbcopy

クリップボードの内容をファイルに保存する。クリップボードのテキスト内容を改行コードLFへ変更したものを,コマンド等の標準入力へ渡す。または一時ファイルに保存する。

pbpaste > ファイル
pbpaste | nkf -Lu | コマンド -
pbpaste | nkf -Lu > `mktemp -t temp|tee /dev/stderr`

しばしば使うならばシェルスクリプト化しても良い。

#!/bin/sh
TMPFILE=`mktemp -t temp`
echo \${TMPDIR}`basename $TMPFILE`
pbpaste | nkf -Lu > $TMPFILE

plutil … プロパティリストファイルの検証と変換[編集]

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

plutilプロパティリスト形式のファイルの文法検証とフォーマット変換を行うユーティリティである。

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

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

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

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

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

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

-p オプションは、人が読みとれる形式で標準出力へ表示する。

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

plutil -lint myconfig.plist

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

plutil -convert myconfig.plist

例:バイナリフォーマット・XML(テキスト)フォーマットに変換し標準出力する

plutil -convert xml1 -o - some_binary.plist > some_xml.plist
plutil -convert binary1 -o - some_xml.plist > some_binary.plist

say … 英語を発音する[編集]

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

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 … 画像の操作とフォーマット変換[編集]

softwareupdate … ソフトウェアアップデートを実行する[編集]

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

textutil … テキストファイル形式を変換[編集]

  • 対応形式(Mac OS X 10.6 における)

リッチテキスト txt, html, rtf, rtfd, doc, docx, wordml, odt, or webarchive

(例)リッチテキストファイルからHTMLファイルを作成する

$ textutil -convert html origfile.rtf

以下のコマンドは標準では 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

RAMディスクを作るには(下記例は"ramdisk"というボリューム名。サイズ指定は512バイト単位。):

$ diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://131072`
Started erase on disk6
Unmounting disk
Erasing
Initialized /dev/rdisk6 as a 64 MB HFS Plus volume
Mounting disk
Finished erase on disk6 ramdisk
$ ls -la /Volumes/ramdisk

ditto … ファイルのコピーやアーカイブの作成・展開[編集]

(例)srcfolderフォルダをZIP圧縮したarchive.zipファイルを作成

$ ditto -ck --sequesterRsrc --keepParent srcfolder archive.zip

(例)archive.zipファイルをdstfolderフォルダ内に展開する(dstfolderフォルダがカレントディレクトリになければ自動的に作成)

$ ditto -xk --sequesterRsrc archive.zip dstfolder

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 [-h] [-a account_name] [-c creator] [-C type] [-d security_domain] [-D kind] [-j comment] [-l label] [-p path] [-P port] [-r protocol] [-s server_name] [-t authentication_type] [-g] [keychain...][編集]

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

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

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 によってレンダリングがおこなわれる点が異なる。

ni** -- NetInfo 関連コマンド[編集]

NetInfo を参照。

mdfind -- Spotlight のコマンド版[編集]

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

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

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

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

query の例。内容もしくはファイル名に文字列を含むファイルを検索。この例では複数の文字列を含むファイルを検索するために「"」で括りスペース区切り。

$ mdfind "MacOSX10.5 Leopard" 

Query Expression Syntax[編集]

queryの表現式。詳細説明は、http://developer.apple.com/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html#//apple_ref/doc/uid/TP40001849

  • 例:"apple"で始まるファイル名を探索(case insensitive指定 "c" 付きで)
$ mdfind 'kMDItemDisplayName == "apple*"c' 
$ mdfind -0 'kMDItemDisplayName == "apple*"c' |xargs -0 basename
  • 例:"apple"で始まり".txt"で終わるファイル名の探索もできる(Mac OS X 10.8.5 で確認)。
$ mdfind 'kMDItemDisplayName == "apple*.txt"'
  • 例:内容もしくはファイル名に"日本"を文字列として含み、種類が"書類"もしくは"document"のファイルを探索
$ mdfind "(kMDItemTextContent == '*日本*' || kMDItemDisplayName == '*日本*') && (kMDItemKind == '* 書類' || kMDItemKind == '* document')"

launchctl -- daemonやagentを管理する[編集]

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

convert -- 画像ファイル形式を変換[編集]

/System/Library/Printers/Libraries/convert

入力形式

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

出力形式の指定

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

afconvert -- 音声ファイル形式を変換[編集]

/usr/bin/afconvert

sw_vers -- Mac OS Xのバージョンを表示[編集]

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.5.8
BuildVersion:	9L31a
$ strings `which sw_vers`
$ uname -a

pkgutil -- pkg 形式のパッケージ管理を管理[編集]

Snow Leopard から新設。


pbs -- ペーストボードサーバ[編集]

/System/Library/CoreServices/pbs

実行すると、ペーストボードサーバが再起動される。サービスメニューの作り直し等の初期化も行われる。

$ /System/Library/CoreServices/pbs
No languages specified - assuming English.
:
:

参照:「Snow Leopardで「消えないサービスメニューの怪」を解決する」http://builder.japan.zdnet.com/os-admin/sp_snow-leopard-09/20415329/


PlistBuddy[編集]

/usr/libexec/PlistBuddy

Property Listに関するコマンド

アプリケーション(Xcodeなど)のバージョンを表示する例

% /usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/Info.plist
% /usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' /Developer/Applications/Xcode.app/Contents/version.plist 
% /usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' /Applications/Utilities/X11.app/Contents/version.plist 
% /usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' /Applications/Utilities/XQuartz.app/Contents/version.plist


ioreg[編集]

/usr/sbin/ioreg

IOKitの情報に関するコマンド

ファームウェアのEFI64対応を表示する例

% ioreg -l -p IODeviceTree | grep firmware-abi
% cat /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 

BSDコマンド[編集]

chflags[編集]

Finderの不可視フォルダを可視化する例(MacOSX 10.7; Lion のライブラリフォルダ)

$ chflags nohidden ~/Library/


Wiki内の関連ページ[編集]