Linux

[Linux] history - 명령어 이력 확인

비번변경 2023. 5. 13. 21:03

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