| 2007-11-04, 02:54 AM | #1 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
쉘 스크립트로 가능한 간단한 언인스톨러 제작 방법은?
개인적으로 공개용 자료를 배포하고 있는데, 언인스톨러도 함께 포함시키려 합니다.
복수의 파일들을 일괄 삭제하는 쉘 스크립트를 작성하고 싶은데, 아무래도 프로그래밍은 문외한 쪽에 가까운터라 갑갑하기만 하군요. 예를 들어, 100여개가 넘는 파일들의 목록을 하나의 텍스트 파일 형태로 미리 만들어 놓으면, 단지 이 텍스트 파일을 읽어들여 일괄적으로 삭제 작업을 실행하는 간단한 스크립트를 만들고 싶습니다. 기본 터미널에서 실행되는 쉘 스크립트를 생각하고 있는데, 이게 가능한지, 또 어떻게 해야하는지 알고 싶습니다. 고수님들의 조언 부탁 드리겠습니다. ![]() deepscar 님께서 2007-11-04 03:08 AM 에 수정하셨습니다.. |
|
| 2007-11-04, 04:48 AM | #2 |
|
Veteran Member
![]() ![]() ![]() Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
|
요렇게 해보세요.
Code:
#!/bin/bash
doLine() {
line="$@" # 모든 args를 line에 넣기(화일경로에 space가 있을지도 모르겠네요)
file $line # 여기다 sudo rm -rf $line 하면 지워지겠죠.
}
FILE="$1"
exec 3<&0 # fd3으로 stdin을 돌리고..
exec 0<$FILE # FILE을 stdin으로 보내고.
while read line # stdin을 read하여 line변수에 넣고... eof까지 반복
do
doLine $line # line으로 요걸 반복 하고..
done
exec 0<&3 # close fd3
exit 0
remove.sh 화일리스트.txt 하시면 되겠네요. 위에 file $line을 수정하시구요. 주의) 괜히 엄한 화일 지워서 고생마시고 테스트를 마치신 후 rm으로 바꾸세요!! 주의2) 리스트.txt 화일 안의 경로는 절대 경로로 쓰시는게 안전하겠네요. ps) 전 요렇게 절대 안할꺼 같아요 ![]() zeon 님께서 2007-11-04 05:02 AM 에 수정하셨습니다.. |
|
| 2007-11-04, 04:56 AM | #3 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
![]() 먼저 조언 감사드립니다! 즉시 응용해서 테스트 해봐야겠습니다. =3=3=3 |
|
| 2007-11-04, 05:07 AM | #4 |
|
Veteran Member
![]() ![]() ![]() Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
|
수정해버렸는데.. 아하하 늦었군요. ㅜ.ㅜ
shell script가 문제가 아니라 화일이 없거나 예외 상황 처리하려면 저기에 덕지덕지 붙여야 되서 가독성이 많이 떨어질 겁니다. 물론 익숙하다면 상관 없겠지만요. 그래서 한 말인데.. 좋은 프로그램 많이 배포하세요! |
|
| 2007-11-04, 05:18 AM | #5 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
뭐 상관없습니다. 어차피 실행 방법을 몰라 당황하고 있던 차였습니다.. ㅋㅋㅋ 그런데, 저는 개발자는 아니고요, 그저 한글화 정도만 슬-쩍 할 줄아는 그런(아주 제너럴한 유저) 정도입니다. 그나저나 어떤 명령어로 실행해야하는지도 좀... |
|
| 2007-11-04, 05:23 AM | #6 |
|
Veteran Member
![]() ![]() ![]() Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
|
sh remove.sh list.txt
입니다. 또는 chmod +x remove.sh 하셔서 ./remove.sh 하시면 실행됩니다. |
|
| 2007-11-04, 05:45 AM | #7 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
터미널에서 실행할 수 없는 건가요?
말씀하신대로(sh remove.sh list.txt 로 실행했어요) 하니, 다음 메세지가 표시됩니다: cannot execute binary file 자꾸 번거롭게 해드리는 것 같아 죄송스럽군요. |
|
| 2007-11-04, 05:49 AM | #8 |
|
Veteran Member
![]() ![]() ![]() Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
|
textedit로 저 위의 내용을 작성하신거 맞죠? 그리고 화일 이름을 remove.sh로 해서 저장하셨구요?
아니면 터미널에서 cat >> remove.sh 하시고 위의 제 code를 터미널에 붙여 넣기 하신 후 Control-d 하면 화일이 만들어 집니다. 그담에 sh remove.sh list.txt 해보세요. 이 때 물론 list.txt의 내용이 line-by-line으로 저장되 있어야 겠죠. |
|
| 2007-11-04, 06:18 AM | #9 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
아, zeon 님 정말 고맙습니다. 역시 저의 불찰이었습니다.
언급한 오류는 제 파일들의 인코딩 형식이랑, 줄바꿈 형식이 올바르지 못해서 오는 오류였네요. 그런데, 저 변수들은 모두 따옴표("")로 묶어주어야 스페이스가 들어간 이름에 적용되는 것 같아요. 마지막으로, 간단한 것이지만 제겐 큰 도움이 되었습니다. 다시 한번 감사드립니다. ![]() |
|
| 2007-11-04, 06:30 AM | #10 |
|
Veteran Member
![]() ![]() ![]() Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
|
뭔 말이냐면..예를 들어 Application Support 란 화일이 있을 경우 Application\ Support 라고 공백앞에 역슬래쉬가 들어가면 될 것 같습니다. |
|
| 2007-11-04, 06:41 AM | #11 |
|
Senior Member
![]() ![]() Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
|
경로 쪽을 수정해도 되는군요. 매우 잘 작동하고 있습니다.
앞으로 파일 목록만 건드리면되니, 훨씬 더 쾌적해진 것 같습니다. zeon 님도 좋은 시간 되시길 바랍니다... ![]() |
|