alias와 history
쉽게 말하면
alias는 긴 명령에 짧은 별명을 붙이는 기능이고(ll = ls -l), history는 내가 쳤던 명령 기록이에요. 휴대폰의 단축번호와 최근 통화 목록 같은 거예요.
시험용 정의
alias는 긴 명령에 짧은 별명을 붙이는 기능이고, history는 입력했던 명령 기록을 보고 다시 불러 쓰는 기능이다.
비유로 이해하기
alias는 휴대폰 단축번호(1번 = 엄마), history는 최근 통화 목록이다.
자세히
alias
| 명령 | 뜻 |
|---|---|
| alias | 등록된 alias 목록 |
| alias ll='ls -l' | 별명 만들기 (= 양옆 공백 없음, 공백 있는 명령은 따옴표) |
| alias rm='rm -i' | rm을 항상 확인하며 실행 |
| unalias ll | 별명 삭제 (unalias -a 전부) |
| \rm file | alias를 무시하고 원래 명령 실행 |
history와 느낌표(!) 확장
| 입력 | 뜻 |
|---|---|
| history | 명령 기록 번호와 함께 출력 |
| history 10 | 최근 10개 |
| history -c | 기록 지우기 |
| !! | 직전 명령 |
| !번호 (예: !52) | 그 번호의 명령 |
| !문자열 (예: !vi) | 그 문자열로 시작하는 가장 최근 명령 |
| !?문자열 (예: !?al) | 그 문자열을 포함하는 가장 최근 명령(al로 끝나는 명령을 다시 실행할 때 등) |
| !-2 | 두 번째 전 명령 |
| !$ | 직전 명령의 마지막 인자 |
| ^old^new | 직전 명령에서 old를 new로 바꿔 실행 |
| Ctrl+R | 기록 역방향 검색 |
관련 변수
HISTSIZE: 메모리에 두는 기록 개수, HISTFILE: 저장 파일(기본 ~/.bash_history), HISTFILESIZE: 파일에 저장할 최대 줄 수. 로그아웃할 때 파일에 저장된다. alias를 영구적으로 쓰려면 ~/.bashrc에 적는다.
시험에 이렇게 나와요
- 직전 명령 다시 실행 →
!!, 특정 문자열이 들어간 최근 명령 →!?문자열 - 명령 기록 저장 파일 →
~/.bash_history, 기억 개수 → HISTSIZE, 최근 5개만 보기 →history 5 - alias를 무시하고 원래 명령 실행 → 명령 앞에 \(예: \rm), alias 해제 →
unalias - Tab 키로 명령·파일 이름을 채워 주는 기능 → 명령행 완성
확인 문제
Q1. 방금 친 긴 명령을 root 권한으로 다시 실행하고 싶다. 가장 짧게 쓰는 방법은?
- sudo ^^
- sudo !$
- sudo history
- sudo !!
정답 보기
4번 sudo !!
!!는 바로 직전 명령 전체로 바뀐다. 그래서 sudo !! = sudo + 직전 명령. !$는 직전 명령의 마지막 인자다.
Q2. 최근에 실행한 명령 중 al이 들어 있는 명령을 다시 실행하는 방법은?
- !?al
- !$al
- ^al
- !al
정답 보기
1번 !?al
!?문자열은 '포함', !문자열은 '시작'.
Q3. ls가 ls --color로 alias되어 있을 때, alias를 쓰지 않고 원래 ls를 실행하는 방법은?
- !ls
- ls!
- \ls
- $ls
정답 보기
3번 \ls
백슬래시를 붙이면 alias를 건너뛴다.
Q4. history에서 52번 명령을 다시 실행하는 방법은?
- #52
- $52
- !52
- history -r 52
정답 보기
3번 !52
!52다. 느낌표 뒤에 history 번호를 쓰면 그 명령을 다시 실행한다. !!는 바로 앞 명령을 다시 실행한다.
Q5. 명령 기록이 저장되는 기본 파일은?
- /var/log/history
- ~/.history
- ~/.bashrc
- ~/.bash_history
정답 보기
4번 ~/.bash_history
~/.bash_history (HISTFILE).
Q6. ll이라는 alias를 삭제하는 명령은?
- unalias ll
- alias ll=''
- delalias ll
- alias -d ll
정답 보기
1번 unalias ll
unalias ll이다. alias로 만든 별칭은 unalias로 지운다. alias ll=''는 지우는 게 아니라 빈 별칭으로 바꾼다.
Q7. 직전 명령의 마지막 인자를 뜻하는 것은?
- !*
- $_!
- !!
- !$
정답 보기
4번 !$
!$ (bash 변수 $_도 비슷).
헷갈리기 쉬운 O·X
셸에서 alias 명령으로 만든 별명은 재로그인 후에도 남아 있다.
정답 보기
X 현재 셸에만. 영구는 ~/.bashrc에.
HISTSIZE는 히스토리에 기억할 명령 개수를 정한다.
정답 보기
O 맞는 설명이다.
^ls^ll 은 직전 명령의 ls를 ll로 바꿔 다시 실행한다.
정답 보기
O 맞는 설명이다.