프리빌리지
12.12.07
조회 수 3337
추천 수 16
댓글 9
프리빌리지 터미널은 리눅스 기반인 안드로이드 OS의 셸(Shell)에 접근할 수 있게 해주는 어플리케이션이자 개발에 대한 지식은 없지만 개발에 대해 배워보고 싶으신 분들을 위해 개발한 어플리케이션입니다. 의도에 맞게 시간나는대로 프리빌리지 터미널을 활용할 수 있는 방법에 대한 강의를 작성하고 있으며 개발과 안드로이드 시스템에 대해 아무것도 모르는 분들도 이 글들을 읽음으로써 안드로이드 시스템에 대한 지식을 쌓으며 때때로 간단한 작업들도 직접 해보실 수 있도록 도와드리려 노력하고 있습니다. ^^  맛클 유저분들을 위해 도움을 주고 싶지만 그럴 능력이 없어서 안타까웠던 분들도 이 강의들을 통해 지식을 쌓고 여러가지 작업을 할 수 있게 되어 직접 맛클에 기여를 하실수 있도록 도와드리는 게 제 목표입니다^^.

이번 글은 두번째 강의인 셸 스크립트 작성법입니다.





네이버 지식백과는 셸 스크립트 (shell script)를  "셸에서 사용되는 명령어들의 조합으로 구성되고 운영 체계(OS)의 [커맨드 라인 인터프리터]에 의해 실행되는 스크립트"라고 정의합니다.

셸 스크립트를 작성하신다면 터미널 명령어에 대해서 지식이 얕은 사람들도 여러분이 작성한 스크립트를 실행함으로써 복잡한 명령어들을 자동으로 실행할 수 있기 때문입니다. 주어진 명령어들을 조합하고 순서들을 정렬함으로써 스크립트로 구현할 수 있는 기능들은 무궁무진합니다: 그렇기 때문에 스크립트를 활용할 다양한 방법들을 궁리할 정도의 지식을 쌓을 수 있게 되신다면 "개발"을 하고 계신다고 봐도 무방합니다. ^^

우선 이 글에서 기초 개념을 익히신 후 다음 글에서 예제를 따라하면서 셸 스크립트를 작성하고 실행해보세요.

셸 스크립트에 알아야할 기초 개념들은 이와 같습니다:

1. 변수
변수는 방정식 때 배운 변수의 개념과 비슷하면서 다릅니다. 일단 변수는 값을 저장하는 공간이라고 생각하면 됩니다. 변수를 사용하면 스크립트 작성 시간을 아낄 수 있습니다.
* 자바 등과 달리 셸에서는 변수를 선언할 필요가 없습니다. 변수에 처음 값을 할당할 때 변수가 생성됩니다.
* 대소문자를 구분합니다. (즉 x와 X는 같은 변수가 아닙니다).


2. if문 (조건문)
조건문은 어떤 조건이 주어졌을 때만 명령어를 실행시키기 위해 사용됩니다. 방식은
if [어떠한 조건이 마련되었을 때]
then
실행할 명령어들
fi
이렇게 하시면 됩니다. 우선은 다른 지식을 먼저 익히시고 나중에 더 자세히 배우셔도 상관 없으니 당장 이해가 안 가도 걱정하실 필요 없습니다. ^^
좀 더 복잡한 응용법으로 if-else 문 등도 있는 데 역시나 당장 사용하실 일이 없을테니 다음에 필요할 때 살펴보겠습니다. ^^

3. echo "표시할 글"
여기부터는 자주 사용하실 명령어들입니다. echo "output text"라고 입력하면 폰 화면에 output text라는 글이 출력됩니다.

4. cd 디렉토리
cd는 저번 강의 때 사용한 명령어이니 다들 이미 아시겠지만 경로를 불러오는 명령어입니다. 루트 경로인 /에서 cd sdcard 라고 입력하면 현재 경로인 / 안에 있는 sdcard 경로 (즉 폴더)로 들어갑니다. 만약 경로 앞에 /를 입력하면 절대 경로를 입력하게 되는 것이며 예를 들어 시스템 기본 어플이 있는 폴더로 들어가려면 폰 안의 어떤 경로에서든 cd /system/app 을 입력하시면 됩니다.

5. mv 기존파일 새파일
mv는 파일 이동 명령어입니다. 좀 더 간단하게 생각하면 mv는 새 파일을 생성하고 원본 파일을 지우는 것이라 생각하시면 됩니다.  셸에서 명령어는 "명령어 옵션 목적" 형식으로 작성할 수 있으며 위에 cd의 경우는 옵션에 대해서 전혀 살펴보지 않았습니다. mv에서 사용되는 옵션들로는
-b: 파일을 옮길 때 같은 이름의  파일이 이미 존재한다면 그 파일을 덮어씌우기 전에 백업합니다.
-f: 강제로 덮어씌웁니다.
-i: 덮어씌울지 유저에게 물어봅니다.
-v: 무엇을 했는지를 출력합니다.
가 있으며 이를 사용하는 방법은 "mv -b", 두가지 옵션을 한번에 사용하려면 "mv -bv"로 입력하시면 됩니다.

