매개변수가 있는 명령에 대한 별칭을 만들 수 있나요?

매개변수가 있는 명령에 대한 별칭을 만들 수 있나요?

다음 개체에 대한 별칭을 만들고 싶습니다.

  • rm -rf *=>#rm -rf *
  • rm *=>#rm *

을 입력할 때 rm -rf *주석 처리하고 아무런 조치도 취하지 않기를 원합니다.

[Q] 일반적인 질문은 매개변수가 있는 명령에 대한 별칭을 생성할 수 있느냐는 것입니다.

답변1

공백이 포함된 별칭은 만들 수 없습니다. 즉, 다음과 같은 내용은 유효하지 않습니다.

alias 'rm -rf *'='#rm -rf *'

그러나 물론 매개변수를 사용하여 명령에 대한 별칭을 만들 수 있습니다.

alias foo='#rm -rf *'

#귀하의 질문에 있는 예에서는 각각에 별칭을 갖고 싶은 것처럼 보이지만 rm이렇게 하려면 별칭만 있으면 됩니다 rm.

alias rm='#rm'

rm에 대해 "비활성화"하려면 -rf래퍼 함수를 ​​작성해야 합니다.

rm() {
    if [ "$1" != "-rf" ]; then
        rm $@
    fi
}

비활성화만 rm -rf *하고 포함되지 않은 다른 항목은 그대로 유지할 수 있나요 rm -rf?*

그래 넌 할수있어. 예를 들어:

rm() {
    if [ "$1" != "-rf" ]; then
        rm $@
    else
        shift 1
        x="$@"
        if [ "$x" != "$(echo *)" ]; then
            rm -rf $@
        fi
    fi
}

관련 정보