프리빌리지
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
제목 글쓴이 추천 조회 날짜
dcf 동영상 파일 재생 3 세상이만 29840 2012.04.20
rootcloak plus로 이제 루팅상태에서도 은행어플 가능하네요...ㅎㅎ 18 file 하으니다 6 29577 2014.01.23
[테마스토어] 테마스토어 기본어플 아이콘 변경하기 (맛클 강좌) 30 초콜렛왕 18 29473 2011.04.10
갤럭시 시리즈 순정 버전 쉽게 루팅하기 (오딘 필수) 40 file asman 7 29020 2012.05.25
강좌 부두패치와 테그라크 패치의 차이점. 24 요크 15 29020 2011.03.20
M110s에서 아이나비 3D 돌리는 방법... 113 file sungha 7 28759 2010.12.05
강좌 감사합니다 1 선영이다 1 28686 2019.07.25
[SK]갤3LTE IMSFrameWork가 중지되었습니다.뜰때 해결방법 8 타브 16 28469 2012.12.21
Font Creator 사용설명서 - 폰트수정하는방법 11 준오빠 2 28334 2013.06.06
강좌 [갤럭시S]루트익스플로러(Root Explorer) 어플 통한 테마 수동 변경 77 file 多勿將軍 29 28308 2010.12.28
강좌 Minimalistic Text (일명 미텍) 세이브파일 적용하기 82 file 뭐해™ 81 28300 2011.09.15
펌웨어 만큼은 제 nas에서 받으셔도 됩니다. 135 나대지마 60 28299 2011.01.11
갤럭시.루팅과 녹스 제거 간단히 하기. 순정으로 복구 방법. 36 마법의창 62 28245 2014.01.26
볼륨키 꾹눌러서 음악넘기기and상단바 수정하기(투명,색상변경) 143 file 쿤투 80 28193 2013.03.16
강좌 [안드로이드] 테마제작에 유용한 프로그램 모음 36 불멸[갤K] 61 28047 2011.02.26
강좌 유저노하우에 올렸던 순정독바변경!! 76 택이아빠 24 27844 2011.03.20
강좌 모든 전기종 Tinted Status Bar로 ios7처럼 어플의 상단바 배경색 바꾸기 35 Splendid™ 77 27836 2014.03.07
[롤리팝] 커널패치 루팅법 입니다! (킷캣,젤리빈에도 유용!!!) 193 file hsk 448 27573 2014.12.07
lte안심옵션 속도와 3g 속도의 차이 28 Godhand 7 27499 2013.06.25
강좌 [간단루팅]갤럭시S3 NI3 루팅하기! 54 file 5755084 117 27150 2014.10.07
강좌 갤럭시U(갤유,갤U) 진저브레드 VE20 루팅하는 방법 입니다. 100 file 곰봉이 13 27056 2011.05.18
[SK]갤3LTE IMSFrameWork가 중지되었습니다.뜰때 해결방법 8 타브 15 26991 2012.12.21
ext2, ext3, ext4 성능 한눈에 비교해드립니다. 11 file 이카루스 3 26649 2010.12.01
[SKT] 갤럭시 S4 LTE-A (SHV-E330S) 기본 어플 삭제시 자동회전 오류 11 은향류 4 26572 2015.01.31
KT용 갤럭시노트2 기본어플 삭제 목록 정리표 (4.1.2) 33 알케이오 42 26478 2012.12.15
KT용 갤럭시노트2 기본어플 삭제 목록 정리표 (4.1.2) 32 알케이오 41 26418 2012.12.15
[갤럭시K] 벽돌, 무한리부팅 복구 방법 (오딘 이용) 26 file NEO™ 13 26377 2010.12.27
SKT 갤럭시노트2 안드로이드 4.4.2 킷캣 기본 어플 삭제 목록 - 4차수정 30 젤리베리 65 26234 2014.06.05
(스샷)Android 4.0이상의 폰에 소프트키를 넣어보자! 201 file DeathstarS 5 26021 2012.06.06
강좌 초보님들에게 보내는 네번째 편지 ^^ 40 쎈빛 11 25939 2010.11.22
1 4 - 135