Linux
Git
Linuxコマンド

普段の開発・作業中にターミナルで使っているコマンドたち

普段の開発や作業中にターミナルで叩いているコマンドのメモです。
プログラミング初心者の方々(自分もまだまだ初心者ですが)のお役に立てば幸いです。
普段使っている便利なコマンドがあれば教えてください。

Git関係

gitコマンドのエイリアス作成

長いgitコマンドのエイリアスを作成できます。
例えば、git log --name-staus コマンドでは、各コミットで変更のあったファイルリストを git log に含めて表示してくれます。が、ちょっとコマンドが長いです。

$ git config --global alias.logst "log --name-status"

とすと、以降、git logstgit log --name-status と同じ結果を得られます。

オプションとして --global を指定すると、現在のプロジェクトのリポジトリだけではなく、他のリポジトリで作業する際にも使用できます。
代わりに --local を指定すると、現在のリポジトリ内でのみ有効なエイリアスとなります。

自分が設定しているエイリアスは下記です。

$ git config --list --global | grep alias
alias.st=status
alias.logst=log --name-status
alias.chpn=cherry-pick -n
alias.br=branch
alias.cho=checkout

ちなみに設定しているエイリアスを表示するには git config --list | grep alias で確認できます。
ここでも --global --local オプションを指定することで、それぞれに設定されたエイリアスを確認できます。

いろいろな差分表示

### HEAD と 現在の作業内容 との差分
$ git diff

### 特定のコミット と 現在の作業内容 との差分
$ git diff aad2dba98344b10e745842ef3cbcbb34f855da6d

### HEADの一つ前のコミット と HEAD との差分
$ git diff HEAD^

### 特定のコミット と HEAD との差分
$ git diff aad2dba98344b10e745842ef3cbcbb34f855da6d HEAD

### 特定のコミット同士の差分
$ git diff aad2dba98344b10e745842ef3cbcbb34f855da6d 9a571807c8b44829c04e484065aff8dd79582fdf

特定のコミットとの差分など、2つの引数を渡す場合、古いものと新しいものどちらが先でも出力はされますが、先に古いもの、あとに新しいものを指定したほうが自然な出力結果になります。

また、たまに差分をファイルで欲しいと言われる場合があるので、その時は下記コマンドで出力結果をファイルに出力できます。

$ git diff >> /Users/hogehoge/Desktop/git_dif.diff

これはgitコマンドに限らずLinuxコマンドの出力結果をファイルに出力する場合に使えます。

直近のコミットログを編集する

$ git commit --amend

ファイル閲覧(主にログ)関係

ファイルの後ろの方だけ閲覧

### 後ろ10行を出力
$ tail sample.log

### 後ろ100行を出力
$ tail -100 sample.log

ファイルへの追記を監視する

$ tail -f sample.log

上の tail コマンドのオプションですが、ログファイルのように末尾に追記されているのをリアルタイムで確認できます。
例えばLaravelプロジェクトであれば ./storage/logs/ にログが出力されるので、$ tail -f ./storage/logs/laravel-2017-12-08.log を叩いてから処理を実行すれば、処理中に埋め込んだログを確認しながら操作ができます。

ファイル全体の閲覧

### 行数が少ないファイル向け
$ cat sample.txt

### 行数が多いファイル向け
$ cat sample.log | less
$ cat sample.log | less -N  #行数を表示したい場合

以上