명령을 실행한 다음 동일한 명령을 다시 실행하여 문자열 하나만 변경해야 합니다.
예를 들어 다음 명령을 실행합니다.
$ ./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code1 -t query
이제 거기에서 명령 기록으로 돌아가지 않고(위쪽 화살표를 통해) 또는 다른 문자열 code1
로 바꿔야 합니다 .mycode
Bash에서 할 수 있나요?
답변1
스크립트 이름을 바꾸었지만 다음과 같은 옵션이 있습니다.
$ ./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code1 -t query
스크립트를 실행한 후 다음을 사용하십시오.
$ ^code1^code2
...결과는 다음과 같습니다.
./myscript.sh xxx.xxx.xxx.xxx:8080/code -c code2 -t query
man bash
"이벤트 표시기"를 검색하십시오.
^문자열1^문자열2^
빠른 교체. 마지막 명령을 반복하여 string1을 string2로 바꿉니다. !!:s/string1/string2/와 동일
@slm의 답변에서 방금 배운 전역 대체를 추가하도록 편집되었습니다.https://unix.stackexchange.com/a/116626/117549:
$ !!:gs/string1/string2
이는 다음과 같이 말합니다.
!! - recall the last command
g - perform the substitution over the whole line
s/string1/string2 - replace string1 with string2
답변2
bash 내장 기능을 fc
사용하여 기록에서 명령을 찾고 선택적으로 편집/실행할 수 있습니다. help fc
추가 문서를 작성하려면 bash 내장 기능을 사용하세요 .
fc -s code1=code2
이전 명령에서 발생한 code1을 모두 찾아 code2로 변경한 다음 새 명령을 실행합니다.
여러 개의 특수 문자를 변경해야 할 때 유용합니다. 이전 명령이 다음과 같다고 가정합니다.
$ java a/b/c/d
# Then,
fc -s /=.
# will produce
$ java a.b.c.d