특정 매개변수를 사용하여 실행되는 명령 실행을 다른 매개변수가 아닌 다른 명령으로 전환하는 방법은 무엇입니까?

특정 매개변수를 사용하여 실행되는 명령 실행을 다른 매개변수가 아닌 다른 명령으로 전환하는 방법은 무엇입니까?

묻다:Linux 시스템에서 시스템 명령과 해당 매개변수를 바꾸는 방법은 무엇입니까?

시나리오: 시스템에 매개변수가 포함된 명령이 있습니다.

예:

$ command -a restart
Output: something

나는 그 실행을 대체하고 싶다특정한해당 명령을 사용하세요특정한매개변수(예 command -a reload && echo hi: . 이렇게 하면 명령이 재부팅을 수행하지 않고 다시 로드를 수행합니다.

노트:

  • 다른 매개변수가 방해되어서는 안 됩니다. command -a else로 실행되어야 합니다 command -a else.
  • 이 명령은 루트 사용자에 대해서만 실행됩니다.
  • 패키지 업데이트가 명령 파일을 대체하기 때문에 명령 파일 자체를 바꿀 수 없습니다.

가능합니까?

답변1

.bashrc또는 파일 에 다음을 추가하십시오 .bash_aliases.

my_command_(){
    if [ "$1 $2" = "-a restart" ] ; then
        shift 2
        my_command -a reload "$@"
    else
        my_command "$@"
    fi
}
alias my_command="my_command_"

이것도 바뀔 거야

my_command -a restart -b something
도착하다
my_command -a reload -b something.

그러나 그것은 변하지 않을 것입니다 my_command -b something -a restart.


시스템 전반에 걸친 대안:

$PATH명령이 있는 디렉토리 이전의 다른 디렉토리에 스크립트를 작성하고 /usr/local/bin/my_command다음 내용을 사용하여 실행 가능하게 만듭니다(예: ).

#!/bin/sh
if [ "$1 $2" = "-a restart" ] ; then
    shift 2
    /usr/bin/my_command -a reload "$@"
else
    /usr/bin/my_command "$@"
fi

/usr/bin/my_command실제 경로로 변경합니다 .

관련 정보