alias: 나만의 명령어 단축키 만들기
Bash alias의 동작 원리와 생성·삭제·영구 저장 방법, 그리고 alias와 함수 선택 기준을 익힌다.
지난 글에서 히스토리 확장으로 이전 명령을 재사용하는 방법을 배웠다. 이번에는 아예 긴 명령어에 짧은 이름을 붙이는 alias를 다룬다. ls -alF --color=auto를 매번 입력하는 대신 ll 하나로 해결하는 것이 alias의 역할이다. 올바르게 관리하면 작업 속도를 높이고 오타를 줄일 수 있다.
alias 기본 사용법
alias ll='ls -alF --color=auto' # alias 생성
alias # 모든 alias 목록 출력
alias ll # 특정 alias 내용 확인
unalias ll # alias 삭제
alias 이름='명령' 형식에서 등호 양쪽에 공백을 넣으면 안 된다. 값 부분에 공백이 있을 때는 반드시 따옴표로 감싼다.
alias 치환 시점
셸이 명령줄을 파싱할 때 alias 치환은 가장 먼저 일어난다. ll을 입력하면 셸은 alias 테이블을 조회해 ls -alF --color=auto로 치환한 뒤 실행한다. 이 과정 때문에 alias는 파이프라인 첫 번째 단어에만 동작하고 인자 위치에서는 치환되지 않는다.
alias ll='ls -alF --color=auto'
ll /tmp # OK: ll이 명령 위치에 있음
sudo ll /tmp # OK: sudo 다음 첫 단어도 치환 대상
ls -la | ll # ❌: 파이프 뒤 ll은 치환 안 됨
alias 우회 — 원본 명령 실행
ls에 alias가 걸려 있어도 때로는 원본 명령을 실행해야 할 때가 있다.
\ls # 백슬래시로 alias 무력화
'ls' # 따옴표로 감싸도 동일
command ls # command 빌트인 사용
스크립트에서 외부 명령이 alias와 이름이 겹칠 때 command ls를 쓰면 안전하다.
영구 저장 — ~/.bashrc와 ~/.bash_aliases
alias 명령으로 만든 별칭은 현재 셸 세션에만 존재한다. 터미널을 닫으면 사라진다. 영구 적용하려면 설정 파일에 저장해야 한다.
Ubuntu/Debian은 기본적으로 ~/.bashrc 안에 ~/.bash_aliases를 불러오는 코드가 포함되어 있다. 없다면 직접 추가하면 된다.
# ~/.bashrc에 추가 (없을 경우)
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
이후 alias는 ~/.bash_aliases에 모아 관리한다.
# ~/.bash_aliases
alias ll='ls -alF --color=auto'
alias la='ls -A'
alias l='ls -CF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias ...='cd ../..'
alias update='sudo apt update && sudo apt upgrade -y'
alias gs='git status'
alias gp='git push'
alias gc='git commit'
변경 후 현재 세션에 즉시 적용하려면 source 명령을 쓴다.
source ~/.bash_aliases
# 또는
. ~/.bash_aliases
유용한 alias 패턴
# 실수 방지 — 확인 요청
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 디렉터리 이동
alias ..='cd ..'
alias ...='cd ../..'
alias ~='cd ~'
# 자주 쓰는 명령 단축
alias h='history'
alias c='clear'
alias ports='netstat -tulanp'
alias myip='curl -s ifconfig.me'
alias vs 함수 — 선택 기준
alias는 단순 치환만 가능하다. 인자를 받거나, 조건 분기가 필요하거나, 여러 줄 로직이 필요하면 함수를 써야 한다.
| 상황 | 선택 |
|---|---|
| 긴 명령에 짧은 이름 부여 | alias |
| 인자를 특정 위치에 삽입 | 함수 |
| 조건 분기, 루프 | 함수 |
| 임시 디렉터리 생성 후 이동 | 함수 |
# alias로 구현 불가 — 인자가 중간에 들어감
# alias mkcd='mkdir -p ??? && cd ???'
# 함수로 구현
mkcd() {
mkdir -p "$1" && cd "$1"
}
함수도 ~/.bashrc 또는 별도 ~/.bash_functions 파일에 저장하면 영구적으로 사용할 수 있다.
지난 글: history & !bang: 셸 히스토리 완전 활용
다음 글: echo & printf: 표준 출력 제어하기
읽어주셔서 감사합니다. 😊