linuxターミナルのショートカット設定方法(.bashrc)(.zshrc)今更知ったので設定した。

bashやshを使うホームディレクトリには隠しファイル(.bashrc)(.zshrc)が入っているので
あるかどうかcat .bashrcなどで中身を確認してみよう！

---

## シェル補完を有効にする

Bash を使用していれば次のコマンドを実行して `.bashrc` に一行追記します。これで次からのシェルの実行で自動的にシェル補完が有効になります。

```bash
echo "source <(kubectl completion bash)" >> ~/.bashrc
```

Zsh を使用しているなら、次のコマンドを実行して `.zshrc` に一行追記するだけです。

```bash
echo "source <(kubectl completion zsh)" >> ~/.zshrc
```

---

```
vi .bashrc
vi .zshrc
```

bash, zsh ともにこれで `k` に対して kubectl の補完が有効になります。

最終的には下記を `.bashrc` または `.zshrc` に追記してください。

**bash** (bash の場合は bash-completion が必要です。詳しくは `kubectl completion -h` を参照してください)

```.bashrc
source /path/to/bash_completion
source <(kubectl completion bash)
alias k=kubectl
complete -o default -F __start_kubectl k
```

**zsh**

```sh:.zshrc
source <(kubectl completion zsh)
alias k=kubectl
complete -o default -F __start_kubectl k
```




```
## ls系
# ls 補正＋色付け
alias ls='ls --color=auto'

# ll で隠しファイルも表示
alias ll='ls -alF'

# l で表示
alias l='ls -CF'

## cd系
ディレクトリ移動系は下記のようなものがありました。
よく利用するディレクトリに素早く移動するためのコマンドがいくつかありました。


# よく利用するディレクトリの頭文字の連結
alias abc='cd ~/aaa/bbb/ccc'

# 'd'でデスクトップ
alias d='cd ~/Desktop'


# ドットの数で表現
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# 数字で表現
alias ..2='cd ../..'
alias ..3='cd ../../..'


## git系

alias g='git'
alias ga='git add'
alias gd='git diff'
alias gs='git status'
alias gp='git push'
alias gb='git branch'
alias gst='git status'
alias gco='git checkout'
alias gf='git fetch'
alias gc='git commit'


## dotfiles関連
aliasを設定するdotfilesに関するaliasをいくつか紹介。
編集系は地味に便利そうなので、設定してみようかな。

```sh
# 省略度合いも人それぞれ
alias d='/path/to/dotfiles'
alias dot='/path/to/dotfiles'
alias dotfiles='/path/to/dotfiles'
# 編集系
alias zshrc='vi /path/to/dotfiles/.zshrc'
alias zshconfig='vi /path/to/dotfiles/.zshrc'
```

## apt系
主にubuntu向けの設定ですね。

```sh
# apt
alias agi='sudo apt install'
alias agr='sudo apt remove'
alias agu='sudo apt update'

