Bash에서 ^foo^bar 조합은 무엇을 합니까? [복사]

Bash에서 ^foo^bar 조합은 무엇을 합니까? [복사]

최근에 Bash에서 누군가가 처형되는 영상을 봤습니다 ^foo^bar. 이 조합의 용도는 무엇입니까?

답변1

배쉬가 그것을 부른다빠른 교체. Bash 매뉴얼 페이지의 "기록 확장" 섹션에 있는 "이벤트 표시기" 섹션(온라인 매뉴얼):

^string1^string2^

빠른 교체. 이전 명령을 반복하여 string1을 string2로 바꿉니다. 동등하다 !!:s/string1/string2/

따라서 ^foo^bar이전에 실행된 명령이 실행되지만 첫 번째 발생은 foo대체 됩니다 bar.

의 경우 s/old/new/bash 매뉴얼 페이지에 "최종 구분 기호가 이벤트 라인의 마지막 문자인 경우 선택 사항입니다"라고 나와 있습니다. 그렇기 때문에 를 사용할 수는 있지만 ^foo^bar꼭 그럴 필요는 없습니다 ^foo^bar^.

(바라보다이 답변다른 여러 지정자에 대해서는 언급하지 않았지만).

답변2

^foo^bar마지막 명령을 실행하여 첫 번째 인스턴스 foobar. 예를 들어:

$ ech "hello"
-bash: ech: command not found
$ ^ech^echo
echo "hello"
hello

관련 정보