ユーザ用ツール

サイト用ツール


macos

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

動画から音声ファイルを抽出

二コ動や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
hiddennohiddenGUI上で不可視
uchgnouchg変更不可

ファイルフラグは以下のコマンドで調べられる

$ 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
macos.txt · 最終更新: 2023/09/01 12:34 by nullpon