프리빌리지
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
제목 글쓴이 추천 조회 날짜
[노트2] 4.1.2버전 필요없는 어플 자동삭제 스크립트 24 file 고대인 36 7668 2012.12.14
테마 적용 스크립트 4 file 포이즌 9 3533 2012.12.13
테마 적용 스크립트 5 file 포이즌 9 3520 2012.12.13
SK 갤노트2 LL2 SKT제거 SystemUI와 Multiwindow framework 12 file 상진군 21 5073 2012.12.13
SK 갤노트2 LL2 SKT제거 SystemUI와 Multiwindow framework 12 file 상진군 21 5062 2012.12.13
언루팅 후에도 금융어플백신이 루팅폰이라고 감지할때 11 푸페포포 5 9486 2012.12.13
언루팅 후에도 금융어플백신이 루팅폰이라고 감지할때 12 푸페포포 5 9423 2012.12.13
네오킴님 커널쓰시는 분들 중 국민은행 어플 안되시는 분들을 위한 팁! 5 쿸쿸쿸 2 3834 2012.12.13
네오킴님 커널쓰시는 분들 중 국민은행 어플 안되시는 분들을 위한 팁! 5 쿸쿸쿸 2 3847 2012.12.13
알뜰한 소비생활에 도움되는 어플들 추천이요 ! 1 file 독한넘 1 1441 2012.12.12
알뜰한 소비생활에 도움되는 어플들 추천이요 ! 2 file 독한넘 1 1422 2012.12.12
이스티니커널 갤3 1.6Ghz 전압 10 file 갤3초보 4 2498 2012.12.12
이스티니커널 갤3 1.6Ghz 전압 10 file 갤3초보 4 2487 2012.12.12
이스티니커널 갤럭시s3 언더볼티지 (내부전압 포함)(2/2) 6 file 갤3초보 2 4992 2012.12.10
이스티니커널 갤럭시s3 언더볼티지 (내부전압 포함)(2/2) 6 file 갤3초보 2 5028 2012.12.10
이스티니커널 갤럭시s3 언더볼티지 (내부전압 포함)(1/2) 7 file 갤3초보 1 3020 2012.12.10
이스티니커널 갤럭시s3 언더볼티지 (내부전압 포함)(1/2) 7 file 갤3초보 1 3005 2012.12.10
국내판 갤3/노트2 잠금화면에서 바로가기 되살리기 25 file FINEDAYS 41 15064 2012.12.09
국내판 갤3/노트2 잠금화면에서 바로가기 되살리기 22 file FINEDAYS 42 15075 2012.12.09
[아이폰5 케이스 반값] 아이폰5 케이스로 해피 크리스마스♡ 1 스마트줌 4 2170 2012.12.09
[아이폰5 케이스 반값] 아이폰5 케이스로 해피 크리스마스♡ 2 스마트줌 4 2142 2012.12.09
프리빌리지 터미널: 셸 스크립트 작성법 9 프리빌리 16 3307 2012.12.07
프리빌리지 터미널: 셸 스크립트 작성법 9 프리빌리 16 3337 2012.12.07
갤럭시S3 LJ2 순정 펌웨어 토렌트 입니다. 3 file Gess 2 4200 2012.12.07
갤럭시S3 LJ2 순정 펌웨어 토렌트 입니다. 2 file Gess 2 4234 2012.12.07
갤럭시s3 lte 1.6오버 전압셋팅(최종)+gpu 전압 추가~ 22 file 욘빡 6 9970 2012.12.06
갤럭시s3 lte 1.6오버 전압셋팅(최종)+gpu 전압 추가~ 21 file 욘빡 6 10002 2012.12.06
드라마 보고싶다를 폰에서 즐기려면? 2 풀하우두 3 2222 2012.12.06
드라마 보고싶다를 폰에서 즐기려면? 2 풀하우두 3 2201 2012.12.06
손가락으로 잉크 효과 내기 52 file Hax빙글 54 11506 2012.12.06
1 - 86 - 135