"rm" 및 "rm -i" 스크립트 작성

"rm" 및 "rm -i" 스크립트 작성

세 개 이상의 파일이 삭제될 때마다 기본적으로 호출되는 스크립트를 만들고 싶습니다 rm -i. 초기화 파일에 들어가는 것을 알고 있지만 제대로 작동하지 않는 것 같습니다.

지금까지:

if [$file -ge 3]; then
  rm -i 
  exit 0 
else
  rm
exit 1

답변1

@Tim의 답변에 제공된 기능은 bash를 실행하는 모든 시스템에서 작동합니다. 그러나 GNU는 rm이미 귀하의 필요에 맞는 옵션을 제공합니다( man rm).

   -I     prompt  once  before  removing more than three
          files, or  when  removing  recursively.   Less
          intrusive  than -i, while still giving protec‐
          tion against most mistakes

따라서 GNU가 있는 경우 rm(Linux를 실행하는 경우 그래야 함) 다음 줄을 다음 줄에 추가하면 됩니다 /.bashrc.

alias rm='rm -I'

3개 이상의 파일을 삭제하는 경우 메시지가 표시되지만 각 파일을 확인하라는 메시지는 표시되지 않습니다. 작업을 확인하면 모든 파일이 삭제됩니다.

답변2

이것은 저에게 효과적이었습니다. 다음 줄을 귀하의 줄에 추가하십시오 ~/.bashrc.

rm() {
   if [ "$#" -ge 3 ]; then
        command rm -i "$@"
   else
        command rm "$@"
   fi
}

이렇게 하면 실행될 때마다 호출되는 rm대신 호출되는 함수가 생성됩니다 ./bin/rmrm

"$#"전달된 인수 수로 확장됩니다.

답변3

간결하지만 여전히 이식 가능한 접근 방식은 다음과 같습니다.

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

rm그러나 의미론을 변경하지 않는 것이 좋습니다 .회신하다더 알아보기.

관련 정보