공든탑앱 열기

alias와 history

리눅스마스터 2급 · Shell · 약 8분

쉽게 말하면

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 filealias를 무시하고 원래 명령 실행

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에 적는다.

시험에 이렇게 나와요

확인 문제

Q1. 방금 친 긴 명령을 root 권한으로 다시 실행하고 싶다. 가장 짧게 쓰는 방법은?

  1. sudo ^^
  2. sudo !$
  3. sudo history
  4. sudo !!
정답 보기

4번 sudo !!

!!는 바로 직전 명령 전체로 바뀐다. 그래서 sudo !! = sudo + 직전 명령. !$는 직전 명령의 마지막 인자다.

Q2. 최근에 실행한 명령 중 al이 들어 있는 명령을 다시 실행하는 방법은?

  1. !?al
  2. !$al
  3. ^al
  4. !al
정답 보기

1번 !?al

!?문자열은 '포함', !문자열은 '시작'.

Q3. ls가 ls --color로 alias되어 있을 때, alias를 쓰지 않고 원래 ls를 실행하는 방법은?

  1. !ls
  2. ls!
  3. \ls
  4. $ls
정답 보기

3번 \ls

백슬래시를 붙이면 alias를 건너뛴다.

Q4. history에서 52번 명령을 다시 실행하는 방법은?

  1. #52
  2. $52
  3. !52
  4. history -r 52
정답 보기

3번 !52

!52다. 느낌표 뒤에 history 번호를 쓰면 그 명령을 다시 실행한다. !!는 바로 앞 명령을 다시 실행한다.

Q5. 명령 기록이 저장되는 기본 파일은?

  1. /var/log/history
  2. ~/.history
  3. ~/.bashrc
  4. ~/.bash_history
정답 보기

4번 ~/.bash_history

~/.bash_history (HISTFILE).

Q6. ll이라는 alias를 삭제하는 명령은?

  1. unalias ll
  2. alias ll=''
  3. delalias ll
  4. alias -d ll
정답 보기

1번 unalias ll

unalias ll이다. alias로 만든 별칭은 unalias로 지운다. alias ll=''는 지우는 게 아니라 빈 별칭으로 바꾼다.

Q7. 직전 명령의 마지막 인자를 뜻하는 것은?

  1. !*
  2. $_!
  3. !!
  4. !$
정답 보기

4번 !$

!$ (bash 변수 $_도 비슷).

헷갈리기 쉬운 O·X

셸에서 alias 명령으로 만든 별명은 재로그인 후에도 남아 있다.

정답 보기

X 현재 셸에만. 영구는 ~/.bashrc에.

HISTSIZE는 히스토리에 기억할 명령 개수를 정한다.

정답 보기

O 맞는 설명이다.

^ls^ll 은 직전 명령의 ls를 ll로 바꿔 다시 실행한다.

정답 보기

O 맞는 설명이다.

함께 보면 좋은 개념