個人的によく使う（ベタな）bash alias



[今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018](https://qiita.com/advent-calendar/2018/yumemi01_one-liner)の3日目の記事です。
前回は@YutoMizutaniさんの[今すぐaliasを登録しておくべきGitワンライナー](https://qiita.com/YutoMizutani/items/f7c4070887fe41497969)でした。
（かぶった部分があることを先にお詫びしておきます...)

---

「ワンライナー」と言えるほどライナーライナーしてないのですが、簡単だけどもよく使う（ベタともいう）エイリアスを書いておこうかと思います。
物によっては便利かもしれない。

# 前提

* OS: macOS
* shell: bash
* 基本的になんでもCLIで行いたい人間です

# 超基本的なカスタム

色づけなど

```bash
if [ "Darwin" = 'Darwin' ]; then
    alias ls='ls -G'
else
    eval `dircolors ~/.colorrc`
    alias ls='ls --color=auto'
fi
alias la='ls -a'
alias ll='ls -l'
alias tree='tree -C'
```

## `ls`

* lsコマンドは、物によって色づけのオプションが異なる
* 自分の環境ではこの分け方で十分だが、もっと変えようがあると思う。
* なおこれはコピペしてきた思い出がある。
* 用途: lsに色づけしたい

## `la`

* `ls -a`もよく使いますよね。
* 用途: `.*`ファイルも見たい時

## `ll`

* `ls -l`もよくt(ry
* 用途: `ls`で詳細が見たい時

## `tree`

* 用途: treeコマンドの出力に色づけする

# git関連

git関連は最もよく使うコマンドの一つだと思います。
そこで、ベタですがいくつか載せておきます

```bash
alias gs='git status' # `git status`の確認 
alias gd='git diff' # `git diff`の確認
alias gc='git commit' # commitする
alias gca='git commit --amend' #　前のコミットの編集
alias glo='git log --oneline' # コミットログを各一行で読む
alias mkpr='hub pull-request' # PRを書く
alias prs='ghi | grep ↑' # 現在のレポジトリのPR取得
```
少しだけ解説

## `mkpr`

* `hub pull-request`でPRをかけるのでそのショートカット
* 用途: CLIからPRを送る

hubコマンドは、githubを使うにあたって便利なコマンド群を提供します。
調べると色々出てくると思います。Githubユーザーには強くおすすめ。
公式: [github/hub](https://github.com/github/hub)

## `prs`

* `ghi`コマンドでissue&PRの一覧が取得できるため、そこからPRのみを抽出
* `ghi`ではPRには`↑`の記号が付いていることからそれのみをgrepしている
* 用途: PRの一覧を見る

ghiコマンドはGithubのissue周りの管理をするコマンドです。
これもまた便利。githubユーザーには強くおすすめ。
公式: [stephencelis/ghi](https://github.com/stephencelis/ghi)

# utilityツール群

その他諸々なツール群

```bash
alias init='[ ! -d ".git" ] && { git init; git flow init; hub create; } || echo "aleady initialized"' # プロジェクト作成時に行う一連の作業
alias bashrc='source ~/.bashrc' # bashrc再読み込み
alias bash_profile='source ~/.bash_profile' # bash_profile再読み込み
alias back='cd $OLDPWD' # 一つ前のディレクトリにback
```

## `init`

新たなプロジェクトを作成するときに、自分が使っている一連の作業を詰め込んだものです。

```bash
[ ! -d ".git" ] \
  : # `.git`ディレクトリが存在していなければ \
  && { git init; git flow init; hub create; } \ : # `git`を初期化してgit-flowも初期化、githubにレポジトリを作成する
  : # `.git`ディレクトリが存在していれば \
  || echo "aleady initialized" # 初期化済みだよと出力して終了
```

* `git init`: おなじみgitの初期化
* `git-flow`: 開発手法の一つである`git-flow`をサポートする拡張コマンド
* `hub create`: hubコマンドの機能の一つで、githubに現在のレポジトリを作成します。

git-flowも調べれば出てきますが、割とおすすめな開発手法です。
自分は、その拡張である`git-flow-avh`を使っています。

CLIツール公式: [nvie/gitflow](https://github.com/nvie/gitflow)
CLIツールavh版公式: [petervanderdoes/gitflow-avh](https://github.com/petervanderdoes/gitflow-avh)

## `bashrc`

名前のまま、です。

* 用途: bashrc書き直した時など

## `bash_profile`

名前のままです。

* 用途: `bash_profile`に書かれてる処理がたまに実行されていない時など
* 
## `back`

現在いるディレクトリの一つ前のディレクトリに移動します。

```bash:例
$ pwd # 元のディレクトリ
/Users/me/dotfiles/vim
$ cd ~/Desktop/hoge # 他のディレクトリに移動
$ pwd
/Users/me/Desktop/hoge
$ back # 一つ前にいたディレクトリへ移動
$ pwd
/Users/me/dotfiles/vim
```

* `$OLDPWD`には、一つ前の`pwd`が保存されている(`man bash`を探ると書いてあります)
* `cd -`でも同様の動作はできる
* `cd -`ではない理由: `cd -`だとパスが出力され、個人的に邪魔だったから。

---

# おまけ

正直あまり使ってない(or実用的ではない)けど面白いのがいくつかあるのでおまけで載せておきます

## Macに関わる設定

mac以外では通用しない設定たちです。

```bash
alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
alias wport='networksetup -setairportpower' # usage: wport <device> <on/off>
alias wifi='networksetup -setairportnetwork' # usage: wifi <device> <SSID> <password>
alias siri='open /Applications/Siri.app'
```

### `airport`

* airportユーティリティへのショートカット
* このコマンドはデフォルトで存在しているがパスは通っていない
* ネットワーク周りの設定をするコマンドだったと思う(きちんと使えていないため紹介のみ)

### `wport`

* 同じくネットワーク系コマンドの`networksetup`のラッパーです。
* 正直あまりわからない。
* 各デバイス(wifiやbluetoothなど)をオンオフします。

### `wifi`

* 同じくnetworksetupのラッパー
* wifiアクセスポイントに接続を試みます
* GUIで接続した方が楽(パスワードを求められないため)のであまり使っていない

### `siri`

* 文字通りsiriを起動する
* ちょっともっさりする

## 個人的utility群

全員の役には立たないけど自分が使っている諸々

```bash
alias drp='cd ~/Dropbox && ls'
alias dotdrop='$HOME/dotfiles/dotdrop.sh' 
alias jnethack='cocot -t UTF-8 -p cp932 -- ~/nethackdir/jnethack'
```

### `drp`

* ドロップボックス内に移動します

### `dotdrop`

* dotfile管理ツールの[dotdrop](https://github.com/deadc0de6/dotdrop)用エイリアス

### `jnethack`

*　ローグライクゲーム"nethack"の日本語バッチ版の起動用エイリアス
*　ちょっとややこしいのでエイリアス化した