:&
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로 바꿉니다"를 의미합니다.