bash 명령에서 매개변수를 "구멍"으로 만든 다음 마지막에 "채우는" 방법이 있습니까? 예를 들어 "cp [hole] dir < [arg]"이므로 arg가 끝에 나타납니까?

bash 명령에서 매개변수를 "구멍"으로 만든 다음 마지막에 "채우는" 방법이 있습니까? 예를 들어 "cp [hole] dir < [arg]"이므로 arg가 끝에 나타납니까?

위의 내용이 맞는지 잘 모르겠지만 쉘 사용에서 자주 발견되는 패턴은 다음과 같습니다.

상당히 길 수 있는 명령이 있는데, CLI 설계상 필수 명령이 있습니다. 이 명령을 여러 번 실행해야 하며 종종 특정 매개변수를 변경해야 합니다. 물론 모든 인수를 미리 알고 있다면 xargs 등을 사용할 수 있지만 때로는 그렇지 않은 경우도 있습니다. 그래서 다음과 같은 명령이 있을 수도 있습니다.

cli -flag -flag X arg arg arg arg

다시 X로 돌아가야 하기 때문에 다시 실행하는 것이 귀찮습니다. 따라서 어떤 방식으로든 다음을 수행하는 것이 좋습니다.

cli -flag -flag HOLE arg arg arg < X

이렇게 하면 매개변수를 변경하려는 경우 X를 쉽게 누르고 바꿀 수 있습니다.

가능합니까?

답변1

모든 매개변수를 미리 알고 있다면 xargs 등을 사용할 수 있지만 때로는 그렇지 않을 때도 있습니다.

당신이 모든 주장을 알고 있다면와는 별개로기능으로 변경되었습니다.

myfunc () { cli -flag -flag "$1" arg arg arg arg ; }

그런 다음 매개변수를 변경하여 함수가 호출됩니다.

아니면 당신은 사용할 수 있습니다역사적 확장:

$ cli -flag -flag X arg arg arg arg    # Run the first time
$ ^X^Y            # will replace the first occurrence of X anywhere in the previous command with Y and run it
$ ^Y^Y2           # now replace Y with Y2 in the command that resulted from the above

my-command asterisk period comma colon히스토리 확장은 차별하지 않습니다. 이미 가지고 있고 실행하려는 경우에는 사용할 수 없습니다 my-command asterisk period apostrophe colon. 이 경우 함수를 사용하는 것이 더 나을 것입니다 ^comma^apostrophe.my-apostrophend asterisk period comma colon

관련 정보