2012-11-21 3 views
1

TIA 사전에 도움을 요청하십시오. 이것은 더 많은 독서가 항상 감사하게 될 교과 과정입니다!Linux 쉘 스크립트 삭제/복원/휴지통

기본적으로 나는 bash에 3 개의 스크립트를 작성해야합니다. 하나는 파일을 내 생성 디렉토리 (~/쓰레기)로 '삭제'하는 것입니다. 필요할 경우 복원하고 복원하고 영구적으로 삭제할 수 있습니다.

나는 휴지통에 다소 붙어 있습니다. ls가 아직 거기에있는 모든 파일을 보여주기 때문에 실제로는 아무 것도 삭제하지 않는 것처럼 보입니다. 나는 또한 사용자가 한번에 모두 휴지통에 추가 한 플래그 (-a)에 문제가있어, 발견되지 않은 경우 발견 된 각 파일에 대한 확인을 요청해야합니다. 난 그냥 지금있는 곳 여기

는 -a가 표시되지 않습니다

#!/bin/bash 
if [ "$1" = "-a" ] 
then 
cd ~/rubbish 
rm ~/rubbish 
mkdir ~/rubbish 
echo "All files have been deleted" 
else 
cd ~/rubbish 
ls > rubbish 
for line in 'cat rubbish' 
do 
echo "Do you want to delete?" $line 
echo "Y/N" 
read ans 
case "ans" in 
Y|y) rm $line;; 
N|n) " ";; 
esac 
done 
fi 

내가 말했듯이 ...이고, 그것은 때 LS 첫 번째 분기를 건너 뛰고 두 번째 겉으로 잘 통해 실행하지만, ~/쓰레기 모든 파일이 아직 있습니다.

EDIT 도움 주셔서 감사합니다! 스푸트니크, 음, 세미콜론을 추가하는 것 외에 다른 의견에서 변경된 사항을 실제로 볼 수 없었습니다. 그리고 inductiveLoad, 당신의 대답은 에이스지만, 나는 제대로 작동하는 방법을 찾지 못했습니다, 인내심을 잃었 기본을 갔다.

#!/bin/bash 

if [ "$1" = "-a" ] ; 
then 
cd ~/rubbish; 
rm ~/rubbish/*; 
echo "All files have been deleted"; 
else 
    rm -i ~/rubbish/* ; 
fi 
+0

이'#/빈/bash는 일을 시도;! 경우 [ "$ 1"= "-a"] 다음, CD ~/쓰레기, RM ~/쓰레기;에서 mkdir ~/쓰레기, 모든 파일 "에코 삭제 된 "; 다른; CD ~/쓰레기, LS는> 쓰레기, 할; '고양이 쓰레기'라인을위한 에코?"삭제 하시겠습니까? " $ 라인 「Y/N "에코; Y | Y) RM을 $ 라인 ;;; N | N) '';;; ESAC;의 경우"ANS "; ANS를 판독 할; 숙제 일반적 fi' –

답변

1

내가 훨씬 더 많은 유연성을 허용하는 옵션을 구문 분석 getopts을 사용이 임의로 임의의 수의 인수를 주문 .... 그래서 같이, 플래그 반대로 데이터 (와 옵션 - 아래 -d 옵션이 표시) 또한 잘못된 옵션을 제공하면 도움말을 인쇄합니다.

usage() 
{ 
cat <<EOF 
usage: $0 options 

This script deletes/restores/trashes files. 

OPTIONS: 
    -h Show this message 
    -a Trash it all! 
    -d Rubbish directory 
EOF 
} 

trashAll=false 
rubbishDir="~/rubbish" 

while getopts "ad:" OPTION; 
do 
    case "$OPTION" 
    in 
     h) usage 
      exit 1;; 
     a) trashAll=true;; 
     d) rubbishDir=${OPTARG};; 
     ?) usage 
      exit 1;; 
    esac 
done 

if $trashAll 
then 
    #trash it all 
    echo "Trashing all in ${rubbishDir}!" 
fi 
+0

+1 궁금한 점은 완전한 솔루션이 아닌 지침 만 제공한다는 것입니다. –

+0

도움 주셔서 감사합니다! 스푸트니크, 음, 세미콜론을 추가하는 것 외에 다른 의견에서 변경된 사항을 실제로 볼 수 없었습니다. 그리고 inductiveLoad, 당신의 대답은 에이스이었다,하지만 난 그것을 제대로, 인내심을 잃고 동네 짱 기본 가서 일을 할 수있는 방법을 찾을 수 없습니다. – Moominboy

관련 문제