예를 들어서 지금 있는 경로의 privilege_terminal.apk 파일을 /sdcard/folder 폴더로 옮기고 싶다면
mv privilege_terminal.apk /sdcard/folder

6. cp 기존파일 새파일
mv는 이동이며 cp는 복사입니다. 같은 원리로 작동되며 차이로는 원본 파일이 삭제되지 않는다는 점입니다. 
옵션으로는
-l: 복사를 할지 물어봅니다.
-f: 강제로 복사합니다.
-r: 하위 디렉토리와 파일을 모두 복사합니다. 디렉토리를 복사한다면 안에 있는 파일들과 디렉토리들, 그리고 그 디렉토리들 안에 있는 파일들 등을 전부 다 복사합니다.  (디렉토리와 폴더는 약간의 차이가 있긴 하지만 지금은 같다고 보시면 이해가 훨씬 쉽습니다. ^^)
-v: 복사 진행 정도를 출력합니다.
-a: 원본 파일의 속성이나 링크 정보 등을 유지합니다.
가 있습니다.

7. rm 삭제할파일
rm은 삭제 명령어입니다. rm [옵션] 파일명 방식으로 파일을 삭제할 수 있습니다. 예를 들어 지금 있는 경로의 privilege_terminal.apk 파일을 삭제하려면
rm (옵션) privilege_terminal.apk
라고 입력하면 됩니다.

옵션으로는
-f: 삭제할 파일 대상이 존재하지 않아도 메시지를 표시하지 않습니다.
-i: 삭제할 지 사용자에게 물어봅니다.
-r: 일반 파일이면 그냥 삭제, 디렉토리라면 그 디렉토리의 하위 디렉토리들과 파일들을 전부 지웁니다.
-v: 삭제되는 파일의 정보를 표시합니다.
가 있습니다. rm -rf가 가장 자주 사용됩니다.

8. mkdir
mkdir은 디렉토리 생성 명령어입니다. 예를 들어 "mkdir folder"라고 입력하면 folder라는 이름의 디렉토리를 생성합니다.

옵션으로는
-m: 디렉토리의 권한을 설정합니다.
-p: 상위 경로를 같이 만듭니다.
가 있습니다.

9. rmdir
rmdir는 디렉토리 삭제 명령어입니다. 예를 들어 "rmdir folder"라고 입력하면 folder라는 디렉토리를 삭제합니다.

옵션으로는:
-p: 상위 디렉토리도 같이 삭제합니다.
가 있습니다만 사실 rmdir는 디렉토리가 비어있어야 하는 등 불편하기 때문에 사실 rm이 훨씬 더 많이 사용됩니다.

10. chown
chown은 소유자 변경 명령어입니다. 시스템 폴더를 건드릴 때는 소유자 설정도 잘 해주는 게 좋습니다.

옵션으로는:
-c: 변경된 파일을 자세하게 표시합니다.
-f: 변경되지 않은 파일이 있어도 오류 메시지를 표시하지 않습니다.
-v: 작업 상태를 표시합니다.
-R: 하위 파일들도 모두 변경합니다.
가 있습니다.

11. chmod
chmod는 권한 변경 명령어입니다. 시스템 폴더를 건드릴 때는 권한 설정이 굉장히 중요합니다.

권한은 숫자로 표시되며 000부터 777까지의 숫자로 줄 수 있습니다. 권한을 어떻게 숫자로 표시하는지 살펴보세요:
r: 읽기 권한 (4), w: 쓰기 권한 (2), x: 실행 권한 (1)
r, w, 그리고 x가 권한을 표시하며 소유자 권한, 그룹 권한, 그리고 전체 권한을 전부 (순서대로) 명시해야 합니다 .
읽기, 쓰기, 실행을 전부 할 수 있다면 4+2+1 인 7이며, 읽기와 실행만 할 수 있다면 4+1인 5, 이런 식으로 할 수 있으며 000 ~ 777까지 세자리 숫자를 설정해야 하는 이유는 첫번재 자리가 소유자 권한, 두번째 자리가 그룹 권한, 그리고 마지막 자리가 전체 권한이기 때문입니다.

다른 방법은 "chmod +?" 방식입니다. 예를 들어 실행 권한을 추가하고 싶다면 "chmod +x"라고 입력하면 됩니다.

