글쎄, 당신은 모든 다른 사람 앞에서 자신의 경로 구성 요소 중 하나를 넣는 시간 영광 방법을 사용할 수 있습니다 rm
같은 rm *
위한
#!/bin/bash
for fspec in "[email protected]" ; do
if [[ "${fspec: -3}" = ".py" ]] ; then
echo Not removing ${fspec}, use /bin/rm if you really want to.
else
echo Would /bin/rm "${fspec}" but for paranoia.
fi
done
해당 스크립트 출력 :
Would /bin/rm chk.sh but for paranoia.
Would /bin/rm go but for paranoia.
Would /bin/rm go.sh but for paranoia.
Would /bin/rm images but for paranoia.
Would /bin/rm images_renamed but for paranoia.
Would /bin/rm infile.txt but for paranoia.
Would /bin/rm jonesforth.S but for paranoia.
Would /bin/rm jonesforth.f but for paranoia.
Would /bin/rm mycode.f but for paranoia.
Would /bin/rm num1.txt but for paranoia.
Would /bin/rm num2 but for paranoia.
Would /bin/rm num2.txt but for paranoia.
Would /bin/rm proc.pl but for paranoia.
Would /bin/rm qq but for paranoia.
Would /bin/rm qq.c but for paranoia.
Would /bin/rm qq.cpp but for paranoia.
Would /bin/rm qq.in but for paranoia.
Not removing qq.py, use /bin/rm if you really want to.
Would /bin/rm qq.rb but for paranoia.
Would /bin/rm qq.s but for paranoia.
Would /bin/rm qq1 but for paranoia.
Would /bin/rm qq2 but for paranoia.
Would /bin/rm qqq but for paranoia.
Would /bin/rm rm but for paranoia.
Would /bin/rm source.f90 but for paranoia.
Would /bin/rm test.txt but for paranoia.
Would /bin/rm xx but for paranoia.
Not removing xx.py, use /bin/rm if you really want to.
이제 분명히 "${fspec: -3}" = ".py"
은 단순한 목록과 검은 색 목록입니다. 아마 내가 삭제하고 다른 모든 것을 거부하도록 허락 된 것들에 대한 화이트리스트를 갖는 것을 선호 할 것입니다.
#!/bin/bash
for fspec in "[email protected]" ; do
del=0
if [[ ! -z "$(echo "${fspec}" | grep 'a.e')" ]] ; then
del=1
fi
if [[ ! -z "$(echo "${fspec}" | grep '\.[Ss]$')" ]] ; then
del=1
fi
if [[ ${del} -ne 1 ]] ; then
echo "Not removing ${fspec}, use /bin/rm if you want."
else
echo " Removing ${fspec}"
#/bin/rm "${fspec}
fi
done
출력 :
Not removing chk.sh, use /bin/rm if you want.
Not removing go, use /bin/rm if you want.
Not removing go.sh, use /bin/rm if you want.
Removing images
Removing images_renamed
Not removing infile.txt, use /bin/rm if you want.
Removing jonesforth.S
Not removing jonesforth.f, use /bin/rm if you want.
Not removing mycode.f, use /bin/rm if you want.
Not removing num1.txt, use /bin/rm if you want.
Not removing num2, use /bin/rm if you want.
Not removing num2.txt, use /bin/rm if you want.
Not removing proc.pl, use /bin/rm if you want.
Not removing qq, use /bin/rm if you want.
Not removing qq.c, use /bin/rm if you want.
Not removing qq.cpp, use /bin/rm if you want.
Not removing qq.in, use /bin/rm if you want.
Not removing qq.py, use /bin/rm if you want.
Not removing qq.rb, use /bin/rm if you want.
Removing qq.s
Not removing qq1, use /bin/rm if you want.
Not removing qq2, use /bin/rm if you want.
Not removing qqq, use /bin/rm if you want.
Not removing rm, use /bin/rm if you want.
Not removing source.f90, use /bin/rm if you want.
Not removing test.txt, use /bin/rm if you want.
Not removing xx, use /bin/rm if you want.
Not removing xx.py, use /bin/rm if you want.
하는 것으로. 그것이 볼 수있는 것은'* .py ', 즉 해당 패턴과 일치하는 파일의 목록을 globbing 한 결과입니다. (또는 문자가 없으면'* .py' 문자가 사용되고,'shopt -s nullglob'의 경우 빈 문자열이됩니다.) – janmoesen
'rm'과 같은 이름의 대체품에 의존하는 것은 좋지 않습니다. 필요한 모든 작업은 단 한 번만 사용할 수 없으며 Bam! 안전망이 없기 때문에 파일이 사라졌습니다. 인터넷에서 작업하려면 다른 이름 (예 : "saferm")을 사용해야합니다. –
@Dennis Williamson : 예, 맞습니다. 다른 이름을 사용하는 것이 더 좋을 수도 있지만 실제로는 (실제로 "rm *"과 같은 것을 직접 사용하지 않고 원래 "rm"명령을 사용하는 경우에는 내 소스 코드를 삭제하지 않기 때문에 항상 사용할 수 있습니다. ")). 하지만 문제는 아마도 Makefiles 또는 "rm"이 표준이 아니며 거대한 부작용을 만들 수 있다는 것을 모르는 스크립트를 설치하는 것일 것입니다 ... – ThR37