Linux 또는 macOS 터미널에서 Bash 기록을 사용하는 방법

0
361

bash 쉘은 대부분의 Linux 배포판에 포함되어 있고 macOS에 포함되어 있으며 Windows 10에 설치할 수있는 표준 터미널 환경입니다.이 명령은 입력 한 명령을 기억하여 기록 파일에 저장합니다. bash 기록의 몇 가지 기본 사항을 알고 있을지 모르지만 생각보다 훨씬 강력합니다.

키보드 단축키

관련 : Bash를위한 최고의 키보드 단축키 (일명 Linux 및 macOS 터미널)

bash 기록을 스크롤하려면 bash의 많은 유용한 키보드 단축키를 사용할 수 있습니다. 이 단축키를 누르면 이전에 사용한 명령이 프롬프트에 나타납니다.

  • 위쪽 화살표 또는 Ctrl + P: 역사에서 이전 명령으로 이동하십시오. 사용한 명령을 거꾸로 보려면 키를 여러 번 누르십시오.
  • 아래쪽 화살표 또는 Ctrl + N: 당신의 역사에서 다음 명령으로 이동하십시오. 사용했던 명령을 진행하려면 키를 여러 번 누르십시오.
  • Alt + R: 현재 행에서 편집 한 내역에서 가져온 명령의 변경 사항을 되돌립니다.

Bash에는 또한 이전에 실행 한 명령을 하나씩 스크롤하지 않고 검색하는 데 사용할 수있는 특수한 “호출”모드가 있습니다.

  • Ctrl + R: 입력 한 문자와 일치하는 마지막 명령을 상기하십시오. 이 단축키를 누르고 입력을 시작하여 bash 기록에서 명령을 검색하십시오.
  • Ctrl + O: Ctrl + R로 찾은 명령을 실행하십시오.
  • Ctrl + G: 명령을 실행하지 않고 기록 검색 모드를 종료합니다.

배쉬 기록보기

단일 명령을 실행하여 전체 bash 기록을 화면에 인쇄 할 수 있습니다.

history

bash 기록의 모든 명령 목록과 각 왼쪽에 숫자가 표시됩니다. 그 옆에“1”이있는 명령은 bash 기록에서 가장 오래된 명령이고 가장 높은 숫자가있는 명령이 가장 최신 명령입니다.

관련 : 이 8 가지 트릭으로 Linux 터미널 파워 유저가 되십시오

출력으로 원하는 작업을 수행 할 수 있습니다. 예를 들어, 파이프를 grep명령 내역을 검색합니다.

history | grep your_search

파이프를 파이프에 연결할 수도 있습니다 tail 최근에 실행 한 일부 명령 만 볼 수 있습니다. 예를 들어, 다음 명령은 내역의 마지막 5 개 항목을 표시합니다.

history | tail -5

당신의 역사에서 명령을 실행

Bash는 이전 명령을 신속하게 “확장”하거나 확장하여 수정할 수 있습니다. 이 기능은 “히스토리 확장”이라고하며 느낌표 ( “뱅”)를 사용합니다. 프롬프트에 입력하고 Enter를 눌러 다른 명령을 실행하는 것처럼 실행하십시오.

기록에서 특정 명령을 번호별로 실행하려면 다음 명령을 사용하십시오.

!#

예를 들어 bash 기록에서 12 번째 명령을 실행하려고한다고 가정 해 봅시다. 이 명령을 실행할 때 왼쪽에 “12”가있는 명령입니다 history 명령. 다음 명령을 입력하십시오.

!12

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

!!

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

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

sudo !!

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

!! | grep text

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

!text

따라서 최근에 시작한 명령을 실행하면 ping다음 명령을 실행하여 검색 할 수 있습니다. 그러면 기록을 거꾸로 검색하고 “pi“, 즉시 실행하십시오.

!pi

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

!12:p
!!:p
!text:p

당신의 역사에서 인수를 재사용

Bash를 사용하면 새 명령을 실행할 수 있지만 히스토리에서 이전 명령의 인수를 사용할 수 있습니다. 이렇게하면 길거나 복잡한 인수를 다시 입력하지 않고도 빠르게 재사용 할 수 있습니다.

command !$

예를 들어 명령을 실행했다고 가정 해 보겠습니다. touch /home/chris/some_long_file_name_you_dont_want_to_type_again . 이제 명령을 실행하고 싶습니다 nano /home/chris/some_long_file_name_you_dont_want_to_type_again. 처음부터 전체를 입력하는 대신 다음을 실행할 수 있습니다.

