여러 파일이 제공되면 "rm" 프롬프트가 표시됩니다.

여러 파일이 제공되면 "rm" 프롬프트가 표시됩니다.

무슨 이유에서인지 내 손가락 기억력이 mv로 바뀌었습니다. rm이 손가락을 재훈련할 때까지 어떻게 rm힌트를 얻을 수 있겠습니까?여러 위치를 제공하는 경우(그 중 하나는 존재하지 않을 수 있습니다)?

-I이 옵션은 3개 이상의 파일에 대해 메시지를 표시하고 각 파일에 대해 메시지를 표시한다는 것을 알고 있지만 -i여러 파일에 대해 메시지를 표시하는 것과 유사한 것이 필요합니다.

답변1

rmBash에서 함수를 정의하고 인수 수를 확인하십시오. 인수가 1개뿐인 경우 command rm원래 명령을 호출하기 위해 실행됩니다. 그렇지 않으면 경고를 인쇄합니다.

그것은 다음과 같습니다:

function rm()
{
    if (( $# > 1 )); then
        read -r -p "sure? [y/n] " response
        case $response in
            [yY])
                command rm "$@"
                ;;
            *)
                echo "ignored"
                ;;
        esac
    else
        command rm "$@"
    fi
}

내 기능에서 개선이 필요한 한 가지는 먼저 모든 매개변수를 스캔하고 매개변수가 다음으로 시작하는 경우 -해당 매개변수를 옵션으로 처리하는 것입니다. 따라서 함수는 rm다음과 같은 입력을 처리할 수 있습니다 rm -f 1.txt.

답변2

ZFS자주 백업하고, 파일 시스템이 또는 인 경우 스냅샷(타임머신과 같은 것)을 사용하고, btrfs올바른 명령을 사용하도록 손가락을 훈련시키십시오. 그러나 rm동작과 의미를 변경하지 않는 것이 좋습니다.

조만간 이것은 불쾌한 역효과를 낳을 것입니다 alias rm="rm -i"...

귀하의 경우, 제가 권장하는 것은 비활성화하고 rm대화형 셸을 실행할 때 원래 작업을 수행하는 사용자 정의로 교체하는 것입니다. rm예를 들어 다음 줄을.bashrc

rm() {
    echo "rm disabled, use myRM instead"
}
alias myRM="command rm"

새로운 기능을 rm사용하면 입력 오류를 더욱 효과적으로 제거할 수 있으며 곧 입력을 중단할 수도 있습니다 rm.

이 조언이 비생산적인 것처럼 보일 수도 있지만, 내가 권장하는 이유는 위험한 Unix 명령에 대해 비표준이지만 여전히 유효한 동작에 익숙해지는 데 위험이 없기 때문입니다. 조만간 귀하는 해킹당하지 않고 자신의 계정 및/또는 다른 시스템에 로그인하고 파일을 저장하라는 보안 프롬프트 없이 파일을 삭제하게 될 것입니다.

반면, myRM입력하여 파일을 삭제하는 데 익숙하다면 외부 시스템에서 이 작업을 수행해도 아무런 해가 없습니다.

마지막으로, 여전히 명령을 오버로드하려는 경우 rm깔끔한 방법은 다음과 같습니다.

rm() {
  echo command rm $([ ${#} -gt 1 ] && echo \-i) "$@"
}

관련 정보