![Bash에서 ^foo^bar 조합은 무엇을 합니까? [복사]](https://linux55.com/image/123936/Bash%EC%97%90%EC%84%9C%20%5Efoo%5Ebar%20%EC%A1%B0%ED%95%A9%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9D%84%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
최근에 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