무슨 이유에서인지 내 손가락 기억력이 mv
로 바뀌었습니다. rm
이 손가락을 재훈련할 때까지 어떻게 rm
힌트를 얻을 수 있겠습니까?여러 위치를 제공하는 경우(그 중 하나는 존재하지 않을 수 있습니다)?
-I
이 옵션은 3개 이상의 파일에 대해 메시지를 표시하고 각 파일에 대해 메시지를 표시한다는 것을 알고 있지만 -i
여러 파일에 대해 메시지를 표시하는 것과 유사한 것이 필요합니다.
답변1
rm
Bash에서 함수를 정의하고 인수 수를 확인하십시오. 인수가 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) "$@"
}