Home » OS » 리눅스 » 리눅스 history 명령어로 명령어 기록을 봅시다.

리눅스 history 명령어로 명령어 기록을 봅시다.

안녕하세요. 이번 시간에는 리눅스 history 명령어로 이전에 어떤 명령어를 입력했는지 보는 방법을 알아봅시다.


history 파일들

먼저, 계정의 기준 디렉토리 (루트의 경우 /root)로 가 보도록 하겠습니다.

[그림 1] history 파일들

ls -a | grep history를 입력해 보겠습니다. 모든 파일 목록을 출력하는데, history 가 포함되어 있는 이름을 가진 파일을 출력하라는 의미입니다. 여기서 주목해야 할 것은

  • .bash_history
  • .zsh_history

가 있다는 점입니다. bash와 zsh는 쉘 종류입니다. 그리고, 저는 zsh를 사용하고 있습니다. 따라서, 명령어의 저장 기록은 .zsh_history에 저장되어 있습니다. 만약에, bash를 사용한다면 .bash_history에 저장되겠지요.

[그림 2] .bash_history 파일

제 .bash_history 파일을 보면 위와 같습니다.

[그림 3] .zsh_history 파일

제 .zsh_history 파일입니다. 여기에는 vi .zsh_history만 남아 있음을 볼 수 있습니다. 여기까지 정리해 봅시다.

  • 각 유저별로 history 파일을 저장하고 있는데
  • shell 별로 command 실행 기록 또한 저장하고 있다.
  • zsh를 쓴다면 .zsh_history를, bash를 쓴다면 .bash_history에 저장된다.

이 정도 기억하시면 이 글을 이해하시는 데 크게 문제가 없을 겁니다.


리눅스 history 명령어

그러면, history 명령이 무엇일까요? 현재 로그인 되어 있는 유저가 현재 쉘에서 어떤 명령어를 실행했는지 알려주는 명령어입니다.

[그림 4] cho 유저의 기록

cho 유저가 명령어를 친 기록을 보겠습니다. vi .zsh_history만 떠 있음을 볼 수 있어요. 이는 cho 폴더에서 본 .zsh_history와 일치합니다. 이제 root로 로그인 해 보겠습니다.

[그림 5] root 유저의 기록

root로 로그인 해서 보니까, 아까와는 다른 로그가 출력됩니다. 이는 왜 그럴까요? 위에서 설명드렸지만, cho하고 root하고 유저가 다르기 때문이에요. root 폴더에 있는 .zsh_history를 열어볼까요?

[그림 6] root의 .zsh_history 파일

pwd, ls -ail, pwd, cd ~, ls 순서대로 들어갔음을 볼 수 있어요. 아까 cho의 .zsh_history 와는 다르지요? 그러니, history의 결과 또한 다르게 나온 것입니다.


history와 많이 써먹었던 패턴

먼저 history와 grep 패턴입니다. grep은 특정한 패턴을 찾는 명령어 인데요. 예를 들어 우분투에서 방화벽을 설정할 때에는 ufw를 이용합니다. 그런데 이 명령어를 이전에 쳤는데 까먹었을 때에는 어떻게 해야 할까요?

다시 찾아봐야 할까요? history에 남아 있다면, history | grep ufw 를 하면 간단하게 해결됩니다.

history와 tail도 의외로 썼던 조합 중 하나입니다. tail은 가장 마지막의 10개 line을 가져옵니다. 가장 마지막에 치면 마지막 line에 추가되게 됩니다. history | tail의 경우, 가장 마지막으로 친 10개의 명령어를 가져옵니다. 실시간으로 쌓이는 로그를 모니터링 할 때에도 tail을 이용하면 좋겠네요.

Leave a Comment

20 + 14 =