【保存版】Mac開発でよく使うコマンド

最近、職場でLAMP開発をMacで行うようになり、ターミナルからコマンドを打つことが多くあります。
よく使うコマンドを覚えておけば便利になります。


## システム
※リストにMacになくLinux特有のコマンドもあります。

|コマンド　　 |機能 |備考 |
|:------------|:--------|:------|
|`cat [ファイル]`|ファイル内容を表示　|例）`cat ~/.bash_profile`|
|`cat /proc/version`|Linuxカーネルの情報を表示||
|`cat /etc/[ディストリビューション]-release`|Linux OSのバージョンを確認|例）`cat /etc/centos-release`|
|`cd [移動先ディレクトリのパス]`|カレントディレクトリを変更|例）ホームディレクトリに移動：`cd ~`|
|`chmod [モード] [ファイル/ディレクトリ]`|ファイル/ディレクトリのアクセス権限（パーミッション）を変更|r(読み取り)：4<br>w(書き込み)：2<br>x(実行)：1<br>u：所有者<br>g：グループ<br>o：その他のユーザー<br>a：すべてのユーザ|
|`chmod -R [モード] [ディレクトリ]`|ディレクトリとその中身のアクセス権限を再帰的に変更する|   |
|`chmod 644 [ファイル]`|所有者がrw可、グループがr可、その他のユーザーがr可|   |
|`chmod 777 [ファイル]`|すべてのユーザーがrwx可|
|`chmod a+x [ファイル]`|すべてのユーザーが実行可能|   |
|`chmod -R g+w [ディレクトリ]`|対象ディレクトリ配下にグループ書き込み権限を付与|   |
|`chown [ユーザー名] [ファイル]`|ファイルの所有者を変更|   |
|`chown -R [ユーザー名:グループ名] [ディレクトリ]`|ディレクトリのグループと所有者を再帰的に変更|   |
|`cp [コピー元ファイルのパス] [コピー先ファイルのパス]`|ファイルをコピー||
|`cp -r [コピー元ファイルのパス] [コピー先ファイルのパス]`|ファイルを再帰的にコピー||
|`cp -rp [コピー元ファイルのパス] [コピー先ファイルのパス]`|属性を維持してファイルを再帰的にコピー||
|`date`|現在の時刻を表示||
|`diff [ファイル1] [ファイル2]`|2つのファイルの差分を表示する||
|`diff --side-by-side [ファイル1] [ファイル2]`|2つのファイルの差分を左右に並べて表示する||
|`sdiff [ファイル1] [ファイル2]`|2つのファイルの差分を左右に並べて表示する||
|`echo $PATH`|パスを表示|   |
|`echo $SHELL`|シェルを表示|   |
|`echo $ENV`|環境変数を表示|   |
|`exec $SHELL -l`|シェルを再起動|   |
|`export -p`|環境変数を表示|   |
|`cut -d: -f1 /etc/passwd`|OSユーザ一覧を表示|　|
|`find [検索対象パス] -name [ファイル名]`|ファイルやディレクトリを検索|例）`find etc/ -name php.ini```|
|`find [検索対象パス] -maxdepth [n] -name [ファイル名]`|n階層までファイルやディレクトリを検索||
|find [検索対象パス] -type f &#124; wc -l|ファイル数||
|find [検索対象パス] -type d &#124; wc -l|ディレクトリ数||
|find [検索対象パス] -maxdepth [n] -name '*.jpg' &#124; wc -l|ヒットしたファイル数をカウント。||
|find [検索対象パス] -maxdepth [n] -name '*.jpg' &#124; ls -al|ヒットしたファイルの情報を確認。||
|find [検索対象パス] -type f -print &#124; xargs grep '[文字列]'|ファイルから文字列を検索||
|`finger [ユーザー]`|指定ユーザーの情報を表示|例）`finger root`|
|`jobs`|ジョブ一覧を表示||
|`history`|コマンドの履歴リストを表示| |
|`groups [ユーザー名]`|グループ一覧を表示|例）`groups apache`|
|`kill -9 [プロセスID]`|指定プロセスを強制的に終了   |   |
|`last`　　|ログイン履歴を表示| |
| `less /etc/passwd` |OSユーザ情報を表示|ユーザー名、パスワード、ユーザーID、グループID、コメント、ホームディレクトリ、ログインシェルの順に表示される|
|`lsof -i -P`|ポートとプロセス番号を確認||
|`ln -s [リンク元の絶対パス] [リンク先ディレクトリのパス]`|シンボリックリンクを貼る|コマンドのエイリアスを作成|
|`ls -alt [対象パス]`|更新日時の新しい順で詳細リスト|`a`：全<br>`1`：縦に並べる<br>`r`：逆順<br>`l`：詳細<br>`t`：更新日時の新しい順|
|ls -tl [対象パス] &#124; head|最新10件をリスト||
|ls -l  [対象パス] &#124; wc -l|対象パス配下ファイルとディレクトリの総数||
|`man [コマンド]`|指定コマンドのオンラインマニュアルを表示|`q`を押すと表示終了|
|`mkdir [ディレクトリのパス]`|ディレクトリ作成||
|`more /etc/shells`|シェル一覧|   |
|`mv [移動元ファイルのパス] [移動先ディレクトリのパス]`|ファイル移動/改名||
|`mv [旧ファイル名] [新ファイル名]`|ファイル改名||
|`netstat`　　　|開いているポートを確認|「network statistics」の略|
|`open [ファイルのパス]`|ファイル/ディレクトリ/URLを開く||
|`open .`|現在のディレクトリをFinderで開く||
|`open -a [ファイルのパス]`|アプリケーションの下にあるアプリを開く|例）`open -a 'Google Chrome'`|
|`pbcopy`|ターミナルの出力をクリップボードにコピー|例）`pbcopy < ~/.ssh/id_rsa.pub`：公開鍵をクリップボードにコピー   |
|`pwd`　|現在いるディレクトリのパスを表示|Print Working Directoryの略|
|`ps aux`　|実行中のプロセスを確認|   |
|`rm -r [ファイルorディレクトリ]`|ファイルorディレクトリを削除||
|`rm -rf [ファイルorディレクトリ]`|ファイルorディレクトリを強制的に削除||
|`su - root`　|一時的にrootユーザになる|```exit```でログアウト|
|`sw_vers`　 |macのバージョンを確認| |
|`traceroute`　 [ドメインorIP]|ネットワーク経路を確認||
|`uname [オプション]`　|OS情報を確認|`-a`：全ての情報を表示 |
|`unlink [シンボリックリンク]`　|シンボリックリンクを削除| |
|`unzip -l [ZIPファイル]`|ZIP内のファイルを一覧表示する||
|`unzip -f [ZIPファイル]`|展開時にファイルの更新だけを行い、新規作成はしない||
|`unzip -o [ZIPファイル]`|展開時にファイルを確認なしに上書きする||
|`unzip -u [ZIPファイル]`|更新があったファイルまたは新規ファイルだけを展開する||
|`unzip -P [パスワード] -o [ZIPファイル] -d [ディレクトリ]`　|パスワード付きZIPファイルを指定ディレクトリに展開|   |
|`who`　|ログイン中のユーザーを確認|   |
|`which`　|コマンドのパスを確認|環境変数のPATHにあるコマンドから調査|
|`whereis`　|コマンドのパスを確認|/usr/bin:/bin:/usr/sbin:/sbinにあるコマンドのみ調査|