nano !$

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

이것은 마지막 인수 만 채 웁니다. 그래서, 당신이 실행하면 ping google.com -c 4 그런 다음 실행 ping !$ , 이것은 “ping 4“.

이 상황을 해결하기 위해 다음 트릭을 사용하여 마지막 인수가 아닌 행의 첫 번째 인수를 확장 할 수 있습니다.

command !^

그래서, 당신이 달렸다면 ping google.com -c 4 그리고 달렸다 ping !^ bash는 이것을 “ping google.com".

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

command !*

그래서, 당신이 달렸다면 ping !* 대신 bash는 이전 명령에서 사용한 모든 인수를 자동으로 채 웁니다.

당신은 당신의 역사에서 명령을 실행하기 위해 사용하는 것과 같은 트릭을 사용하여 그들로부터 인수를 얻을 수 있습니다. 다음 양식을 사용하십시오.

command !abc:#

예를 들어, 우리는 명령을 실행 sudo hostname ubuntu 일찍이. 다음 명령을 실행하면 bash는 기록을 거꾸로 검색하여 입력 한 문자로 시작하고 지정한 인수를 채우는 마지막 명령을 찾습니다. 우리가 달리면 echo !su:2 bash는 “로 시작하는 마지막 명령을 찾기 위해 다시 검색합니다.su”을 입력하고 두 번째 인수를 채우십시오.ubuntu“.

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

command !abc:*

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

Bash를 사용하면 이전 명령을 다시 실행하고 변경해야 할 것을 지정할 수 있습니다. 명령의 오타를 수정하는 데 유용 할 수 있습니다. 예를 들어 다음 명령은 이전 명령을 다시 실행하여 “abc”텍스트와 함께xyz“.

^abc^xyz

예를 들어 실수로 ping gogle.com, 그럼 당신은 실행할 수 있습니다 ^gog^goog bash는 명령을 실행합니다 ping google.com 대신에.

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

bash 셸은 기본적으로 ~ / .bash_history의 사용자 계정 기록 파일에서 실행 한 명령 기록을 저장합니다. 예를 들어 사용자 이름이 bob 인 경우이 파일은 /home/bob/.bash_history에 있습니다.

기록은 파일에 저장되므로 세션간에 유지됩니다. 일부 명령을 실행하고 로그 아웃 한 후 다음날 다시 올 수 있으며 해당 명령은 여전히 ​​사용 내역 파일에 표시되어 사용할 수 있습니다. 각 사용자 계정에는 별도의 명령 기록이있는 자체 기록 파일이 있습니다.

bash 기록을 지우려면 다음 명령을 실행하십시오. 이것은 사용자 계정의 .bash_history 파일의 내용을 지 웁니다.

history -c

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

echo $HISTSIZE

히스토리를 0으로 설정하려면 다음 명령을 실행하십시오.

HISTSIZE=0

현재 세션에서 bash는 다음과 같은 명령을 실행하지 않으면 모든 기록 항목을 저장하지 않습니다. HISTSIZE=1000 특정 항목 수로 다시 설정합니다.

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

Bash를 사용하면 공백으로 시작하는 기록 항목을 무시할 수 있습니다. HISTCONTROL변수 ignorespace.

HISTCONTROL=ignorespace

bash 셸에서 명령을 실행하기 전에 명령 앞에 공백을 입력하면 명령이 정상적으로 실행되지만이 변수를 활성화하면 기록에 나타나지 않습니다. 이를 통해 기록을 조금 더 깔끔하게 유지하고 기록에 명령을 표시하지 않고 명령을 실행하도록 선택할 수 있습니다.

Bash를 사용하면 기록을 어지럽히는 중복 명령을 무시할 수도 있습니다. 그렇게하려면 HISTCONTROL ignoredups.

HISTCONTROL=ignoredups

두 가지를 모두 사용하려면 ignorespace ignoredups 기능, 설정 HISTCONTROL 변수 ignoreboth.

HISTCONTROL=ignoreboth

설정 한 bash 변수는 현재 세션에 대해서만 유지됩니다. 원하는 경우 시작하는 모든 bash 세션에서이 값을 자동으로 설정하려면 사용자 계정의 .bashrc 파일에이 값을 추가해야합니다.

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