DEV Community

kaede
kaede

Posted on • Edited on

Mac 基礎 Part 3 -- 拡張コマンドとエイリアスの設定 in .bashrc

why

作業効率を上げるため。

https://dev.to/kaede_io/vim-vimrc-wo-1-karashu-ku-3j20

Vim の基礎設定も合わせて行うと効果的。


導入方法

Ubuntu では ~/.bashrc

M1 Mac では ~/.zshrc

WSL では ~/.bash_aliase

にエイリアスを書いて、シェルを再読込すると
使えるようになる。

複数シェルを開いている場合は
全てのシェルで再読込が必要。

alias re='source ~/.zshrc'
Enter fullscreen mode Exit fullscreen mode

ソースコマンドでシェル設定を走らせる。
毎回打つのは面倒なので re にエイリアスしておく。



拡張シェル関数

既存のコマンドを組み合わせて、新しいコマンドを作って手間を減らす。

下記の 3 つを作る

  1. cdls
  2. mkcd
  3. safe_rm

1. cdls

https://unix.stackexchange.com/a/20413

cd 実行後に ls も実行する

# cdls
function cd {
  builtin cd "$@" && ls -F
}
Enter fullscreen mode Exit fullscreen mode

2. mkcd

https://unix.stackexchange.com/a/9124

mkdir 実行後に作成したフォルダに cd を実行する

mkcd () {
  mkdir "$1"
  cd "$1"
}
Enter fullscreen mode Exit fullscreen mode

$1 は 引数1 の意味。

普通に mkdir 引数1 して
その後 cd 引数1 する

 mkcd ~/Downloads/mktest

~/Downloads/mktest
Enter fullscreen mode Exit fullscreen mode

このように、作ったディレクトリに即時に移動できる


3. safe_rm

chatGPT4 に依頼

rm -rf をしたときに対象のファイルを構造化して表示する。
その後に本当に削除するか確認できる。

function rm {
  local rf_option=false
  local target_dir=""

  for arg in "$@"; do
    if [ "$arg" = "-rf" ]; then
      rf_option=true
    else
      target_dir="$arg"
    fi
  done

  if [ "$rf_option" = true ] && [ -d "$target_dir" ]; then
    echo "The following files and directories will be removed:"
    echo "----------------------------------------"
    tree "$target_dir"
    echo "----------------------------------------"

    printf "Are you sure you want to delete the above files and directories? [y/N] "
    read confirmation
    if [ "$confirmation" = "y" ] || [ "$confirmation" = "Y" ]; then
      command rm -rf "$target_dir"
      echo "Deleted: $target_dir"
    else
      echo "Deletion canceled"
    fi
  else
    command rm "$@"
  fi
}
Enter fullscreen mode Exit fullscreen mode

拒否の場合

rm -rf hoge
The following files and directories will be removed:
----------------------------------------
hoge
├── 2
├── 2.1
├── 3
├── 3.1
├── 3.2
└── bar
    ├── aaa
    ├── bbb
    └── ccc

2 directories, 8 files
----------------------------------------
Are you sure you want to delete the above files and directories? [y/N] h
Deletion canceled
Enter fullscreen mode Exit fullscreen mode

承認の場合

...


2 directories, 8 files
----------------------------------------
Are you sure you want to delete the above files and directories? [y/N] Y
Deleted: hoge
Enter fullscreen mode Exit fullscreen mode


既存コマンドのエイリアス


cd

https://qiita.com/reireias/items/d906ab086c3bc4c22147#cd%E7%B3%BB

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
Enter fullscreen mode Exit fullscreen mode

ls

ファイル一覧を表示するときの最適化。

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
Enter fullscreen mode Exit fullscreen mode

Ubuntu ではこれがデフォルトで適用されている。


git コマンドのエイリアス


ステージング、コミット関係

# git staging/commit
alias gs='git status'
alias ga='git add'
alias gcv='git commit -v'
alias gcm='git commit -m'

# git diff
alias gd='git diff'
alias gdc='git diff --cached'

# git push/pull
alias gps='git push'
alias gpsoh='git push origin head'
alias gpl='git pull'
alias gplrau='git pull -r --au'
Enter fullscreen mode Exit fullscreen mode

スキーマファイルを git status で非表示にする

grep をかませると色が消えるので、オプションが必要

## git status without schema files with colored
alias gs='git -c color.status=always status | grep -v 'schema\.rb' --color=always | cat'
Enter fullscreen mode Exit fullscreen mode

ブランチ関係

# git branch/checkout
alias gb='git branch'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcm='git checkout master'
alias gcd='git checkout dev'
Enter fullscreen mode Exit fullscreen mode

ブランチの表示や切り替え、作成などのコマンドも短くする

gs
fatal: not a git repository (or any of the parent directories): .git
Enter fullscreen mode Exit fullscreen mode

sh の再起動後、コマンドをたたいてこうなれば読まれている。



コマンドの一文字エイリアス

g や k を打ったら git や kubectl に決まっている。
なので 一文字でコマンドになるようにした。

## tool shorten alias

alias g='git'
alias dc='docker-compose'
alias k='kubectl'
alias skf='skaffold'
Enter fullscreen mode Exit fullscreen mode

docker-compose などを短くする



外部シェルコマンド

brew などで新しく入れる便利コマンド。

jump の他にも fzf, htop, jq などがある

jump

移動を楽にするコマンド

https://github.com/gsamokovarov/jump

Mac は brew install jump

Ubuntu は

wget https://github.com/gsamokovarov/jump/releases/download/v0.51.0/jump_0.51.0_amd64.deb && sudo dpkg -i jump_0.51.0_amd64.deb
Enter fullscreen mode Exit fullscreen mode

インストールした後は

eval "$(jump shell zsh)"
Enter fullscreen mode Exit fullscreen mode

これを .zshrc に入れるように指示される。
これを入れて zsh をリフレッシュすると使えるようになる。

普段 ~/source/projectName/kotlin/com/domain/post.kt

とかをよく使う場合、 j post だけで移動できる。
j domain まで打っても
j domain/post.kt のように補完が出たりはしない。

Top comments (0)