Snow flake

[command] history 명령어 본문

Programming/Linux

[command] history 명령어

MAYSON 2022. 10. 30. 17:25

history 명령어는 의미 그대로 리눅스에게 내가 내렸던 명령에 대한 로그를 확인하는 명령어입니다.

# 사용법
history

위처럼 별다른 지정 없이 커맨드를 날리게 되면 과거에 사용자가 사용한 모든 커맨드를 보여줍니다. 정상 작동한 커맨드 말고도 오타를 내 작동하지 않은 커맨드 목록까지 시간 순으로 정렬하여 리스트 형식으로 보여줍니다.

# 커맨드 예시
mkdir tuxdirs
chown scott:dba tuxdirs
chmod 777 tuxdirs

# history list 확인
history

#결과
1 mkdir tuxdirs
2 chown scott:dba tuxdirs
3 chmod 777 tuxdirs
4 history

위와 같이 mkdir 커맨드부터 확인을 위해 사용한 history를 포함해 리눅스에게 명령한 모든 커맨드가 list 형식으로 출력됩니다.

# history 옵션

# -c : RAM에 존재하는 history list를 삭제(clear)

# -d offset : history 첫 번째 열인 offset 위치에 있는 history 삭제

# -a : history list에 기록되어 있는 내용을 파일로 지금 저장

# -n : history file로 부터 읽혀지지 않은 라인을 읽고 history list에 추가

# -r : history file을 읽고 history list에 내용을 추가

# -w : 현재 history를 읽어 history 파일에 씌움
# 예시

# history list를 초기화(clear) / file이 삭제되는 것은 아님
history -c

# 555번 offset(번호)에 위치한 명령어를 삭제
history -d 555

# 현재까지의 list를 파일로 저장(동일한 파일명 존재시 덮어씌움)
history -w filename

# 가장 최근에 명령한 7 line 출력
# == history | tail -7
history 7

옵션을 제외하고도 바로 직전에 사용 한 커맨드를 즉시 사용하거나, 몇 번째 커맨드를 지정해 사용하는 등 여러 활용 방안들이 많습니다.

echo "Hello"
echo "Linux!"

# !! : 바로 직전에 명령한 커맨드 실행
!!

# 결과
echo "Linux!"
Linux!

두 번의 커맨드가 실행되었지만 !! 의 경우 가장 최근에 실행한 커맨드를 사용하기에 위와 같은 결과값이 나옵니다.

# history list
history
1 cat $HISTFILE
2 history | tail -10
3 clear
4 cat MAYSON.txt
5 history

# !n : offset n에 위치한 커맨드 실행
# offset 4에 위치한 커맨드 실행
!4

# 결과
cat MAYSON.txt

history list를 확인한 뒤 offset을 지정해 원하는 커맨드를 재실행 하는 것도 가능하고, 오프셋이 아닌 사용자가 최근에 사용한 커맨드 중, 가장 최근부터 역순으로 거슬러 올라가 !-n 순으로 지정하는 것도 가능합니다.

echo "Hello"
echo "MAYSON"

# !?string : 해당 문자열을 찾아 출력
# Hello라는 string을 찾아 커맨드 실행
!?Hello

# 결과
echo "Hello"
Hello

문자열을 찾아 뽑아내는 것도 가능합니다. echo로 명령한 문자열 커맨드는 두 가지 이지만 !? 뒤에 찾고싶은 문자열을 지정했기 때문에 Hello가 포함된 커맨드가 실행됩니다.

 

이 외에도 HISTSIZE 파일의 환경변수 값을 수정해 history 자체를 기록되지 않게 할 수도 있고, 커맨드가 아닌 offset에 위치한 커맨드를 문자열로만 출력할 수 있는 등 익숙해지면 리눅스를 편리하게 만들어줍니다.

 

'Programming > Linux' 카테고리의 다른 글

[command] more 명령어  (0) 2022.11.01
[command] cat 명령어  (0) 2022.10.31
[command] pwd 명령어  (0) 2022.10.26
[command] id 명령어  (0) 2022.10.25
[command] mv 명령어  (0) 2022.10.24
Comments