2020. 1. 3. 14:01ㆍCentOS 7/Basic
history
각 계정별로 이전에 사용했던 명령어를 기억하는 기능
bash쉘을 통해 세션 접속 시, ~/.bash_history 에 기록된 히스토리 내역을 메모리로 읽어들여 ↑, ↓
로 명령어를 이용할 수 있게 해줍니다.
로그인 쉘의 전역 초기화 파일은 /etc/profile
이고, 대화식 쉘의 전역 초기화 파일은 /etc/bash.bashrc
입니다.
따라서 로그인 사용자의 history에 관한 전역 설정은 /etc/profile
입니다.
- history 관련 변수
- history 조회
- history 실행
- history 비우기
4-1) 현재 세션에 담긴 history clear
4-2) 현재 접속 사용자의 history clear - 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 이전의 값에서는 명령어 실행 날짜 및 시각을 알 수 없습니다.
→ 현재 터미널 세션의 최초 접속 시각이 표기됩니다.
(만일 다시 종료 후 다시 접속할 경우엔 새로 접속한 세션의 최초 접속 시간이 표기됩니다.)
'CentOS 7 > Basic' 카테고리의 다른 글
[Suricata 5] 1. CentOS 7에 suricata 5 설치하기 (0) | 2020.07.10 |
---|---|
[CentOS 7] timedatectl을 이용하여 서버의 timezone 변경하기 (0) | 2020.03.20 |
[CentOS 7] ntpdate 명령어를 이용하여 NTP 서버와 시간 동기화 (0) | 2020.02.26 |
[CentOS 7] scp로 원격 파일 전송하기 (0) | 2019.11.14 |
[CentOS 7] 새로운 디스크 추가하기(mount) (0) | 2019.09.25 |