# apt-get
alias ag='sudo apt-get'
alias agi='sudo apt-get install'
alias agr='sudo apt-get remove'
alias agu='sudo apt-get update'
```
ちなみに、`apt-get`より`apt`コマンドを利用したほうがよいです。
参考：[「apt-get」はもう古い？新しい「apt」コマンドを使ったUbuntuのパッケージ管理](https://linuxfan.info/package-management-ubuntu)

## bundle系
Ruby on Railsでお馴染みの`bundle`です。
こちらはいくつか流派があるようです。

```sh
alias b='bundle'
alias be='bundle exec'
alias bx='bundle exec'
alias bi='bundle install'
alias bo='bundle outdated'
alias bu='bundle update'
alias rc='bundle exec rails c'
```

## top系
意外と定義されていた系その2。
`cpu`や`mem`は忘れっぽい人にはいいかもしれないです。

```sh
# 人それぞれ
alias top='htop'
alias top='gtop'
alias top='vtop'
alias top='gotop'
# 別名
alias mem='top -o rsize'
alias cpu='top -o cpu'
```

## 安全策
`-i`(`--interactive`)オプションで上書き時には対話形式で質問するようにしておくやつ。

```sh
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
```


alias ed='vim'
alias edit="emacs -nw"


## 1文字系
ちょっと過激な気はしますが、慣れると使いやすいです。
長くなるので参考になるor面白そうなもののみ。

# h
alias h='cd ~' # home的な
alias h='git reset HEAD' # head的な
alias h='heroku'
alias h='history | grep'
alias h='history'
alias h='tldr' # これは普通に便利そう。help?

# i
alias i='sudo apt install --yes'

#j
alias j='jobs'
alias j='jump'

# k
alias k='kill -9'
alias k='kubectl' # 使ってる
alias k='kwrapper'
alias k='tree' # lの隣だから?

# l
# ほとんどls系でしたので割愛

# m
alias m='cd ~/Music && ls -a' # musicのm!!!
alias m='make'
alias m='man'
alias m='mkdir' # 個人的にはこれかなあ
alias m='rake db:migrate db:rollback && rake db:migrate db:test:prepare' # やりすぎ感
alias m='mv'
alias m='mvn'

# n
alias n='git checkout -b' # new branch
alias n='nano'
alias n='npm run'
alias n='npm' # 実はnodeよりもこっちの方が多く打つ？
alias n='nvim'
alias n='sudo netctl'
alias n='node'

# o
alias o='open' # ほぼこれの亜種

# p
alias p='cd ~/Documents/projects'
alias p='cd ~/Dropbox/Projects'
alias p='cd ~/Pictures && ls -a'
alias p='cd ~/Projects'
alias p='ping' # 意外と激戦区？
alias p='popd' # zshのAUTO_PUSHDとセットかな？
alias p='pwd'
alias p='python'
alias p='python3'
alias p='pacman' # ゲームじゃないよ

# q
alias q='exit' # これ以外あんまない

# r
alias r='cd / && ls -a' # rootのr
alias r='rails' # rails開発者はrはけっこう迷うかも?
alias r='rake'
alias r='ranger'
alias r='rgrep'
alias r='rm -i'
alias r='rspec'
alias r='screen -D -R'
alias r='source ~/.zshrc' # reload?
alias r='radian'

# s
alias s='cd ~/src'
alias s='git status'
alias s='ls' # タイポ対策
alias s='screen'
alias s='spring'
alias s='ssh -l root'
alias s='ssh'
alias s='sudo su'
alias s='sudo'
alias s='svn'

# t
alias t='date +"%H%M%S"' # time
alias t='telnet'
alias t='terraform'
alias t='tig'
alias t='tmux -2'
alias t='tmux attach'
alias t='tmux new-session -A -s main'
alias t='tmux'
alias t='tree -C'
alias t='tree -Cfh'
alias t='tree -I "node_modules"' # 私のかな？
alias t='tree -a --ignore ".git|node_modules|bower_components|.DS_Store" -l 3' # 強化版

# u
alias u='cd ..' # up

# v
alias v='code' # VSCode
alias v='vagrant'
# vimの一族
alias v='mvim'
alias v='nvim'
alias v='vi'
alias v='vim'

# w 特になし

# x
alias x='exit'
alias x='screen -A -x'
alias x='startx' # IBM?
alias x='/mnt/c/Windows/explorer.exe' # cygwinかな?

# y
alias y='yarn' # これ使おう
alias y='yaourt' # ArcLinux

# z
alias z='zathura' # PDFビューワーらしい
```

## その他
```sh
# 短いが...
alias _='sudo'

# オプションを覚えづらい場合はアリ？
alias allps='ps aux'

# カレントディレクトリのパスをクリップボードにコピー(cpwd, copypathなど)
alias pwdc='pwd | tr -d "\n" | pbcopy'
```

## 番外編
### global alias
- zshの機能
- aliasはコマンドの先頭でしか働かないが、`-g`オプション付きで定義すると、コマンドの途中でも展開される
- パイプ等でよく呼び出すコマンドで利用する

```sh
# 便利そうなものをいくつか
alias -g A='| awk'
alias -g C='| pbcopy' # copy
alias -g C='| wc -l' # count
alias -g G='| grep --color=auto' # 鉄板
alias -g H='| head' # 当然tailもね
alias -g L='| less -R'
alias -g X='| xargs'
```


### suffix alias
zshの機能
コマンドの末尾を見てよろしくやってくれる

```sh
alias -s gz='tar -xzvf' # ./hoge.tar.gz で展開できる
alias -s html='open' # ./index.html でブラウザで開く
alias -s {mp3,mp4,wav,mkv,m4v,m4a,wmv,avi,mpeg,mpg,vob,mov,rm}='mplayer' # こんな定義も可能
```