[Setting] alias 를 파일로 관리하기
들어가며
alias 는 없어서는 안되는 기능 중 하나입니다. git clone 과 같이 긴 명령어를 gcl 로 alias 해서 사용할 수 있도록 도와주기 때문입니다. 잘만 사용한다면 효율人이 될 수 있죠. alias 을 설정하는 방법으로는 (제가 아는 선에서) 크게 2가지 방법이 있습니다. 첫번째는 아래 명령어와 같이 터미널에 하나하나 추가하는 방법입니다. 지금까지 저는 이 방법으로 alias 를 설정해왔습니다.
alias gcl="git clone"
이 방법의 단점으로는 하나하나 설정해야 한다는 점과, 재부팅을 하고나면 초기화 되어버린다는 점이 있습니다.
저는 총 214 개의 alias 를 설정하고 사용합니다. 이를 첫번째 방식을 사용하여 설정한다면, 설정하는 데에도 적지 않은 시간이 걸리며,, 만약 모두 설정했다고 해도 재부팅 후 모든 alias 설정이 사라져버리는 아주 좋지 않은 상황이 발생할 수 있습니다.
그래서 사용하는 방법이 alias 를 파일로 관리하기 입니다.
어떻게?
우선, 자신의 컴퓨터가 어떤 쉘이 기본으로 설정되어 있는지 확인해야 합니다. 이는 아래의 명령어로 확인 가능합니다.
echo $SHELL
이 글에서는 bash 와 zsh 쉘을 사용하는 경우에 대해서만 작성했습니다.
bash 에서는 $HOME/.bashrc, zsh 에서는 $HOME/.zshrc 파일에서 alias 를 관리합니다. 아래의 명령어로 해당 파일 편집창으로 들어가줍니다.
# bash 쉘의 경우
vi ~/.bashrc
# zsh 쉘의 경우
vi ~/.zshrc
.bashrc 또는 .zshrc 파일 내에 아래의 스크립트가 작성되어 있는지 확인합니다. 만약 작성되어 있다면, 본 파일에는 더이상 편집할 내용이 없습니다. 작성되어 있지 않은 경우에는 추가해주세요 :)
# bash, zsh 쉘 모두 해당
if [ -f ~/.aliases ]; then
source ~/.aliases
fi
이제 설정할 alias 를 모아놓은 파일을 작성해줄 차례입니다. 아래의 명령어로 .aliases 파일을 작성해줍니다.
vi ~/.aliases
이 파일에 설정할 alias 들을 모두 작성해주면 됩니다. 저의 경우 아래의 alias 들이 설정되어 있습니다.
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -1'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
_='sudo '
egrep='grep -E --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
fgrep='grep -F --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
g=git
ga='git add'
gaa='git add --all'
gam='git am'
gama='git am --abort'
gamc='git am --continue'
gams='git am --skip'
gamscp='git am --show-current-patch'
gap='git apply'
gapa='git add --patch'
gapt='git apply --3way'
gau='git add --update'
gav='git add --verbose'
gb='git branch'
gbD='git branch --delete --force'
gba='git branch --all'
gbd='git branch --delete'
gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null'
gbg='LANG=C git branch -vv | grep ": gone\]"'
gbgD='LANG=C git branch --no-color -vv | grep ": gone\]" | awk '\''{print $1}'\'' | xargs git branch -D'
gbgd='LANG=C git branch --no-color -vv | grep ": gone\]" | awk '\''{print $1}'\'' | xargs git branch -d'
gbl='git blame -w'
gbnm='git branch --no-merged'
gbr='git branch --remote'
gbs='git bisect'
gbsb='git bisect bad'
gbsg='git bisect good'
gbsn='git bisect new'
gbso='git bisect old'
gbsr='git bisect reset'
gbss='git bisect start'
gc='git commit --verbose'
'gc!'='git commit --verbose --amend'
gca='git commit --verbose --all'
'gca!'='git commit --verbose --all --amend'
gcam='git commit --all --message'
'gcan!'='git commit --verbose --all --no-edit --amend'
'gcans!'='git commit --verbose --all --signoff --no-edit --amend'
gcas='git commit --all --signoff'
gcasm='git commit --all --signoff --message'
gcb='git checkout -b'
gcd='git checkout $(git_develop_branch)'
gcf='git config --list'
gcl='git clone --recurse-submodules'
gclean='git clean --interactive -d'
gcm='git checkout $(git_main_branch)'
gcmsg='git commit --message'
'gcn!'='git commit --verbose --no-edit --amend'
gco='git checkout'
gcor='git checkout --recurse-submodules'
gcount='git shortlog --summary --numbered'
gcp='git cherry-pick'
gcpa='git cherry-pick --abort'
gcpc='git cherry-pick --continue'
gcs='git commit --gpg-sign'
gcsm='git commit --signoff --message'
gcss='git commit --gpg-sign --signoff'
gcssm='git commit --gpg-sign --signoff --message'
gd='git diff'
gdca='git diff --cached'
gdct='git describe --tags $(git rev-list --tags --max-count=1)'
gdcw='git diff --cached --word-diff'
gds='git diff --staged'
gdt='git diff-tree --no-commit-id --name-only -r'
gdup='git diff @{upstream}'
gdw='git diff --word-diff'
gf='git fetch'
gfa='git fetch --all --prune --jobs=10'
gfg='git ls-files | grep'
gfo='git fetch origin'
gg='git gui citool'
gga='git gui citool --amend'
ggpull='git pull origin "$(git_current_branch)"'
ggpur=ggu
ggpush='git push origin "$(git_current_branch)"'
ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'
ghh='git help'
gignore='git update-index --assume-unchanged'
gignored='git ls-files -v | grep "^[[:lower:]]"'
git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk'
gk='\gitk --all --branches &!'
gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!'
gl='git pull'
glg='git log --stat'
glgg='git log --graph'
glgga='git log --graph --decorate --all'
glgm='git log --graph --max-count=10'
glgp='git log --stat --patch'
glo='git log --oneline --decorate'
globurl='noglob urlglobber '
glod='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset"'
glods='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --date=short'
glog='git log --oneline --decorate --graph'
gloga='git log --oneline --decorate --graph --all'
glol='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset"'
glola='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --all'
glols='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --stat'
glp=_git_log_prettily
gluc='git pull upstream $(git_current_branch)'
glum='git pull upstream $(git_main_branch)'
gm='git merge'
gma='git merge --abort'
gmom='git merge origin/$(git_main_branch)'
gms='git merge --squash'
gmtl='git mergetool --no-prompt'
gmtlvim='git mergetool --no-prompt --tool=vimdiff'
gmum='git merge upstream/$(git_main_branch)'
gp='git push'
gpd='git push --dry-run'
gpf='git push --force-with-lease --force-if-includes'
'gpf!'='git push --force'
gpoat='git push origin --all && git push origin --tags'
gpod='git push origin --delete'
gpr='git pull --rebase'
gpristine='git reset --hard && git clean --force -dfx'
gpsup='git push --set-upstream origin $(git_current_branch)'
gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes'
gpu='git push upstream'
gpv='git push --verbose'
gr='git remote'
gra='git remote add'
grb='git rebase'
grba='git rebase --abort'
grbc='git rebase --continue'
grbd='git rebase $(git_develop_branch)'
grbi='git rebase --interactive'
grbm='git rebase $(git_main_branch)'
grbo='git rebase --onto'
grbom='git rebase origin/$(git_main_branch)'
grbs='git rebase --skip'
grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
grev='git revert'
grh='git reset'
grhh='git reset --hard'
grm='git rm'
grmc='git rm --cached'
grmv='git remote rename'
groh='git reset origin/$(git_current_branch) --hard'
grrm='git remote remove'
grs='git restore'
grset='git remote set-url'
grss='git restore --source'
grst='git restore --staged'
grt='cd "$(git rev-parse --show-toplevel || echo .)"'
gru='git reset --'
grup='git remote update'
grv='git remote --verbose'
gsb='git status --short --branch'
gsd='git svn dcommit'
gsh='git show'
gsi='git submodule init'
gsps='git show --pretty=short --show-signature'
gsr='git svn rebase'
gss='git status --short'
gst='git status'
gsta='git stash push'
gstaa='git stash apply'
gstall='git stash --all'
gstc='git stash clear'
gstd='git stash drop'
gstl='git stash list'
gstp='git stash pop'
gsts='git stash show --text'
gstu='gsta --include-untracked'
gsu='git submodule update'
gsw='git switch'
gswc='git switch --create'
gswd='git switch $(git_develop_branch)'
gswm='git switch $(git_main_branch)'
gtl='gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl'
gts='git tag --sign'
gtv='git tag | sort -V'
gunignore='git update-index --no-assume-unchanged'
gunwip='git rev-list --max-count=1 --format="%s" HEAD | grep -q "\--wip--" && git reset HEAD~1'
gup='git pull --rebase'
gupa='git pull --rebase --autostash'
gupav='git pull --rebase --autostash --verbose'
gupom='git pull --rebase origin $(git_main_branch)'
gupomi='git pull --rebase=interactive origin $(git_main_branch)'
gupv='git pull --rebase --verbose'
gwch='git whatchanged -p --abbrev-commit --pretty=medium'
gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"'
gwt='git worktree'
gwta='git worktree add'
gwtls='git worktree list'
gwtmv='git worktree move'
gwtrm='git worktree remove'
history=omz_history
l='ls -lah'
la='ls -lAh'
ll='ls -lh'
ls='ls -G'
lsa='ls -lah'
md='mkdir -p'
rd=rmdir
run-help=man
which-command=whence
원하는 alias 를 작성하고 저장해줍니다.
저장
이제 지금까지 해준 설정을 적용해줘야 합니다. 적용은 bash 와 zsh 모두 같습니다. 아래의 명령어를 자신의 쉘에 맞게 입력해주면 됩니다.
# bash 쉘의 경우
source ~/.bashrc
# zsh 쉘의 경우
source ~/.zshrc
지금부터 작성한 alias 들이 정상적으로 작동하는 것을 확인할 수 있습니다.
댓글
이 글 공유하기
다른 글
-
[Ubuntu] Welcome Message 바꾸기
[Ubuntu] Welcome Message 바꾸기
2023.09.19 -
[Ubuntu] Windows 부팅 디스크 만들기(WoeUSB-ng)
[Ubuntu] Windows 부팅 디스크 만들기(WoeUSB-ng)
2023.09.18 -
[ngrok] 배포없이 로컬 서비스 인터넷으로 공개하기
[ngrok] 배포없이 로컬 서비스 인터넷으로 공개하기
2023.09.07 -
[Ubuntu] Notion 설치하기
[Ubuntu] Notion 설치하기
2023.09.07