## Apache
|コマンド|機能|備考|
|:----------|:--------------------------|:----------|
|httpd -v|Apacheのバージョンを表示|```apachectl -v```同様 |
|httpd -t|Apache設定ファイル「httpd.conf」の文法をチェック|```apachectl configtest```|
|apachectl status|Apacheの動作状況を表示| |
|httpd -S|バーチャルホスト設定を表示| |
|httpd -l|コンパイルされたモジュールの一覧を表示||
|httpd -V|コンパイル情報を表示||
|ps aux &#124; grep httpd|実行中のApacheプロセスを確認|Apacheが起動しているかどうかを確認できる|
|which httpd|Apacheのフルパスを表示|```which apachectl```|
|sudo apachectl start|Apacheを起動| |
|sudo apachectl restart|Apacheを再起動| |
|sudo apachectl stop|Apacheを停止| |
|sudo apachectl graceful-start|緩やかな起動|```restart```との違いは、コネクションが切れる状態になるまで、restartが始まらない |
|sudo apachectl graceful-stop|緩やかな停止|```stop```との違いは、現在のコネクションの処理が終わるまで、httpdは停止しない。 |
|sudo /usr/sbin/apachectl start |Mac標準搭載Apacheを起動 | |
|sudo /usr/sbin/apachectl stop |Mac標準搭載Apacheを停止 | |

## PHP
|コマンド|機能|備考|
|:----------|:----------------|:------|
|php -v|PHPのバージョンを表示| |
|php -i|PHP情報（phpinfo）を表示||
|php -i &#124; grep php.ini|php.iniを探す | |
|php -i &#124; grep 'Configuration File'|PHP設定ファイルを確認| |
|php --ini |iniファイル名を表示|　|
|php -l [ファイル]|PHPスクリプトの文法をチェック
|which php|PHPのフルパスを表示| |


## MySQL
|コマンド |機能 |備考 |
|:--------------|:--------------------|:-----------------|
|mysqladmin ping|MySQLサーバの起動を確認|```mysqld alive```|
|mysqladmin -V|MySQLのバージョンを表示| |
|mysqladmin -?|MySQLのヘルプを表示| |
|mysql.server start|MySQLサーバを起動 | |
|mysql.server stop|MySQLサーバを停止 | |
|mysqladmin processlist|実行中のMySQLプロセスを確認 | |
|mysqladmin extended-status|詳しいサーバのステータス情報を表示| |
|mysql -uユーザ -pパスワード |MySQLプロンプト起動|例）mysql -u root -p |
|ps aux &#124; grep mysql|実行中のMySQLのプロセスを確認 | |
|which mysql|MySQLのフルパスを表示| |

