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 섹션에서 더 자세한 정보와 사용할 수있는 기타 고급 트릭을 참조하십시오.