![bash 명령에서 매개변수를 "구멍"으로 만든 다음 마지막에 "채우는" 방법이 있습니까? 예를 들어 "cp [hole] dir < [arg]"이므로 arg가 끝에 나타납니까?](https://linux55.com/image/212135/bash%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%22%EA%B5%AC%EB%A9%8D%22%EC%9C%BC%EB%A1%9C%20%EB%A7%8C%EB%93%A0%20%EB%8B%A4%EC%9D%8C%20%EB%A7%88%EC%A7%80%EB%A7%89%EC%97%90%20%22%EC%B1%84%EC%9A%B0%EB%8A%94%22%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%EC%98%88%EB%A5%BC%20%EB%93%A4%EC%96%B4%20%22cp%20%5Bhole%5D%20dir%20%26lt%3B%20%5Barg%5D%22%EC%9D%B4%EB%AF%80%EB%A1%9C%20arg%EA%B0%80%20%EB%81%9D%EC%97%90%20%EB%82%98%ED%83%80%EB%82%A9%EB%8B%88%EA%B9%8C%3F.png)
위의 내용이 맞는지 잘 모르겠지만 쉘 사용에서 자주 발견되는 패턴은 다음과 같습니다.
상당히 길 수 있는 명령이 있는데, 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