SW/리눅스

Linux : Bash : History 명령어, 사용 방법, 예제

얇은생각 2022. 4. 4. 07:30
반응형

명령줄에 많은 시간을 할애하는 경우 이전에 실행한 명령 기록을 보는 것이 일상 업무를 보다 쉽게 하고 생산성을 향상시킬 수 있는 유용한 기능이 될 수 있습니다.

이전에 실행한 명령 목록을 보고 목록을 검색하며 기록 파일을 조작할 수 있는 history 명령에 대해 설명합니다.

 

 

Linux : Bash : History 명령어, 사용 방법, 예제

 

 

기록 명령 및 기록 확장을 사용

역사는 조개 내장이고, 그것의 동작은 조개마다 약간 다를 수 있습니다. Bash의 내장된 역사 버전을 다룰 것입니다.

가장 간단한 형식에서 옵션이나 인수 없이 호출될 경우 기록 명령은 행 번호와 함께 전체 기록 목록을 표시합니다.

history

# ...
# 467  git push
# 468  tail -f var/logs/error
# 469  nano +22,5 functions.sh
# 470  source project-env/bin/activate
# 471  history

 

 

!n을 입력하면 기록 목록에서 n번째 명령이 실행되고 !-n 명령은 n행 뒤로 이동합니다. 다음 예에서는 467번 라인에서 명령을 실행하고 있습니다.

!467

 

 

명령을 실행하는 또 다른 방법은 !word expansion. word는 'word'로 시작하는 가장 최근의 명령을 사용하는 것입니다.

일반적으로 내역은 화면에 맞지 않는 많은 출력 라인을 표시합니다. 출력을 한 번에 한 페이지씩 보려면 다음 명령처럼 호출기 프로그램에 연결합니다.

history | less

 

 

마지막 n줄을 표시하려면 이 숫자를 인수로 명령에 전달합니다. 예를 들어 기록 목록에서 마지막 다섯 줄만 보려면 다음을 입력합니다.

history -5

 

 

위쪽 및 아래쪽 화살표 키를 사용하여 목록의 항목을 탐색합니다. 검색한 명령이 표시되면 Enter 키를 눌러 실행합니다.

!!을 입력하여 이전 명령을 실행합니다.

!!

 

 

특히 명령을 sudo 와 수직을 이루지 않은 경우 명령을 다시 입력하는 대신 다음 명령을 입력할 수 있습니다.

sudo !!

 

 

!-1은!!와 동일하며 기록 목록의 마지막 명령, !-2초에서 마지막 명령 등을 실행합니다.

^word1^word2^ 확장을 사용하면 "word1"을 "word2"로 대체하는 마지막 명령을 다시 실행할 수 있습니다. 실수로 sduo 명령 대신 sduo 명령을 입력한 경우 다음 명령으로 올바른 단어를 사용하여 명령을 반복할 수 있습니다.

^sduo^sudo^

 

 

grep 명령을 사용하여 출력을 필터링합니다. 예를 들어, "나노"를 포함한 모든 명령을 보려면 다음을 실행합니다.

history | grep nano

# 302  sudo nano /etc/resolv.conf
# 356  nano setup.py
# 413  sudo nano /etc/hosts
# 469  nano +22,5 functions.sh

 

 

이제 nano setup.py 명령을 다시 실행하려면 다음을 입력합니다.

!356

 

 

명령 기록을 검색하는 또 다른 방법은 Ctrl-R을 누르는 것입니다. 프롬프트는 다음과 같이 변경되며 이전에 실행한 명령 검색을 시작할 수 있습니다.

(reverse-i-search)`':

 

 

셸에 일치하는 줄이 표시됩니다. 일치하는 다음 제안으로 이동하려면 Ctrl-R을 다시 누릅니다.

기록 확장, 한정자 및 지정자에 대한 자세한 내용은 Bash 매뉴얼을 참조하십시오.

 

 

 

기록 목록을 저장

기본적으로 새 세션을 시작할 때 Bash는 .bash_history 파일에서 기록 목록을 읽습니다. 현재 세션에서 실행되는 명령 목록은 메모리에 저장되며 세션이 닫힐 때 파일에 저장됩니다.

여러 셸 세션을 연 경우 마지막으로 닫힌 세션 기록만 저장됩니다.

-a 옵션을 사용하면 현재 세션 기록 목록을 .bash_history 파일에 저장할 수 있습니다.

history -a

 

 

-w 옵션은 전체 기록 목록을 기록 파일에 씁니다.

history -w

 

 

 

기록을 지우기

기록 명령을 사용하여 전체 기록 목록을 지우거나 특정 부분을 제거할 수 있습니다.

기록 목록을 지우려면 -c 옵션을 사용합니다.

history -c

 

 

기록 목록에서 시작 위치와 끝 위치 사이의 특정 선을 삭제하려면 -d 옵션을 사용합니다.

예를 들어, 365에서 375 사이의 선(이 선 포함)을 제거하려면 다음을 입력합니다.

history -d 365 375

 

 

-d 옵션에 숫자를 하나만 입력하면 명령이 지정된 줄을 제거합니다.

음수 정수를 사용하면 기록 목록의 끝에서 줄이 카운트백됩니다.

위의 명령은 메모리에 저장되지만 디스크의 .bash_history 파일에서 항목을 제거하지는 않는 기록 목록을 지웁니다. 파일을 지우려면 기록 목록을 파일에 기록해야 합니다.

history -c
history -w

 

 

 

기록 동작을 수정

Bash 기록의 동작은 여러 다른 환경 변수를 사용하여 정의될 수 있습니다. 기록 동작을 수정할 때 변수를 ~/.bashrc 또는 사용자가 로그인할 때 로드되는 다른 구성 파일에 설정합니다.

기본적으로 Bash는 명령 기록 목록에 500줄을 유지합니다. HISTIZE 변수를 사용하여 이 값을 변경할 수 있습니다. 이 파일을 10000으로 설정하려면 .bashrc 파일에 다음 줄을 추가하십시오.

HISTSIZE=10000

 

 

HISTCONTROL 변수는 기록 목록에 명령이 저장되는 방법을 정의하는 콜론으로 구분된 값 목록을 수락합니다.

ignorespace - 공백으로 시작하는 명령은 기록 목록에 저장되지 않습니다.

ignoredups - 중복된 명령은 저장되지 않습니다.

ignore both - ignorespace와 ignoredups를 모두 포함하는 단축어입니다.

HISTCONTROL=ignoreboth

 

 

HISTTIMEFORMAT 변수가 설정되면 Bash는 각 행에 명령에 대한 실행 타임스탬프를 추가합니다.

예를 들어 다음을 설정할 경우 다음과 같이 됩니다.

내역이 다음 형식으로 표시됩니다.

HISTTIMEFORMAT="%F %T: "

# 413  2019-10-27 21:13:07: sudo nano /etc/hosts

 

 

history 명령은 이전에 실행된 명령 목록을 표시합니다. 예를 들어, 기록을 사용하여 기억할 수 없는 이전에 사용한 긴 명령을 볼 수 있습니다.

반응형