Go Back   AppleForum > Software > Application

 
 
thread_tools
2007-11-04, 02:54 AM   #1
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
쉘 스크립트로 가능한 간단한 언인스톨러 제작 방법은?

개인적으로 공개용 자료를 배포하고 있는데, 언인스톨러도 함께 포함시키려 합니다.

복수의 파일들을 일괄 삭제하는 쉘 스크립트를 작성하고 싶은데, 아무래도 프로그래밍은 문외한 쪽에 가까운터라 갑갑하기만 하군요.



예를 들어, 100여개가 넘는 파일들의 목록을 하나의 텍스트 파일 형태로 미리 만들어 놓으면,

단지 이 텍스트 파일을 읽어들여 일괄적으로 삭제 작업을 실행하는 간단한 스크립트를 만들고 싶습니다.

기본 터미널에서 실행되는 쉘 스크립트를 생각하고 있는데, 이게 가능한지, 또 어떻게 해야하는지 알고 싶습니다.

고수님들의 조언 부탁 드리겠습니다.

deepscar 님께서 2007-11-04 03:08 AM 에 수정하셨습니다..
  Reply With Quote
2007-11-04, 04:48 AM   #2
zeon
Veteran Member
 
zeon's Avatar
 
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 등으로 저장하시고..
remove.sh 화일리스트.txt 하시면 되겠네요. 위에 file $line을 수정하시구요.

주의) 괜히 엄한 화일 지워서 고생마시고 테스트를 마치신 후 rm으로 바꾸세요!!
주의2) 리스트.txt 화일 안의 경로는 절대 경로로 쓰시는게 안전하겠네요.
ps) 전 요렇게 절대 안할꺼 같아요

zeon 님께서 2007-11-04 05:02 AM 에 수정하셨습니다..
  Reply With Quote
2007-11-04, 04:56 AM   #3
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
인용:
zeon 님이 쓰신 글 글 보기
왜 shell 스크립을 쓰시는지는 모르겠지만...(간단하긴 하죠)
대안이 많을텐데요?
ㅋㅋ 저의 무지함 때문이지요~
먼저 조언 감사드립니다! 즉시 응용해서 테스트 해봐야겠습니다. =3=3=3
  Reply With Quote
2007-11-04, 05:07 AM   #4
zeon
Veteran Member
 
zeon's Avatar
 
Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
수정해버렸는데.. 아하하 늦었군요. ㅜ.ㅜ

shell script가 문제가 아니라 화일이 없거나 예외 상황 처리하려면 저기에 덕지덕지 붙여야 되서 가독성이 많이 떨어질 겁니다. 물론 익숙하다면 상관 없겠지만요.
그래서 한 말인데..

좋은 프로그램 많이 배포하세요!
  Reply With Quote
2007-11-04, 05:18 AM   #5
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
인용:
zeon 님이 쓰신 글 글 보기
수정해버렸는데.. 아하하 늦었군요. ㅜ.ㅜ

shell script가 문제가 아니라 화일이 없거나 예외 상황 처리하려면 저기에 덕지덕지 붙여야 되서 가독성이 많이 떨어질 겁니다. 물론 익숙하다면 상관 없겠지만요.
그래서 한 말인데..

좋은 프로그램 많이 배포하세요!
수정하셨군요. ^^;
뭐 상관없습니다. 어차피 실행 방법을 몰라 당황하고 있던 차였습니다.. ㅋㅋㅋ
그런데, 저는 개발자는 아니고요, 그저 한글화 정도만 슬-쩍 할 줄아는 그런(아주 제너럴한 유저) 정도입니다.

그나저나 어떤 명령어로 실행해야하는지도 좀...
  Reply With Quote
2007-11-04, 05:23 AM   #6
zeon
Veteran Member
 
zeon's Avatar
 
Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
sh remove.sh list.txt

입니다.

또는 chmod +x remove.sh 하셔서 ./remove.sh 하시면 실행됩니다.
  Reply With Quote
2007-11-04, 05:45 AM   #7
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
터미널에서 실행할 수 없는 건가요?
말씀하신대로(sh remove.sh list.txt 로 실행했어요) 하니, 다음 메세지가 표시됩니다:

cannot execute binary file

자꾸 번거롭게 해드리는 것 같아 죄송스럽군요.
  Reply With Quote
2007-11-04, 05:49 AM   #8
zeon
Veteran Member
 
zeon's Avatar
 
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으로 저장되 있어야 겠죠.
  Reply With Quote
2007-11-04, 06:18 AM   #9
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
아, zeon 님 정말 고맙습니다. 역시 저의 불찰이었습니다.
언급한 오류는 제 파일들의 인코딩 형식이랑, 줄바꿈 형식이 올바르지 못해서 오는 오류였네요.
그런데, 저 변수들은 모두 따옴표("")로 묶어주어야 스페이스가 들어간 이름에 적용되는 것 같아요.

마지막으로, 간단한 것이지만 제겐 큰 도움이 되었습니다. 다시 한번 감사드립니다.
  Reply With Quote
2007-11-04, 06:30 AM   #10
zeon
Veteran Member
 
zeon's Avatar
 
Registered: Jul 2006
My Mac: macbook
Posts: 532
오프라인
인용:
deepscar 님이 쓰신 글 글 보기
그런데, 저 변수들은 모두 따옴표("")로 묶어주어야 스페이스가 들어간 이름에 적용되는 것 같아요.
깜빡했는데요. 경로에 공백이 있을 경우에는 list.txt에 수정을 가해야 할 것 같네요.
뭔 말이냐면..예를 들어
Application Support 란 화일이 있을 경우
Application\ Support 라고 공백앞에 역슬래쉬가 들어가면 될 것 같습니다.
  Reply With Quote
2007-11-04, 06:41 AM   #11
deepscar
Senior Member
 
Registered: Apr 2005
My Mac: 파워맥 ♥ 파워북
Posts: 117
오프라인
경로 쪽을 수정해도 되는군요. 매우 잘 작동하고 있습니다.
앞으로 파일 목록만 건드리면되니, 훨씬 더 쾌적해진 것 같습니다.
zeon 님도 좋은 시간 되시길 바랍니다...
  Reply With Quote
지금 시각: 05:04 AM | Contact Us | 아카이브 | Top
SEO by vBSEO 3.0.0 RC5 All contents copyright © 2001~2008 by AppleForum and/or their respective owners.