묻다: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
실제 경로로 변경합니다 .