프리빌리지
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
제목 글쓴이 추천 조회 날짜
갤럭시 s SD 및 펌웨어 utilty (어플리케이션 소개) 59 file 자양 49 12390 2010.12.31
통신사로고 제거 방법 222 file 호정김 48 5849 2017.12.05
오딘 사용법 (S6 & S6 엣지 & S6 엣지+, 노트 5 이전 기기 및 ... 88 file Penguin97 48 8336 2017.01.31
[15.01.23] SKT 갤럭시노트4 (SM-N910S) 안드로이드 4.4.4 (KitKat) 시... 28 file 젤리빵™ 48 24514 2014.12.22
젤리빈 숨겨진 기능? 88 6811 48 5550 2013.03.11
[노트2] 쉽게 브라우저 종료 메뉴 추가하기 45 file lawbug 48 9867 2012.12.14
[노트2] 쉽게 브라우저 종료 메뉴 추가하기 1 file lawbug 48 9876 2012.12.14
강좌 [강좌]카카오톡 부계정 만들기 - 카카오톡 우회인증/공기계 카카오톡 ... 23 푸우♡ 47 42549 2014.03.12
45도로 과열된 폰 10초만에 20도만들기 76 file SuperUse 47 4022 2013.04.28
강좌 테그라크 사용자를 위한 간단 테마적용법~! 77 택이아빠 47 24445 2011.04.05
[12월 30일추가] I/O Scheduler와 외장마운트 동시적용을 통한 성능향... 289 file 이카루스 47 19025 2010.12.17
강좌 S7 엣지 루팅하기 (컴터 사용) sk, lg, kt 모두 사용 가능 216 file ericKangtheB 46 3139 2017.12.19
갤4 MF3이상 펌에서 카메라 무음설정 가능하도록 코드 수정하기 46 file phyb 46 13417 2013.06.24
루팅 초보분들에게 추천하는 8가지 42 악플반대 46 5446 2013.03.03
노트1 젤라빈 먹은후 자판느리신분을 위해 51 스카이모 46 4747 2013.02.25
배터리 절약법 정리 28 퓨마ㄴㅁ 46 3912 2013.02.12
강좌 갤럭시 타기종에서 갤럭시S6처럼 상단바 만들기. 22 file EPhe 45 16578 2015.05.04
[15.03.25] SKT 갤럭시노트4 (SM-N910S) 안드로이드 5.0.1 (Lollipop) ... 13 file 젤리빵™ 45 37001 2015.03.19
강좌 스마트폰 속도 최적화 강좌 31 file 은수116 45 8577 2014.12.31
강좌 제조사 롤리팝 시스템 디오덱스 방법 18 file JOLT™ 45 12778 2014.12.25
이번 갤럭시S2 젤리빈 3사 모두 잘못된 부분이 있습니다 30 file 르릉 45 4942 2013.02.07
프리빌리지 터미널: 롬 / 커널 추출 방법 9 프리빌리 45 7161 2012.11.11
흔히들 말하는 '롤리팝 메모리 누수'에 대해 19 arter97 44 16203 2015.04.28
강좌 맛클 뉴비강좌 4편 - 커스텀 리커버리가 뭘까? 22 qqjdzm 44 13817 2013.12.27
S플래너 주간날씨 살리기 54 file Who_am_I 44 10369 2013.05.04
퀵패널 투명 및 원하는 배경 만들기 111 file 른돌 44 21654 2013.04.03
(Tip)루팅된 순정롬 부트애니 변경하기!!!! 53 file 노트1 SHV 44 10143 2013.03.29
스마트폰 전원 안끄고 배터리 갈기 48 lecter 44 7386 2013.02.15
멋진 아이콘테마 무한대 대박많음~~ 22 file 까칠장미 44 3103 2013.01.31
[TA13] 부두패치(오버클럭 + 부두 랙픽스 + 부두 사운드)부터 루팅까지! 69 초콜렛왕 44 40885 2011.01.28
1 4 - 135