기계적 인조 인간

리눅스에서 히스토리 명령 (bash history)

Linux and macOS Command Line Basics

Linux and macOS Command Line Basics

차례:

Anonim

, 우리는 history 명령에 대해 이야기 할 것입니다.이 명령을 사용하면 이전에 실행 된 명령 목록을보고 목록을 검색하고 기록 파일을 조작 할 수 있습니다.

history 명령 및 기록 확장 사용

history 는 쉘 내장이며 동작은 쉘마다 약간 다를 수 있습니다. 우리는 Bash 내장 버전의 history 을 다룰 것이다.

가장 간단한 형식으로, 옵션이나 인수없이 호출되면 history 명령은 행 번호와 함께 전체 히스토리 목록을 표시합니다.

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 는 'word'로 시작하는 가장 최근의 명령을 나타냅니다.

일반적으로 history 에는 화면에 맞지 않는 많은 출력 줄이 표시됩니다. 한 번에 한 페이지 씩 출력을 보려면 다음 명령과 같이 페이저 프로그램으로 출력하십시오.

history | less

마지막 n 행을 표시하려면 숫자를 명령의 인수로 전달하십시오. 예를 들어, 내역 목록에서 마지막 다섯 줄만 보려면 다음을 입력하십시오.

history -5

up down 화살표 키를 사용하여 목록의 항목을 탐색하십시오. 검색 한 명령이 표시되면 Enter 를 눌러 실행하십시오.

타입 !! 이전 명령을 실행하려면

!!

sudo 명령을 사용하지 않고 명령을 다시 입력하는 대신 다음을 입력 할 때 특히 유용합니다.

sudo !!

!-1 !! 와 동일합니다 !! 히스토리 목록에서 마지막 명령, !-2 초에서 마지막으로 등을 실행합니다.

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

^sduo^sudo^

grep 명령을 사용하여 출력을 필터링하십시오. 예를 들어“nano”를 포함한 모든 명령을 보려면 다음을 실행하십시오.

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

기록 지우기

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

히스토리 목록을 지우려면 -c 옵션을 사용하십시오.

history -c

히스토리 목록에서 시작 위치와 종료 위치 사이의 특정 라인을 삭제하려면 -d 옵션을 사용하십시오.

예를 들어, 365에서 375 사이의 행 (해당 행 포함)을 제거하려면 다음을 입력하십시오.

history -d 365 375

음의 정수가 사용되면 행은 히스토리 목록의 끝부터 다시 계산됩니다.

위의 명령은 메모리에 보관 된 기록 목록을 지우지 만 디스크의 .bash_history 파일에서 항목을 제거하지는 않습니다. 파일을 지우려면 기록 목록을 파일에 써야합니다.

history -c history -w

히스토리 동작 수정

Bash 히스토리의 동작은 여러 가지 다른 환경 변수를 사용하여 정의 할 수 있습니다. 히스토리 동작을 수정할 때 ~/.bashrc 또는 사용자가 로그인 할 때로드되는 다른 구성 파일에 변수를 설정하십시오.

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

HISTSIZE=10000

HISTCONTROL 변수는 명령이 히스토리 목록에 저장되는 방법을 정의하는 콜론으로 구분 된 값 목록을 승인합니다.

  • ignorespace 공백으로 시작하는 명령은 히스토리 목록에 저장되지 않습니다. ignoredups 중복 명령이 저장되지 않습니다. ignoreboth - ignorespace ignoredups 를 모두 포함하는 속기입니다.

HISTCONTROL=ignoreboth

HISTTIMEFORMAT 변수가 설정되면 Bash는 각 행의 명령에 대한 실행 시간 소인을 앞에 추가합니다.

예를 들어, 다음을 설정 한 경우:

HISTTIMEFORMAT="%F %T: "

기록은 다음 형식으로 표시됩니다.

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

결론

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

역사 터미널