터미널에서 일부 명령을 실행하기 전에 경고를 설정하는 방법이 있습니까?

터미널에서 일부 명령을 실행하기 전에 경고를 설정하는 방법이 있습니까?

대량의 데이터를 매우 효율적으로 파괴하는 데 능숙한 일부 터미널 명령이 있습니다. 좋아요: sudo rm -rf /*또는 rm -rf /*. 이러한 파괴적인 명령을 입력할 때마다 표시되는 경고를 설정하고 싶습니다. 이 같은:

sudo rm -rf /*
Are you sure you want to remove all files from your root 
directory recursively? This operation will remove all files from the root 
directory, any mounted filesystems attached to it and essential operating 
system files. 
Are you sure you want to proceed? [Y/n]

rm -rf /*
Are you sure you want to remove all files owned by $USER 
recursively? This operation will remove all your files on the root 
filesystem and any filesystems mounted to it.
Are you sure you want to proceed? [Y/n]

이를 수행하는 스크립트를 작성하는 방법은 무엇입니까?

답변1

rm-i파일을 제거하기 전에 매번 묻는 옵션이 있습니다 . 내 생각에 그것은 당신이 원하는 것이 아닌 것 같아요.모든예를 들어 git repo와 같이 반복적으로 삭제하려는 경우 종종 수백 개의 승인이 필요한 파일을 제거하기 전에 시간이 걸립니다.

rm당신이 원하는 것은 아마도 이와 같이 "대체"하는 간단한 스크립트일 것입니다.

#!/bin/bash
if [ "$(ls -l $1 | wc -l)" = "1" ]; then
  rm $1 $@
else
  echo "You are going to delete these ($(ls -l $1 | wc -l)) files/directories via shell globbing" 
  ls $1
  read -p "Do you really want to delete these files? [y/n]" yn
  if [ $yn = [Yy] ]; then
    rm $1 $@
  fi
fi

참고: "rm FILE ARGUMENTS"와 같은 스크립트를 사용해야 합니다.

이 스크립트는 쉘 글로빙을 사용하여 둘 이상의 파일(디렉토리)을 선택하는지 확인하지만 파일이 하나만 있는 경우 파일을 제거합니다.

관련 정보