Bash에서 별칭에 대한 인수를 자동으로 인용하거나 group commandline 인수는 어떻게하나요?

StackOverflow https://stackoverflow.com/questions/290187

  •  08-07-2019
  •  | 
  •  

문제

명령을 내리고 원격 호스트에서 실행하는 스크립트가 있습니다. 예를 들어 잘 작동합니다.

$ rexec "ant build_all"

원격 시스템에서 "ant build_all"명령을 실행합니다 (SSH를 통과하는 등).

게으르기 때문에이 명령 (그리고 궁극적으로 다른 여러)에 대한 별칭을 설정하고 싶습니다. 예를 들어, 나는 그냥 호출 할 수 있습니다.

$ rant build_all

그리고 Bash는 자동으로 호출됩니다

$ rexec "ant build_all"

별명으로 이것을 시도했지만 정의하면

alias rant=rexec ant

그러면 "rant"로 전달 된 모든 주장은 다음과 같이 끝까지 추가됩니다.

$ rant build_all -Dtarget=Win32
(interpreted as:)
$ rexec "ant" build_all -Dtarget=Win32

Rexec은 실제로 하나의 주장을 수행하고 다른 주장을 무시하기 때문에 이것은 실패합니다.

나는 Bash 래퍼 스크립트로 이것을 할 수 있었지만 Bash가 나를 위해 이것을하기위한 내장, 아마도 이름이 지정된 alias 또는 perl-like quote string 명령 (예 : qw / / ) 또는 그와 같은.

도움이 되었습니까?

해결책

모든 논증에 대해서는 이것이 효과가 있습니다.

function rant () {
    rexec "ant $*"
}

통과하는 주장에 따라 인용문을 조정해야 할 수도 있습니다.

다른 팁

나는 Ken G의 답변을 사용하게되었지만 하나는 더 나은 : rex를 함수로 정의합니다.

function rex {
    run_remote.sh -c "$*"
}

그런 다음 다음과 같은 별칭에서 rexec을 사용할 수있었습니다.

alias rant="rex ant"

그리고 여전히 내가 필요한 방식으로 논쟁을 감싸도록하십시오.

나는 bash에서 그런 기능을 사용할 수 있다는 것을 잊었다. 이것은 래퍼 스크립트를 만들 필요없이 정확히 내가 필요로하는 것입니다.

좋은 팁, 감사합니다!

편집 : "rexec"가 "Rex"로 변경되었습니다. 내 시스템은 이미 "rexec"라는 프로그램이 있다는 것을 알았 기 때문입니다.

별명이 아닌 함수로 수행 할 수 있습니다.

function rant { rexec "ant $1"; }

별명처럼 명령 줄에서 호출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top