첫 번째 매개변수와 모든 후속 매개변수를 개별적으로 파이프하는 합리적인 방법은 무엇입니까?

첫 번째 매개변수와 모든 후속 매개변수를 개별적으로 파이프하는 합리적인 방법은 무엇입니까?

질문

--편의를 위해 별칭을 지정한 명령이 있는데, 명령을 호출한 후 몇 가지 추가 매개 변수를 지정하는 데 귀찮게 사용해야 합니다.

다음 예에서는 명령이 호출 foo되고 별칭이 호출됩니다 run.

alias run=foo --bar --baz 

barbaz항상 존재하는 매개변수이므로 별명에 있습니다. 이제 최소한 필요한 명령을 호출하고 싶습니다.필수 매개변수그 다음에는 실행 옵션 ender 에 대한 추가 매개변수가 옵니다 --.

구체적으로 호출할 때 run다음과 같이 호출합니다.

run file1 -- option1 option2

이는 작동하며 옵션 1과 2가 예상대로 통과됩니다.

내가 원하는 것

내가 원하는 것은 별칭이 있고 다음 명령을 실행하고 run file1 option1 option2별칭 핸들이 인수 --앞이나 뒤에(별칭에서) 위치를 지정하도록 하는 것입니다.

잠재적인 답변

내가 여기서 고민하고 있는 것은 관련되지 않은 해결책을 찾는 것입니다.또한많은 논리. 이상적으로는 인수1에 액세스한 다음 인수1+에 액세스하는 것과 같은 것을 원 xargs하지만 그것이 목적은 아닌 것 같습니다. 나도 할 수 있는 일이 몇 가지 있습니다 cut(둘 다 cut -d' ' -p1작동 cut -d' ' -f2-하지만 이 문자열 자르기가 최선의 해결책이 아닐 수도 있습니다).

나는 여기서 우아한 해결책에 귀를 기울이고 있습니다.

답변1

IMHO 별칭 대신 쉘 함수를 사용하는 것이 더 똑똑할 것입니다.

run() { 
  file="$1"
  shift
  foo --bar --baz "$file" -- "$@"
}

관련 정보