history
history 명령은 실행한 명령어 이력을 확인할 수 있는 명령어다.
이 글에서는 history 명령어 동작 방식과 history에서 명령어를 검색하는 방법을 정리한다.
사용 방법
기본적으로 history 명령어를 이용해 실행한 명령어 이력을 확인한다. n번째 명령을 실행시키고 싶다면 !n으로 실행한다.
history
# -c : RAM에 저장된 history 목록 삭제
# -d offset : offset 위치에 있는 history 명령어 삭제
# -a : history list를 HISTFILE에 추가
# -n : HISTFILE에서 읽어들여지지 않은 행을 읽고 history 목록에 추가
# -r : HISTFILE을 읽고 history 목록에 추가
# -w : 형재 history를 지정한 파일에 쓰기
동작 방식
history 명령은 이전에 사용했던 명령어 목록을 파일에 저장하고 출력해주는 방식으로 동작한다.
관련된 환경 변수로는 $HISTFILE, $HISTFILESIZE, $HISTSIZE 등이 존재하는데 각각 역할은 다음과 같다.
환경 변수 | 설명 |
$HISTCMD | 현재 명령의 인덱스 |
$HISTCONTROL | history 목록에 명령어가 저장되는 방식 제어. 콜론으로 구분된 값 목록이다, |
$HISTFILE | history 목록이 저장되는 파일 |
$HISTFILESIZE | HISTFILE의 최대 크기 |
$HISTSIZE | historyd에 저장할 수 있는 최대 명령어 수 |
사용자가 로그인하면, 서버는 $HISTFILE을 RAM에 로드하고 현재 active 상태인 shell의 명령어 이력을 저장할 메모리 공간을 생성한다. 이 공간을 history 목록이라고 한다. 사용자가 입력한 명령어는 history 목록에 저장되었다가 shell이 종료될 때 $HISTFILE에 추가되는 방식으로 동작한다.
history 내 명령어 검색
history에 저장된 명령어를 검색할 때는 grep을 사용해도 되지만, ctrl + r을 입력하여 진입할 수 있는 reverse-i-search 모드를 사용해도 좋다. reverse-i-search는 글자를 입력할 때마다 일치하는 명령어를 하나씩 보여주는데, 원하는 명령어를 찾았다면 enter를 입력해 실행시킬 수 있다.
참고 문서
https://www.geeksforgeeks.org/histcontrol-command-in-linux-with-examples/
https://jhnyang.tistory.com/306