Updated at: 2016-07-14
UNIX 系コマンド Memo (Mac 向け)
よくやる系
プロセス確認
# 全部出力して grep
$ ps aux | grep hoge
# ユーザで絞り込む(ww は改行して出力が切れないようにする)
# * Mac の場合は -u でなくて -U
$ ps uww -u user_name
sed : 文字列処理系
# Mac 版 sed は -i の後にバックアップファイルの拡張子指定が必須
# (Linux 版だとバックアップ不要の場合は省略できる)
$ sed -i '.bak' -e 's/OLD/NEW/g' path/to/input_file
# -e は -f を指定しない場合は省略可能。
# (-f は編集コマンドを記述したスクリプトファイルの指定)
# バックアップ作らなくていい場合はこんな感じでよい
$ sed -i '' 's/OLD/NEW/g' path/to/input_file
複数ファイルの文字列一括置換
# find コマンドと連携
$ find ./ -name "*.cpp" | xargs sed -i '' 's/OLD/NEW/g'
# ag コマンドと連携
$ ag -l "Hoge" | xargs sed -i '' 's/OLD/NEW/g'
ネットワーク系
TCP ポート開いてるか確かめる
- ICMP なら ping でよいけど
telnet でもよいけど開いてるか確認したいだけなら
$ nc -vz <host> <port> $ nc -vz xx.xx.xx.xx 20-30 # 範囲指定も可
Mac の電波遮断
ゲーム作ってて電波遮断のテストとかしたくなることあるよね
$ networksetup -setairportpower en1 off
$ networksetup -setairportpower en1 on
時刻変換・時差計算
- Mac の date は Linux とオプションなどが違う
# 現在時刻から 9 時間後の時刻を表示
$ date -v+9H
UTC → JST
- 案外 date コマンドでサクっとやる方法わからんかった
力技でスクリプト言語とかで:
$ php -r '$t = new DateTime("2016-07-13 12:00:00 UTC"); $t->setTimeZone(new DateTimeZone("Asia/Tokyo")); print $t->format("Y-m-d H:i:s")."\n"; ' 2016-07-13 21:00:00
UNIXTIME 変換
日時 → UNIXTIME
$ date +%s # 現在時刻
1410416640
$ date -jf '%Y-%m-%d %H:%M:%S' '2014-09-11 15:24:00' +%s
1410416640
UNIXTIME → 日時
$ date -r 1410416640
2014年 9月11日 木曜日 15時24分00秒 JST
SSH の公開鍵の fingerprint 確認
$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
- SSH-KEYGEN (1)
- l オプションで表示、f オプションでファイル指定
- 最近の表示形式は SHA256/base64 らしいので MD5/hex で見たい場合は -E オプションでフォーマット指定
ファイルの MD5 をとる
# Mac なら標準で md5 コマンドがある
$ md5 hoge.txt
MD5 (hoge.txt) = d45ac056aeb47c6bcf5c56dc2b6d3d5c
# 上記の出力が気に入らないなら
$ brew install md5sha1sum
$ md5sum hoge.txt
d45ac056aeb47c6bcf5c56dc2b6d3d5c hoge.txt
Human readable を sort したいとき
2009 年以降の Linux の sort には -h
オプションという素敵なものがあるらしいが
Mac でやるなら gsort
を使う
$ brew install coreutils
$ du -sh * | gsort -h
雑多
画像変換
- Mac だと
sips
ってコマンドが便利
# 画像が置かれたディレクトリに移動して一括サイズ変換(横幅を揃える)
$ for file in *.jpg; do sips --resampleWidth 640 $file --out result/${file%.jpg}.jpg; done
# -Z オプションは縦横長い方を見てアスペクト比維持で縮小
# 縦向き・横向きの画像が混ざってるときに便利
$ sips -Z 640 *.jpg --out result/