최근에 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
마지막 명령을 실행하여 첫 번째 인스턴스 foo
를 bar
. 예를 들어:
$ ech "hello"
-bash: ech: command not found
$ ^ech^echo
echo "hello"
hello