bash 기록에서 명령을 선택하십시오.


20

위로 버튼을 누르는 것은 지루하며 내가 찾던 명령을 놓칠 수 있습니다. history터미널에 입력하면 이전에 입력 한 모든 명령이 숫자로 색인됩니다. 명령과 관련된 번호로 전화 할 수있는 방법이 있습니까?


더 이상 대화식 옵션이 있습니까? 이들은 오류가 발생하기 쉽습니다
matt

답변:


31

배쉬 역사는 많은 도움이 될 수 있으며 Strg-rTerry Wang이 언급 한 검색 은 그중 중요한 것입니다. 그러나 요청한 내용을 정확하게 수행 할 수도 있습니다.

로 이전 명령을 다시 실행할 수 있습니다 !!. 이를 통해 이전 명령을 편집 할 수도 있습니다. 예를 들어 명령에 대한 루트 권한을 얻지 못한 경우

apt-get install a-long-list-of-packages

다시 입력하지 않아도됩니다. 대신 전화

sudo !!

히스토리의 특정 위치에서 명령을 다시 실행하려면 !예를 들어

!3

위치 3에서 명령을 다시 실행하려면이 값이 맨 위에서 계산됩니다. 따라서 기록에 500 개의 명령을 저장하는 경우 !1"500 명령 전"이됩니다. 음수를 사용할 수도 있습니다. 예를 들어

!-2

두 번째 마지막 명령을 다시 실행합니다.

다음과 같은 문자열로 시작한 마지막 명령을 다시 실행할 수도 있습니다.

!apt-

"apt-"로 시작한 마지막 줄을 다시 실행할 것입니다. 줄 어디에서나 문자열이 나타난 마지막 명령을 원하면 다음과 같은 것을 사용할 수 있습니다

!?pt-ge

배쉬 역사가 할 수있는 더 흥미로운 것들이 있습니다. 광범위한 가능성에 대한 인상을주기 위해 히스토리에서 명령의 매개 변수에 구체적으로 액세스 할 수 있습니다. 그래서

!-5:3:p

세 번째 매개 변수를 마지막 명령에서 다섯 번째 매개 변수로 인쇄합니다.

편집 : 아래 Rudie의 의견과 관련하여 표준 설정 으로이 bash 기록 확장은 실제로 직접 실행됩니다. 그것은 아마도 최고의 다음과 같이 설명 것 : 같은 호출 !-3되어 대체 세 번째 마지막 기록에서 명령으로 쉘에 의해 다음 실행 (교체 포함) 귀하의 의견. 따라서 입력 !-3하고을 누르고 ENTER세 번째 마지막 명령이 ls ~이면 ls ~다시 입력 하고 ENTER"직접" 누르는 것과 동일 합니다.

원하지 않으면 쉘 옵션을 설정할 수 있습니다 histverify. 쉘 옵션을 설정 및 설정 해제하려면 shopt명령 을 읽으십시오 . 로 histverify설정, 같은 전화 !-3에만이 명령 줄로 역사에서 교체를 기록하지만 직접 실행하지 않습니다. 당신은 훔쳐보기 위해 중요한 것을 ENTER스스로 누르 거나 원하는 경우 자제하십시오.


너무 !위험합니다 ... 나는 그것을 !-4실행하기 전에 정확히 무엇을 알고 싶습니다 . 아니면 먼저 보여 주나요? 멋진 요약!
Rudie

1
@Rudie 좋은 지적입니다. 나는 대답을 업데이트했습니다. 히스토리 기능은 주로 작업 속도를 높이고 키 입력을 줄입니다. 표준은 "정말로 그 말을합니까?" 그 목적을 적어도 부분적으로 이길 것입니다. 그리고 비록 당신이 할 수 있지만, 일반적으로 당신은 "far back"명령을 호출하지 않습니다 !-238. 두 번째, 세 번째, 마지막, 아마도 마지막 명령을 기억하는 것이 너무 어렵지 않아야합니다. 추가 안전망을 원한다면 shopt멀리 떨어져 있습니다.)
Henning Kockerbeck

16

그렇습니다. 예를 들어, 번호가 1234 인 명령을 실행하려면 다음을 수행하십시오.

!1234

다른 유용한 것들 :

  • 마지막으로 실행 한 명령을 실행하려면 다음을 수행하십시오.

    !!
  • 마지막으로 실행 한 ls명령 을 실행하려면 다음을 수행하십시오 .

    !ls
  • 방금 실행했는데 ls /some/long/path원하는 경우 다음을 cd수행하십시오.

    cd !$

자세한 내용은:



3

명령의 히스토리 번호를 찾아서 다시 실행하려면 !다음에 번호를 입력하십시오 ( 예 !1234:) Enter. 이것은 역사 확장의 일부입니다 . 수정자를 붙일 수 있습니다 .

명령을 실행하기 전에 편집하려면 fc 1234외부 편집기를 호출하십시오.

그러나 Terry Wang이 이미 언급했듯이 증분 검색을 호출 하거나 (실행하려는 명령을 찾았을 때 누르기 ) 또는 이전 명령을 실행하는 Ctrl+ R를 포함하여 기록 번호를 결정하는 것보다 일반적으로 기록에서 명령을 찾는 방법이 더 빠릅니다. 로 시작하는 명령 .Enterfc PREFIXPREFIX


1

history명령은 모든 명령과 관련 번호를 표시합니다. 명령 행 # 135를 실행하기 전에 빠른 검사를 수행하려면 다음을 입력하십시오.

echo !135

이것은 실행될 것을 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.