명령줄에 많은 시간을 할애하는 경우 이전에 실행한 명령 기록을 보는 것이 일상 업무를 보다 쉽게 하고 생산성을 향상시킬 수 있는 유용한 기능이 될 수 있습니다.
이전에 실행한 명령 목록을 보고 목록을 검색하며 기록 파일을 조작할 수 있는 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 명령은 이전에 실행된 명령 목록을 표시합니다. 예를 들어, 기록을 사용하여 기억할 수 없는 이전에 사용한 긴 명령을 볼 수 있습니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Debian : Sudoers에 유저 추가 방법, 예제, 방법 (0) | 2022.04.07 |
---|---|
Linux : CentOS 8 : Python 설치 방법, 예제, 명령어 (0) | 2022.04.06 |
Linux : Debian 10 : PostgreSQL 설치 방법, 예제, 명령어 (0) | 2022.04.03 |
Linux : CentOS 8 : Node.js 와 npm 설치 방법, 예제, 명령어 (0) | 2022.04.02 |
Linux : Pstree 명령어, 사용 방법, 예제 (0) | 2022.04.01 |