## Xcode
|コマンド|機能|備考|
|:------------------|:--------------------|:--|
|xcodebuild -version|Xcodeのバージョンを表示| |
|xcode-select -p|Xcodeパスを表示|```xcode-select -print-path``` |
|which xcode-select|xcode-selectのフルパスを表示||

## Homebrew
Homebrew：Mac用パッケージ管理ツール。

|コマンド|機能|備考|
|:--------------|:--------------|:--|
|brew --config|brewの設定を表示|又は brew config|
|brew --env|brewの環境情報を表示| |
|brew doctor|brew問題診断||
|brew cleanup -n|旧バージョンのFormula一覧を表示||
|brew cleanup|旧バージョンのFormulaを削除||
|brew install [Formula]|Formulaをインストール| |
|brew uninstall [Formula]|Formulaをアンインストール| |
|brew reinstall [Formula]|Formulaを再インストール| |
|brew link [Formula] --force|インストール済みのFormulaを有効にする | |
|brew unlink [Formula]|インストール済みのFormulaを無効にする | |
|brew list|インストール済みのFormulaを表示| |
|brew info [Formula名]|Formulaのインストール情報を表示| |
|brew options [Formula名]|Formulaのオプション一覧を表示 | |
|brew search [Formula名]|Formulaを探す | |
|brew search versions/msyql|msyqlの旧バージョンを探す | |
|brew update|Homebrew自体及び、Formula、caskroomを最新版にする| |
|brew upgrade|Formulaのみを最新版にする| |

## PHPBrew
PHPBrew：PHPのバージョン管理ツール。

|コマンド|機能 |備考 |
|:------------|:----------------------------|:--|
|phpbrew known|インストール可能なPHP一覧を表示 | |
|phpbrew known --old|旧バージョンを表示|現時点では、PHP5.3以下のバージョンを表示 |
|phpbrew list|インストール済みのPHP一覧| |
|phpbrew off|PHPBrewでインストールしたPHPを停止|Mac標準搭載PHPに戻す |
|phpbrew self-update|PHPBrew自体を最新版にする| |
|phpbrew switch 5.6.18|インストール済みのPHP5.6.18をディフォルトPHPとして使用| |
|phpbrew use 5.6.18|インストール済みのPHP5.6.18を一時的に使用| |


## Git
リモートリポジトリはGithubとします。

|コマンド|機能 |備考 |
|:------------------------------------------------|:----------|:--------|
|git add [ファイルのパス]|ローカルリポジトリにファイルを追加|||
|git branch|カレントブランチを表示|||
|git branch -D [ブランチ]|ブランチを強制的に削除|||
|git clone [git@github.com:組織のGithubアカウント/リポジトリ.git] [クローン先ディレクトリ]|Githubからリポジトリをクローン|
|git checkout [切り替え先ブランチ]|ブランチの切り替え|例）masterブランチに切り替え：`git checkout master`|
|git checkout -b [新ブランチ]|ブランチを作成||
|git commit -m "コミットメッセージ"|ローカルリポジトリにコミット|
|git config -l|Gitの設定を確認|又は、`git config --list`|
|git fetch|リモートリポジトリから最新情報をローカルリポジトリに持ってくる（ファイルが更新されない）||
|git fetch --prune|リモートで削除されたブランチをローカルに反映（ローカルから削除）||
|git log|コミット履歴を閲覧||
|git pull -- prune||
|git pull --rebase origin master|Githubのmasterブランチから最新ソースをダウンロード||
|git push origin [ブランチ]|Githubにブランチをアップ||
|$ git remote -v|リモートリポジトリを表示||
|git stash save 'メッセージ'|変更を一時退避|「save 'メッセージ'」が省略可|
|git stash apply [stash名]|スタッシュした内容を復活|例）`git stash apply stash@{0}`|
|git stash clear|スタッシュを全削除||
|git stash drop #|最新のスタッシュを削除||
|git stash drop stash@{N}|N番目のスタッシュを削除||
|git stash list|スタッシュ一覧を表示||
|git stash list -p|スタッシュした変更内容を表示||
|git stash show [stash名]|スタッシュしたファイルの一覧を表示||
|git stash show -p [stash名]|スタッシュしたファイルの変更を表示||
|git stash pop [stash名]|指定した変更を復活、削除||
|git status|カレントブランチの状況||


## 参考
[Homebrew — macOS 用パッケージマネージャー](http://brew.sh/index_ja.html)
[phpbrew/README.ja.md at master - GitHub](https://github.com/phpbrew/phpbrew/blob/master/README.ja.md)