프리빌리지
12.12.07
조회 수 3307
추천 수 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
제목 글쓴이 추천 조회 날짜
[롤리팝] 커널패치 루팅법 입니다! (킷캣,젤리빈에도 유용!!!) 193 file hsk 448 27573 2014.12.07
맛클 포인트 얻기에 가장 쉬운 방법............ 196 비빅비 406 8773 2013.04.17
4.3 드디어 루팅법 알아냈습니다ㅜ 71 file Jason K 184 32388 2013.10.25
강좌 테그라크(빌드30이후) 업데이트폴더 테마적용방법 232 file 택이아빠 150 71918 2011.06.11
[6개] 겔럭시 노트 젤리빈 베터리 광탈 현상 최소화 하기..! 152 file HackerChang 143 25412 2013.02.18
강좌 안드로이드 framework-res.apk 수정방법(테마수정, 시스템어플수정) 136 불멸[갤K] 140 88261 2011.02.11
부팅 및 종료 애니메이션 파일(*.qmg) 파일 만들기 방법 68 file 웃음투자 137 17427 2013.03.25
Universal Adrenaline Shot V14 470 file 맛싸이언 124 39511 2011.09.30
강좌 [간단루팅]갤럭시S3 NI3 루팅하기! 54 file 5755084 117 27150 2014.10.07
Galaxy Tuner 소개 (IO scheduler, LCD 색온도, HW sound) 201 file 자양 114 35633 2011.01.05
lgu 갤s8+ 구글락 글올린 사람입니다 598 file 떳다마린 113 17603 2018.03.25
[겔S : 1월 11일 V2] 이카루스 패치 N2 - 배포게시판이동 262 file 이카루스 113 16246 2011.01.09
[포인트 올리는 법] 포인트를 올리는 가장 기본적인 루트를 적어두었습... 17 berics 109 526190 2015.03.10
기어s2 다운그레이드 (스포츠,클래식)(아이폰연동) 105 file 정현성 103 16554 2016.01.25
노트2/갤탭10.1)멀티윈도우 가능한 어플 추가하기 108 file 고대인 103 64292 2012.11.11
강좌 잠금화면 상단바 갤4처럼 투명화하기 191 file MuHyeon 100 17653 2013.08.01
강좌 LG V20 부트로더 언락하기(국내 내수용,버라이즌,스프린트,AT&T 모... 300 file xps 94 12003 2017.02.12
노트3 기본 어플 자동 삭제 (세계 최고 387개) #1차 수정 99 file Anony 93 25632 2014.03.01
갤럭시노트 멀티윈도우 포팅시 주의할점과 포팅방법 75 file focusnf 92 16555 2013.02.14
[팁] 롤리팝 디오덱 방법 68 file 푸른구름 88 13551 2015.07.21
갤럭시S4 SKT 기본어플 삭제가능목록 정리해서 올립니다. 61 file 야미 87 60859 2013.09.07
강좌 [안드로이드] 디컴파일 되지 않는 시스템어플 디컴파일 하기 68 불멸[갤K] 87 22896 2011.02.17
강좌 textplus를 이용한 공기계 카카오톡 인증! 36 file bjw4227 86 55530 2015.01.31
[팁][롤리팝] S파인더 퀵커넥트 간단하게 제거하기 24 file hsk 85 22619 2015.05.21
강좌 [대부분의 삼성기종] 카메라 셔터무음 활성화 76 file bdessd 85 14659 2015.05.08
강좌 노트10.1 lte (E230S) 루팅강좌 + 순정펌(4.4.4) 킷캣 58 file 장벌 85 20619 2014.10.28
강좌 Root Explorer(루트익스플로러) 사용방법 114 berics 85 63404 2011.02.10
루팅 관련 용어 정리 71 크램프 84 3456 2013.01.23
패블릿모드 하는법! 강좌 379 file 쿤투 83 30994 2013.03.17
[참고] 롤리팝 루팅 이후 보안알림 제거 (KNOX, SecurityLogAgent 제거... 36 file hsk 81 31851 2015.03.22
1 - 135