히스토리 확장을 이용한 속기 빠른 교체에 문제가 있나요?

히스토리 확장을 이용한 속기 빠른 교체에 문제가 있나요?

내 터미널(bash 3)에서는 때때로 빠른 교체를 사용합니다.

^aa^bb^

^string1^string2^

         Quick substitution.  Repeat the last command, replacing string1 with string2.  Equivalent to `!!:s/string1/string2/` (see Modifiers below).

예를 들어

$ echo aa aa
aa aa
$ ^aa^bb^
echo bb aa
bb aa

이는 어떤 상황에서는 정말 편리할 수 있습니다.

그러나 마지막 것을 생략해도 ^효과가 있다는 것을 알았습니다.

$ echo aa aa
aa aa
$ ^aa^bb
echo bb aa
bb aa

내 질문은: 마지막 문장을 생략하면 어떤 결과가 발생합니까 ^? 안전하게 놔둬도 될까요? 아니면 예방조치가 있나요?

답변1

이벤트 라인의 마지막 문자인 경우 생략 가능합니다.

먼저, 다음의 ^string1^string2^의미를 확인합니다 man bash.

^string1^string2^
              Quick  substitution.   Repeat   the   previous   command,   
              replacing   string1   with   string2.    Equivalent   to
              ``!!:s/string1/string2/'' (see Modifiers below).

따라서 이는 와 동일합니다 s/string1/string2/. s수정자에 대한 문서를 읽어보세요.

s/old/new/
          Substitute new for the first occurrence of old in the event line.  
          Any delimiter can be used in  place  of  /. The final  delimiter  
          is optional if it is the last character of the event line. The 
          delimiter may be quoted in old and new with a single backslash.  
          If & appears in new, it is replaced by old.  A single backslash 
          will quote the &. If old  is  null,  it is set to the last old 
          substituted, or, if no previous history substitutions took place, 
          the last string in a !?string[?]  search.

관련 정보