모든 일치 항목을 교체하는 bash 기록 확장 반복

모든 일치 항목을 교체하는 bash 기록 확장 반복

:&bash 기록 확장 교체를 반복합니다. 예를 들어:

$ echo 1 1 1 1 1
1 1 1 1 1
$ ^1^9
echo 9 1 1 1 1
9 1 1 1 1
$ echo 1 1 1 1 1
1 1 1 1 1
$ ^1^9^:&
echo 9 9 1 1 1
9 9 1 1 1
$ echo 1 1 1 1 1
1 1 1 1 1
$ ^1^9^:&:&:&:&
echo 9 9 9 9 9
9 9 9 9 9
$ 

:&위에 표시된 것처럼 각 반복에는 입력이 필요합니다. 모든 일치 항목을 자동으로 반복적으로 바꾸는 방법이 있습니까? 내 말은:

$ echo 1 1 1 1 1
1 1 1 1 1
$ ^1^9^:*
echo 9 9 9 9 9
9 9 9 9 9
$ 

답변1

당신은 그것을 사용할 수 있습니다이벤트 표시기대신에:

$ echo 1 1 1 1 1
1 1 1 1 1
$ !!:gs/1/9/
echo 9 9 9 9 9
9 9 9 9 9

!!단어 표시기이전 명령 실행으로 확장됩니다. s그리고 g수정자:

선택적 단어 표시자 뒤에 각각 ":"이 앞에 오는 다음 수정자 중 하나 이상을 추가할 수 있습니다.

오래된/새로운/

이벤트 라인에서 처음 나타나는 이전 항목을 새 항목으로 바꿉니다. [...]

g/년

전체 이벤트 라인에 변경 사항이 적용됩니다. 에서와 같이 's'와 함께 사용되거나 gs/old/new/'&'와 함께 사용됩니다.

즉, !!:gs/1/9/"이전 명령을 실행하고 1을 모두 9로 바꿉니다"를 의미합니다.

관련 정보