옵션으로는
-c: 변경된 파일을 자세하게 표시합니다.
-f: 변경되지 않은 파일이 있어도 오류 메시지를 표시하지 않습니다.
-v: 작업 상태를 표시합니다.
-R: 하위 파일들도 모두 변경합니다.
가 있습니다.

12. ls
ls는 목록 표시 명령어입니다. ls를 입력하면 현재 위치해있는 디렉토리에 있는 파일들과 디렉토리들을 나열해줍니다.
옵션으로는
-a: 숨김파일도 보여줍니다.
-l: 자세히 보여줍니다.
-c: 최근 변경에 따라 정렬합니다.
-i: 파일 옆에 색인 번호를 표시해줍니다.
-k: 파일 크기를 KB 단위로 보여줍니다.
-m: 파일 나열을 가로로 합니다.
-r: 정렬을 내림차순으로 합니다.
가 있습니다.




이번은 너무 재미없게 글을 써서 정말 죄송합니다! 사실 이번 글은 읽으실 필요도 없고 제가 다음에 다른 글을 쓸 때 이 명령어들이 필요한 상황이 생긴다면 이 글에 링크를 걸어서 여러분들이 확인하실 수 있도록 정리한 것에 불과하다고 보셔도 괜찮습니다.

바로 다음 강의는 이번에 배운 내용들을 사용해볼수 있도록 step-by-step으로 쉘 스크립트를 직접 작성해보시는 연습을 마련해보겠습니다 ^^.

그건 더 재밌을거에요 ㅠㅠ.
댓글 9
댓글 쓰기 권한이 없습니다.
분류 정렬 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
플립커버사용시 11 S3성라이 3 2079 2013.05.16
플로팅멀티윈도우 우연히알아낸팁아닌팁입니다. 9 두통약 10 3074 2013.03.22
플로팅 멀티윈도우 거의모든어플적용(?)and바로가기(강좌) 38 file 쿤투 16 12222 2013.03.20
플로팅 멀티 윈도우를 사용할수 있는 또다른 방법 33 file MuHyeon 20 5973 2013.03.21
플레이스토어일괄설치가되네요?^^ 1 나야나ㅋ 4100 2014.09.25
플레이스토어(구 마켓)오류 나시는 분들께 팁!! 12 뿌리리링 1 19552 2013.05.08
플레이스토어 오류! 콘사장장 2804 2013.07.08
플레이스토어 오류 원인 3 햄프셔 1 4977 2013.05.08
프리징 걸렸을시 재부팅방법..^^ 10 아가페 1 4362 2011.06.30
프리스티지모드에서 64기가 외장메모리 사용하기(루팅필수) 3 nhnh 1 3642 2012.07.31
프리스티지모드 설치 후 외장메모리 64기가 사용법(루팅필수) 7 nhnh 3 4362 2012.07.30
프리빌리지 터미널: 셸 스크립트 작성법 9 프리빌리 16 3307 2012.12.07
프리빌리지 터미널: 셸 스크립트 작성법 9 프리빌리 16 3337 2012.12.07
프리빌리지 터미널: 롬 / 커널 추출 방법 9 프리빌리 45 7161 2012.11.11
프리빌리지 모드 후기.. 22 file Dr_Ray 1 8289 2012.07.28
프록시 서버가 필요할떄 1 Galaxy SⅡ 2473 2013.11.20
프로요정펌 후에 생 초보분들 루팅 및 패치하기. 4 작은백두 3843 2010.11.16
프로요에서 생긴 I/O 속도하락 버그 10 먀유 3820 2010.11.22
프로요업후키스인식속도해결. 1 2vip Meta 2078 2010.12.24
프로요(SK05)에서 터치감도 확인하기 15 케이군 1 3715 2010.11.17
프로요(SK05) 상태에서 가능한 각종 I/O패치들의 성능 (객관적인 비교... 23 저처음이 1 3098 2010.11.19
프로요 정펌 부두 패치 하기 13 file 브레이크 2 5116 2010.11.20
프로요 정식펌업 속도저하 이유! 11 규규규규 1 4973 2010.11.16
프로요 순정 락화면 없애기~ 9 UsoTsuKi 1 4302 2010.11.16
프로요 삼성 정펌 롬업 대비 순서(커스텀롬,루팅,기타패치 하신분들만 ... 14 메가맨 1 4298 2010.11.15
프로요 배터리 조기퇴근 및 동영상 끊김 해결법 총정리 23 Freaks 6134 2010.12.06
프로요 루팅하기 4 루팅한옵 2 2109 2013.06.12
프로요 - 마켓 다운로드 목록 나오는거 알아냈습니다. 1 장니엘 2 3427 2010.11.16
프로요 + voodoo ext4 + Kied SKAF / 삼성기본어플 삭제 20 berics 2 6863 2010.11.16
프로그램 설치 용량 확보 Tip 14 벼리 7 6101 2011.08.08
1 4 - 135