홈페이지 » 어떻게 » 리눅스 또는 macOS 터미널에서 Bash 히스토리를 사용하는 방법

    리눅스 또는 macOS 터미널에서 Bash 히스토리를 사용하는 방법

    bash 쉘은 대부분의 Linux 배포판에 포함 된 표준 터미널 환경으로 macOS에 포함되어 있으며 Windows 10에 설치할 수 있습니다. 사용자가 입력 한 명령을 기억하여 이력 파일에 저장합니다. bash 역사의 몇 가지 기본 사항을 알고있을 것입니다. 그러나 실제로 깨닫지 못하는 것보다 훨씬 강력합니다..

    키보드 단축키

    bash 히스토리를 스크롤하려면 bash의 유용한 키보드 단축키 몇 개를 사용할 수 있습니다. 이 단축키를 누르면 이전에 사용한 명령이 프롬프트에 나타납니다..

    • 위쪽 화살표 또는 Ctrl + P: 기록에서 이전 명령으로 이동하십시오. 키를 여러 번 눌러 사용했던 명령을 거꾸로 따라 가십시오..
    • 아래쪽 화살표 또는 Ctrl + N: 역사에서 다음 명령으로 이동하십시오. 키를 여러 번 눌러 사용했던 명령을 진행합니다..
    • Alt + R: 현재 행에서 편집 한 경우 기록에서 가져온 명령의 변경 사항 되돌리기.

    Bash에는 이전에 실행 한 명령을 검색 할 때 사용할 수있는 특별한 "회수"모드가 있습니다..

    • Ctrl + R: 당신이 제공 한 문자와 일치하는 마지막 명령을 회상해라. 이 바로 가기를 누르고 명령에 대한 bash 기록을 검색하려면 입력을 시작하십시오..
    • Ctrl + O: Ctrl + R로 찾은 명령을 실행하십시오..
    • Ctrl + G: 명령을 실행하지 않고 기록 검색 모드로 둡니다..

    배쉬의 역사보기

    다음 명령을 실행하여 전체 bash 히스토리를 화면에 출력 할 수 있습니다 :

    역사

    bash 히스토리에있는 모든 명령 목록과 각 명령의 왼쪽에있는 번호가 표시됩니다. 그 옆에 "1"이있는 명령은 bash 기록에서 가장 오래된 명령이고, 가장 큰 번호를 가진 명령이 가장 최근의 명령입니다.

    출력으로 원하는 모든 것을 할 수 있습니다. 예를 들어, grep명령을 사용하여 명령 기록 검색.

    역사 | grep your_search

    그것을 파이프로 연결하여 꼬리 명령을 실행하면 실행 한 최근 명령 중 일부만을 볼 수 있습니다. 예를 들어, 다음 명령은 히스토리의 마지막 5 개 항목을 표시합니다.

    역사 | 꼬리 -5

    기록에서 명령 실행

    Bash는 이전 명령을 빠르게 "확장"하거나 확장하고 수정합니다. 이 기능을 "내역 확장"이라고하며 "bang"이라고하는 느낌표를 사용합니다. 다른 명령을 실행하는 것처럼 프롬프트에서 명령을 입력하고 Enter 키를 눌러 실행하십시오..

    내역에서 해당 번호로 특정 명령을 실행하려면 다음 명령을 사용하십시오.

    !#

    예를 들어, bash 히스토리에서 12 번째 명령을 실행하고 싶다고합시다. 그것은 명령을 실행할 때 왼쪽에 "12"가 붙은 명령입니다. 역사 명령. 다음 명령을 입력합니다..

    !12

    마지막으로 실행 한 명령을 다시 실행하려면 다음을 입력하십시오. 위쪽 화살표를 한 번 눌러 이전 명령을보고 Enter 키를 누르는 것과 같은 효과가 있습니다.

    !!

    또한 특정 수의 행을 다시 명령으로 참조 할 수도 있습니다. 예를 들어, !-2 두 번째에서 마지막으로 실행 한 명령을 실행합니다.. !! 같은 의미이다. !-1 .

    이 확장은 라인 어디에서나 작동합니다. 이전이나 이후에 원하는 것을 추가 할 수 있습니다. !! 또는이 섹션의 다른 표현식 중 하나를 선택하십시오. 예를 들어 다음 명령을 입력하여 마지막으로 실행 한 명령을 다시 실행할 수 있습니다 sudo, 루트 권한을 부여합니다. 추가하는 것을 잊었을 때 특히 유용합니다.  sudo 명령을 실행하기 전에.

    sudo !!

    또는 예를 들어, 이전 명령을 다시 실행하여 출력을 grep에 파이프하여 텍스트를 검색 할 수 있습니다.

    !! | grep 텍스트

    히스토리에서 명령을 검색하여 실행하려면 다음을 입력하십시오. 이렇게하면 지정한 텍스트와 일치하는 마지막 명령이 실행됩니다.

    !본문

    그래서, 당신이 최근에 시작한 명령을 실행했다면 , 다음 명령을 실행하여 검색 할 수 있습니다. 이렇게하면 기록을 거꾸로 검색하고 "파이", 즉시 실행 :

    !파이

    추가 할 수 있습니다. :피 위의 확장 중 하나에 bash는 명령을 실행하지 않고 터미널에 인쇄합니다. 이 명령은 올바른 명령을 실행하기 전에 선택하는지 확인하려는 경우에 유용합니다..

    !12 : p
    !!:피
    !텍스트 : p

    귀하의 역사에서 논점을 재사용하십시오

    Bash에서는 새로운 명령을 실행할 수 있지만 기록에서 이전 명령의 인수를 사용합니다. 이렇게하면 길거나 복잡한 인수를 다시 입력 할 필요없이 재사용 할 수 있습니다..

    명령! $

    예를 들어 명령을 실행했다고 가정 해 봅시다. / home / chris / some_long_file_name_you_dont_want_to_type_again을 터치합니다. . 이제 명령을 실행하려고합니다. 나노 / home / chris / some_long_file_name_you_dont_want_to_type_again. 전체 내용을 처음부터 입력하는 대신 다음을 실행할 수 있습니다.

    nano!

    그만큼 !$ bash는 이전 명령의 마지막 인수를 자동으로 채 웁니다..

    이것은 마지막 인수 만 채 웁니다. 그래서, 네가 달리면 핑 google.com -c 4 그 다음에 핑! , 이것은 단지 "핑 4".

    이 상황을 수정하려면 다음 트릭을 사용하여 마지막 인수가 아닌 행의 첫 번째 인수를 확장하십시오.

    명령! ^

    너가 도망 간다면 핑 google.com -c 4 그리고 나서 달렸다. 핑! ^ , bash는 이것을 "핑 google.com ".

    단일 인수 대신 이전 명령에서 사용 된 모든 인수를 채우려면 다음을 사용하십시오.

    명령! *

    너가 도망 간다면 핑! * 대신 bash는 이전 명령에서 사용한 모든 인수를 자동으로 채 웁니다.

    내역에서 명령을 실행하여 인수를 가져 오는 데 사용하는 것과 동일한 트릭을 사용할 수 있습니다. 다음 양식 만 사용하십시오..

    명령! abc : #

    예를 들어, 다음 명령을 실행했습니다. sudo hostname 우분투 일찍이. 다음 명령을 실행하면 bash는 히스토리를 역방향으로 검색하여 입력 한 문자로 시작하는 마지막 명령을 찾고 지정한 인수를 채 웁니다. 우리가 달리면 echo! su : 2 , bash는 다시 검색하여 "수호"그리고 두번째 인자를 채워라. 그것은"우분투".

    다른 트릭은 예상대로 작동합니다. 예를 들어, 숫자를 별표 (와일드 카드)로 바꾸면 bash가 명령의 모든 인수를 채 웁니다.

    명령! abc : *

    이전 명령을 다시 실행하고 수정하십시오.

    Bash를 사용하면 이전 명령을 다시 실행하고 변경해야 할 내용을 지정할 수 있습니다. 이것은 명령의 오타를 수정하는 데 유용 할 수 있습니다. 예를 들어 다음 명령은 이전 명령을 다시 실행하여 "알파벳"그 안에는"xyz".

    ^ abc ^ xyz

    예를 들어 실수로 핑 gogle.com, 너는 그 때 달릴 수 있었다 ^ gog ^ goog bash는 명령을 실행합니다. 핑 google.com 대신에.

    당신의 역사가 저장되어있는 곳과 그것을 지우는 방법

    bash 쉘은 기본적으로 ~ / .bash_history에 사용자 계정의 히스토리 파일에서 실행 한 명령 내역을 저장합니다. 예를 들어 사용자 이름이 bob이면이 파일은 /home/bob/.bash_history에 있습니다..

    기록은 파일에 저장되므로 세션간에 지속됩니다. 몇 가지 명령을 실행하고, 로그 아웃하고, 다음날 다시 돌아올 수 있으며, 명령은 내역 파일에 계속 표시되어 사용할 수 있습니다. 각 사용자 계정에는 별도의 명령 기록이있는 자체 기록 파일이 있습니다..

    bash 기록을 삭제하려면 다음 명령을 실행하십시오. 이렇게하면 사용자 계정의 .bash_history 파일 내용이 지워집니다.

    history -c

    Bash는 기본적으로 제한된 수의 명령 만 기억하므로 기록 파일이 너무 커지지 않습니다. bash가 기억하는 history 항목의 수는 과장된변하기 쉬운. 기본값은 보통 500 또는 1000 항목입니다. 다음 명령을 실행하여 시스템에서 bash 히스토리의 크기를 볼 수 있습니다.

    echo $ HISTSIZE

    내역을 0으로 설정하려면 다음 명령을 실행하십시오..

    HISTSIZE = 0

    현재 세션의 경우 bash는 다음과 같은 명령을 실행하지 않으면 히스토리 항목을 저장하지 않습니다. HISTSIZE = 1000 특정 수의 항목으로 다시 설정하려면.

    공백을 무시하고 중복하는 방법

    배쉬는 당신이 공간을 설정하면 공간으로 시작하는 히스토리 항목을 무시할 수 있습니다. HISTCONTROL~ 할 변수 ignorespace.

    HISTCONTROL = ignorespace

    bash 쉘에서 명령을 실행하기 전에 명령 앞에 공백을 입력하면 명령이 정상적으로 실행되지만이 변수가 사용 가능한 경우 히스토리에 나타나지 않습니다. 이렇게하면 내역을 조금 깔끔하게 유지할 수 있으며 내역에 명령을 표시하지 않고 명령을 실행하도록 선택할 수 있습니다..

    Bash는 또한 역사를 혼란스럽게 할 수있는 중복 명령을 무시할 수있게합니다. 그렇게하려면 다음을 설정하십시오. HISTCONTROL 무시하다.

    HISTCONTROL = 무시하다

    두 가지를 모두 사용하려면 ignorespace 무시하다 기능, 설정 HISTCONTROL ~ 할 변수 무시하다.

    HISTCONTROL = 무시

    설정 한 bash 변수는 현재 세션에서만 지속됩니다. 이 값을 사용자 계정의 .bashrc 파일에 추가하여 시작할 때마다 bash 세션에이 값을 자동으로 설정해야합니다..

    bash 쉘은 이보다 더 많은 옵션을 가진 복잡한 도구입니다. 공식 bash 매뉴얼의 Bash History Builtins 및 History Expansion 섹션을 참고하십시오. 더 자세한 정보 및 사용할 수있는 기타 고급 기법.