[CentOS 7] history 명령어로 사용한 명령어 확인 및 재사용

2020. 1. 3. 14:01CentOS 7/Basic

반응형

history

각 계정별로 이전에 사용했던 명령어를 기억하는 기능

bash쉘을 통해 세션 접속 시, ~/.bash_history 에 기록된 히스토리 내역을 메모리로 읽어들여 ↑, ↓ 로 명령어를 이용할 수 있게 해줍니다.

로그인 쉘의 전역 초기화 파일은 /etc/profile이고, 대화식 쉘의 전역 초기화 파일은 /etc/bash.bashrc 입니다.

따라서 로그인 사용자의 history에 관한 전역 설정은 /etc/profile입니다.

  1. history 관련 변수
  2. history 조회
  3. history 실행
  4. history 비우기
    4-1) 현재 세션에 담긴 history clear
    4-2) 현재 접속 사용자의 history clear
  5. history 날짜, 시각 표시하기

1. history 관련 변수

[jini@cherry ~]$ echo $HISTFILE
/home/jini/.bash_history
[jini@cherry ~]$ echo $HISTFILESIZE
1000
[jini@cherry ~]$ echo $HISTSIZE
1000
  • HISTFILE : 현 접속자의 히스토리 파일(.bash_history)
  • HISTFILESIZE : 히스토리 파일에 저장되는 명령어 수
  • HISTFILE : 세션 중에 히스토리로 저장되는 명령어 수

2. history 조회

history 명령어를 그냥 사용하면 history에 저장된 모든 명령어를 출력합니다.

[jini@apple ~]$ history
1  cd ~
2  ll
3  mkdir .ssh
4  chmod 700 .ssh
...
729  find / -name python3
730  python3.7 --version
731  pwd
732  clear
733  history

history 명령어 옆에 숫자를 입력하면 최근에 사용한 명령어를 설정한 숫자만큼 보여줍니다.

[jini@cherry ~]$ history 5
  729  find / -name python3
  730  python3.7 --version
  731  pwd
  732  clear
  733  history
  734  history 5

grep명령어와 조합하여 history에 기록된 사용한 명령어 중 특정 명령어만 조회할 수 있습니다.

[jini@cherry ~]$ history | grep source
  719  source venv/bin/activate
  735  history | grep -i source

※ grep 옵션은 grep --help를 참고해주세요.

3. history 실행

!를 이용하여 history 이전 명령어를 실행하거나, 히스토리 번호에 저장된 명령어를 실행할 수 있습니다.

[jini@cherry ~]$ !!
history 5
  729  find / -name python3
  730  python3.7 --version
  731  pwd
  732  clear
  733  history 5
[jini@cherry ~]$ !730
python3.7 --version
Python 3.7.4

!! : 이전 명령어 실행
!히스토리번호: 히스토리번호에 저장된 명령어 실행


4. history 비우기

history 비우기를 실행할 경우, 이전에 기록된 명령어 기록들이 모두 제거되니 주의하도록 하세요.

4-1) 현재 세션에 담긴 history clear

history -cw && exit

로그인 쉘 접속 후, 세션에 저장된 명령어 히스토리 제거

4-2) 현재 접속 사용자의 history clear

history -c && history -w && exit

또는

cat /dev/null > ~/.bash_history && history -cw && exit

현재 로그인한 접속자의 세션에 저장된 명령어 히스토리 및 히스토리 파일에 저장된 명령어 기록 모두 제거


5. history 날짜, 시각 표시하기

history 날짜, 시각에 대한 표시를 모든 사용자에게 설정하고자 하면, 로그인 쉘 사용자에 대한 전역 설정 파일인 /etc/profile 에서 합니다.

  • history 명령어에 날짜, 시각 표시하기
  • 현재 세션의 명령어 삭제 방지

기본적으로 history 명령어는 아래와 같이 사용한 명령어만 출력합니다.

Last login: Thu Jan  2 17:02:33 2020 from xx.xx.xxx.xx
[jini@cherry box]$ history 5
  833  cd ../test/
  834  ll
  835  pwd
  836  exit
  837  history 5

prefix에 날짜 및 시각을 볼 수 있도록 하려면 HISTTIMEFORMAT 설정을 추가하면 됩니다.

sudo vim /etc/profile
export HISTTIMEFORMAT="[%F %T]"

readonly HISTFILE

/etc/profile의 맨 하단에 HISTTIMEFORMAT 를 저장합니다.
(unset HISTFILE 방지를 위해 HISTFILE파일을 읽기전용으로 설정했습니다.)


source /etc/profile

source 명령어로 변경된 /etc/profile을 적용합니다.
다시, history 명령어를 실행해봅시다.

[jini@cherry box]$ history 10
  831  [2020-01-02 17:02:33] cd box
  832  [2020-01-02 17:02:33] ll
  833  [2020-01-02 17:02:33] cd ../test/
  834  [2020-01-02 17:02:33] ll
  835  [2020-01-02 17:02:33] pwd
  836  [2020-01-02 17:02:33] exit
  837  [2020-01-02 17:01:39] history 5
  838  [2020-01-02 17:02:01] sudo vim /etc/profile
  839  [2020-01-02 17:02:26] source /etc/profile
  840  [2020-01-02 17:02:36] history 10

로그인 쉘 세션이 시작된 이후로 히스토리 시간이 정상적으로 출력되고 있습니다(ln 837 이후)

단, 수정한 /etc/profile파일을 source 적용한 이후, 세션이 종료된 후에 정상적으로 적용되며
현재 접속중인 터미널 세션 접속 이전 값인 ln 836 이전의 값에서는 명령어 실행 날짜 및 시각을 알 수 없습니다.
→ 현재 터미널 세션의 최초 접속 시각이 표기됩니다.
(만일 다시 종료 후 다시 접속할 경우엔 새로 접속한 세션의 최초 접속 시간이 표기됩니다.)

728x90
반응형