目次
macOS
開発環境作成メモ
macOS独自コマンド
mdfind
cliからspotlight検索を実行する。
ファイル名にhogeを含むファイルを検索
mdfind -name hoge
現在のディレクトリ以下からファイル名にhogeを含むファイルを検索
mdfind -onlyin . -name hoge
hogeを含むテキストを検索
mdfind "kMDItemTextContent == hoge"
名前にterraを含むディレクトリ
mdfind -onlyin . "kMDItemContentType == public.folder && kMDItemFSName == *terra*"
クエリの属性
- kMDItemDisplayName: finder上の表示名
- kMDItemFSName: ファイルシステム上の名前
- kMDItemFSInvisible: finder上の可視属性
- kMDItemContentType: ファイルの種類
- kMDItemTextContent: ファイル内容のテキスト
$ mdfind "kMDItemDisplayName == デスクトップ" /Users/nullpon/Desktop $ mdfind "kMDItemFSName == Desktop" /Users/nullpon/Desktop
SpotLinghtは . で始まるファイルやディレクトリの索引を作成しない。このため例えば ~/.bash_history などは検索対象にならない
kMDItemContentType
- アプリケーション com.apple.application-bundle
- フォルダ public.folder
- データ全般 public.data
- テキストファイル public.text
- 音声ファイル public.audio
- MP3 public.mp3
- M4A com.apple.m4a-audio
- 動画ファイル public.video
- MPEG4ビデオ public.mpeg-4
- 画像ファイル public.image
- JPEGファイル public.jpeg
- PNGファイル public.png
- PDF com.adobe.pdf
- MSWord com.microsoft.word.doc
- MSExcel com.microsoft.excel.xls
open
ファイルをダブルクリックしたのと同じ処理をする。
hoge.txtをCotEditorで開く
open -a CotEditor hoge.txt
カレントディレクトリをFinderで開く
open .
規定のブラウザでURLを開く
open http://www.google.com/
Finderで共有サーバのディレクトリを開く
open smb://your/intranet/fileserver/path
softwareupdate
ソフトウェアアップデートをコマンドから実行
cafeinate
コマンド実行中、スリープを抑制する。時間のかかるコマンドでも実行中にスリープしなくなる優れもの
cafeinate -t 3600 command
tはcafeinateのタイムアウト(秒)、3600ならば1時間以内にコマンドが終了しなければスリープ抑制を解除する。
pmset
省エネルギーの情報を取得・設定する。
qlmanage
QuickLookの設定とデバッグを行うツール
QuickLookプラグインのリロード。新しくプラグインをインストールしたときに。
$ qlmanage -r
pbcopy, pbpaste
クリップボードの操作
- pbcopy 標準入力をクリップボードにセットする。
- pbpaste クリップボードの内容を標準出力に書き出す。
例
echo "hogehoge" | pbcopy pbpaste >> hoge.txt
標準出力をクリップボードコピーし、ファイルにも出力
echo hoge | tee output.txt | pbcopy
標準出力をクリップボードコピーし、コンソールにも表示
echo hoge | tee >(pbcopy)
networksetup
ネットワークの設定を行う
例)wifiをonにする
$ networksetup -setairportpower en1 on
scutil
システム設定をいじるコマンド、非常に多機能なのでできることの一例を示す
VPNに接続
$ scutil --nc start "ネットワーク環境設定で付けたVPN接続設定名"
networkQuality
ネットワーク速度測定
security
keychainにアクセスするコマンド
パスワードを保存
$ security add-generic-password -a <アカウント名> -s <サービス名> -w
パスワード更新(該当パスワードがなければ新規作成
$ security add-generic-password -a <アカウント名> -s <サービス名> -U -w
パスワード取得
$ security find-generic-password -a <アカウント名> -s <サービス名> -w
screencapture
スクリーンキャプチャを撮るコマンド。pngが生成される
$ screencapture hoge.png
afplay
音楽を再生する
$ afplay ./hoge.mp3
QuickTimeに依存しないらしい
sips
画像の変換などを行うコマンド
sips -s format jpeg nyan.png --out nyan.jpg
systemextensionsctl
システム(ドライバ)機能拡張を管理。インストールされている機能拡張をリストアップする
systemextensionsctl list
動画から音声ファイルを抽出
二コ動やYouTubeからダウンロードしたMP4動画から音声のみシェルで抽出する。シェル使えない奴はWindowsでも使っとけ。
MacPortsでffmpegをインストール、MP4Boxをダウンロードしてパスを通す。パス知らない奴はWindowsでも使っとけ。
$ ffmpeg -i hoge.mp4 -vn -acodec copy hoge.aac $ MP4Box -add hoge.aac hoge.m4a
hoge.m4aを開くとiTunesにコピーされる。
iTunesいろいろ
iTunesで再生するとノイズが入る→イコライザ切れ
ファイルフラグ
ファイルフラグは不可視、書き込み禁止などファイルに付加される属性。
以下のコマンドでLibraryフォルダを見えるようにする
$ chflags nohidden Library
hidden | nohidden | GUI上で不可視 |
uchg | nouchg | 変更不可 |
ファイルフラグは以下のコマンドで調べられる
$ ls -lO
拡張属性
ls -lしたときに @ が付いているファイル・フォルダには拡張属性が設定されている。HFS+以外のファイルシステムにコピーしたときにできる ._ファイル名 の正体はこれ。
drwx------+ 7 nullpon staff 238 8 1 00:24 Desktop drwx------+ 9 nullpon staff 306 7 30 01:05 Documents drwx------+ 12 nullpon staff 408 8 1 14:14 Downloads drwx------@ 11 nullpon staff 374 7 31 23:45 Dropbox drwx------@ 45 nullpon staff 1530 8 1 14:16 Library drwx------+ 3 nullpon staff 102 7 25 10:00 Movies drwx------+ 5 nullpon staff 170 7 26 20:43 Music drwx------+ 13 nullpon staff 442 7 28 22:54 Pictures drwxr-xr-x+ 5 nullpon staff 170 7 25 10:00 Public drwxr-xr-x+ 14 nullpon staff 476 7 26 20:32 Sites
テキストファイルの文字エンコーディングや、spotlight検索用のコメント、ファイル毎に関連付けされてるアプリの情報、ダウンロード元URL等が格納されている。
以下のコマンドで拡張属性が見える。
$ ls -l@
詳細を見るには
$ xattr -l ファイル名
com.apple.quarantine属性
ダウンロードしたファイルにはquarantine属性が付いており、実行することができない。以下のコマンドで削除できるが当然むやみに実行するのは危険なので注意すること
$ sudo xattr -r -d com.apple.quarantine /Library/Java/JavaVartualMachines/jdk-17.0.2.jdk
ACL
ls -l コマンドで + が付いているものはアクセスコントロールリスト(ACL)が設定されている。
drwx------+ 7 nullpon staff 238 8 1 00:24 Desktop drwx------+ 9 nullpon staff 306 7 30 01:05 Documents drwx------+ 12 nullpon staff 408 8 1 14:14 Downloads drwx------@ 11 nullpon staff 374 7 31 23:45 Dropbox drwx------@ 45 nullpon staff 1530 8 1 14:16 Library drwx------+ 3 nullpon staff 102 7 25 10:00 Movies drwx------+ 5 nullpon staff 170 7 26 20:43 Music drwx------+ 13 nullpon staff 442 7 28 22:54 Pictures drwxr-xr-x+ 5 nullpon staff 170 7 25 10:00 Public drwxr-xr-x+ 14 nullpon staff 476 7 26 20:32 Sites
ACLではPOSIXのパーミッションよりも細かいアクセス制御を設定できる。ACLが設定されているファイルの情報ウィンドウを開くと「カスタムアクセス権が割り当てられています」と表示される。
以下のコマンドでACLの内容が見える。
$ ls -le
ACLを設定するには、
$ chmod +a "everyone deny delete" hoge
これでeveryoneグループに削除禁止属性に与えられる。グループeveryoneなので所有者も削除不可になる。
drwxr-xr-x+ 2 nullpon staff 68 8 1 15:55 hoge 0: group:everyone deny delete
属性を取り消すには ls -le したときに表示される番号を以下のように指定する
$ chmod -a# 0 hoge
java
Javaコマンドを実行すると日本語が文字化けする。MacOSXにおけるJavaのデフォルトエンコーディングはShift_JISであるため標準出力にShift_JISで出力されるが、ターミナルのエンコーディングにはUTF-8が設定されているためである。
.bash_profileに以下のエイリアスを作っておくとよい
alias java="java -Dfile.encoding=UTF-8" alias javac="javac -J-Dfile.encoding=UTF-8"
管理コマンド
BSD由来でLinuxには無いコマンドがある
dscl
ディレクトリサービスへアクセスする。MacのディレクトリサービスはOpen Directory。
例:ユーザ一覧を取得
$ dscl . -list /Users
sysctl
カーネルの状態を取得または設定する。
例:CPU論理コア数を取得
$ sysctl -n hw.ncpu
隠しコマンド
パスの通っている場所にないMacOSX独自のコマンドラインユーティリティ、mdfindで探すのが手っ取り早い
mdfind -name lsregister
lsregister
Launch Service Databaseの管理ツール
lsregister: How Files Are Handled in Mac OS X | Krypted.com
データベースの現在の状態を出力
$ ./lsregister -dump
データベースの再構築
$ ./lsregister -kill -r -all system,local,user