Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Bash 기록 명령을 사용하는 방법

Bash는 풍부한 역사를 가지고 있습니다. 즉, 더 오래된 조상(Bourne 셸)이 있는 오래된 셸이지만 history도 훌륭합니다. 기능의 수에 따라 다른 모든 셸 기록 인터페이스를 능가하는 명령입니다. history의 Bash 버전 역 검색, 빠른 회수, 기록 다시 쓰기 등을 허용합니다.

history 명령은 다른 많은 명령과 다릅니다. /usr/bin과 같은 일반적인 시스템 수준 위치에 배치된 실행 파일인 명령에 익숙할 수 있습니다. , /usr/local/bin , 또는 ~/bin . 기본 제공 history 명령이 PATH에 없습니다. 물리적 위치가 없음:

$ which history

which:[PATH]에 기록 없음

대신 history 쉘 자체의 내장 함수입니다.

$ type history
history는 쉘 내장
$ help history
history:history [-c] [-d offset] [n] 또는
history -anrw [ 파일 이름] 또는
history -ps arg [arg...]

기록 목록을 표시하거나 조작합니다.
[...]

그렇기 때문에 각 셸의 히스토리 기능은 고유하므로 Bash에서 사용하는 것이 Tcsh 또는 Fish 또는 Dash에서 작동하지 않을 수 있으며, 이들에서 사용하는 것이 Bash에서 작동하지 않을 수 있습니다. 어떤 경우에는 Bash가 무엇을 할 수 있는지 알면 다른 셸 사용자가 Bash 동작을 복제하는 흥미로운 핵을 만들도록 영감을 줄 수 있으며 존재하지 않는 Bash 기능을 잠금 해제할 수 있습니다.

Bash 기록 보기

history의 가장 기본적이고 빈번한 사용 명령은 쉘 세션의 기록을 보는 것입니다:

$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world "
  3  이력

이벤트 지정자

이벤트 지정자는 이벤트별로 기록을 검색합니다. 이벤트 이 컨텍스트에서 히스토리에 기록된 명령은 개행 문자로 구분됩니다. 즉, 참조용 색인 번호로 표시된 한 줄입니다.

이벤트 지정자는 대부분 느낌표로 시작하며 때로는 이라고도 합니다. (! ).

기록에서 명령을 다시 실행하려면 느낌표를 사용하고 바로 뒤에 원하는 명령의 색인 번호를 붙입니다(공백 없음). 예를 들어 1행에 echo "hello" 명령이 포함되어 있다고 가정합니다. , 그리고 다시 실행하려는 경우:

$ !1
"안녕하세요" 에코
안녕하세요

기록의 현재 위치에서 음수 행을 제공하여 상대 위치 지정을 사용할 수 있습니다. 예를 들어, 기록에서 세 항목으로 돌아가려면:

$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
에코 "foo"
foo

한 줄만 뒤로 이동하는 경우 약어 !!를 사용할 수 있습니다. !-1 대신 . 한 번의 전체 키 입력을 절약할 수 있습니다!

$ echo "foo"
$ !!
echo "foo"
foo

실행할 명령에 대해 반대로 항목을 통해 특정 문자열을 검색할 수도 있습니다. 시작 명령을 검색하려면 특정 문자열과 함께 검색하려는 문자열 바로 뒤에 느낌표를 사용합니다(공백 없음).

$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo

시작 위치뿐만 아니라 모든 위치에서 문자열을 포함하는 명령을 검색할 수도 있습니다. 그렇게 하려면 !를 사용하세요. 평소와 같이 검색하는 문자열과 문자열을 양쪽 끝에 물음표로 묶습니다. 문자열 바로 뒤에 줄 바꿈 문자가 온다는 것을 알고 있는 경우 후행 물음표를 생략할 수 있습니다(즉, Return을 누르기 전에 마지막으로 입력한 것입니다. ):

$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo

문자열 대체

줄 시작 부분에서 문자열을 검색하는 것과 유사하게 다음 명령을 변경하여 문자열을 검색하고 새 문자열로 바꿀 수 있습니다.

$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo

기록을 유용하게 만들기

Bash에서 history 명령은 여기에서 다룬 것보다 훨씬 더 많은 것을 할 수 있지만 사용에 익숙해지기 위한 좋은 시작입니다. 단지 참조로 취급하는 대신에 당신의 역사. history 사용 명령을 자주 사용하고 명령을 입력하지 않고도 얼마나 많은 작업을 수행할 수 있는지 확인하십시오. 스스로를 놀라게 할 수도 있습니다!