임베디드시스템설계강의자료 3 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
Outlie Shell vi editor Makefile - 2 - Youg-Ji Kim
Shell Shell 이란? 명령어해석기 (commad iterpreter) 시스템과사용자간의대화창구 == Shell 인터페이스 Shell 의종류 Boure Shell Boure Agai Shell (bash) ($) csh à 확장 csh (tcsh) (%) Kor Shell, V Shell. 기본기능이나작동법은동일 Shell 의기능 내부명령, 외부명령실행 à 명령프롬프트 (whereis!) 여러명령연결 파이프 ( ) 입 / 출력리다이렉션 ( >,<,>>,<<,2> ) : 명령방향전환 특수문자해석및치환, 명령어치환 지역 / 환경변수관리 스크립트프로그래밍언어 à 자동화작업 리눅스의기본 shell : Bash à /bi/bash - 3 - Youg-Ji Kim
Shell Shell 선택 사용자생성시선택명시 ( /etc/passwd 파일안에 shell 정보 ) 환경변수를이용해서자신의 logi shell 을확인 Shell 호출 $ echo $SHELL 자동호출 logi 시에 /etc/passwd 파일의정보읽어서지정된 shell 을시작 수동호출 특정 shell로변경하기위해서는단지해당 shell 프로그램을실행시키면되고, 종료시에 exit" 명령입력 Boure Agai shell bash C shell - csh - 4 - Youg-Ji Kim
Shell Bash 설정방법 Bash와관련된파일들 -.bashrc,.bash_logout,.bash_profile.bashrc 자주사용하는명령어의 alias 설정.bash_profile program이나 library에대한 path 설정 #.bashrc # User specific aliases ad fuctios alias ifc= ifcofig # Source global defiitios if [ -f /etc/bashrc ]; the. /etc/bashrc fi export #.bash_profile # Get the aliases ad fuctios if [ -f ~/.bashrc ]; the ~/.bashrc fi # User specific eviromet ad startup programs PATH=$PATH:$HOME/bi:/usr/local/arm-liux/bi: BASH_ENV=$HOME/.bashrc USERNAME="" export USERNAME BASH_ENV PATH v ifcofig 에대한 alias 설정 v arm-liux 관련명령어 path 설정 (/usr/local/arm-liux/bi) - 5 - Youg-Ji Kim
Shell bash 의환경설정파일 사용자별환경설정파일 (cd ; ls af).bash_logout,.bash_profile,.bashrc 원본파일 /etc/skel/ 디렉토리에존재 새로운사용자추가시마다각사용자의홈디렉토리에복사됨.. 으로시작하는파일은 hidde file 모든사용자공통의환경설정파일 /etc/profile, /etc/bashrc 환경설정파일인식순서 /etc/profile à ~/.bash_profile à ~/.bashrc à /etc/bashrc (ubutu는 ~/.profile) ~ 는현재사용자의기본디렉토리임! profile: 시스템환경설정및시작관련프로그램. 부팅시.bash_profile: 개인사용자환경설정및시작, 로그인시.bashrc: 개인사용자정의함수및 alias 설정, 새로운 shell istace시 bashrc: 시스템전체함수와 alias 설정 - 6 - Youg-Ji Kim
Shell 현재 path 관련변수확인 % echo $PATH path 디렉토리추가 전체사용자에게추가 : /etc/profile 편집특정사용자에게추가 : ~/.profile 편집 적용은 source ~/.profile 를수행 현재로그에서만추가 ( 로그아웃시소멸 ) % echo $PATH % PATH=$PATH:< 추가할디렉토리 > 개인별별칭 (alias) 설정단축명령어등록 ~/.bashrc 편집및활성화 (..bashrc 또는 source.bashrc) 예 ) alias lsa= ls a 사용자프롬프트변경 절대경로표시 : /etc/bashrc 에서 PS1 수정 PS1= [\u@\h \W] \\$ 로그아웃시의실행 ~/.bash_logout 편집 - 7 - Youg-Ji Kim
Shell Shell script Shell 명령들을포함하는실행가능상태의파일 Shell script 예제프로그램 파일확장자바꾸기 shell script의첫줄에사용 shell 명시 #!/bi/bash # rfe old_extesio ew_extesio # 예제 : # 현재디렉토리의모든 *.gif 파일을 *.jpg 로바꾸기 # rfe gif jpg if [ $# -e 2 ] the echo " 사용법 : `baseame $0` old_file_suffix ew_file_suffix" exit 1 fi for fileame i *.$1 # 첫번째인자로끝나는파일들을찾아서 do mv $fileame ${fileame%$1}$2 # 파일이름에서첫번째인자부분을떼어내고두번째인자를붙인다. doe - 8 - Youg-Ji Kim
v ma : 명령어나함수, 유틸리티사용법등에관한매뉴얼을보여주는명령 Ø 사용법 : ma [ 옵션 ] 리눅스명령 Ø 옵션 -a : 모든매뉴얼페이지출력 -d : 디버깅정보출력 -h : 도움말출력 -f : whatis와같음 -k : apropos와같음 -t : groff(troff) 를사용하여프린트를위한형식으로출력 Ø 섹션이름 1.User Commads : 누구나실행할수있는사용자명령 2.System Calls : 커널에서제공하는함수 3. C Library fuctios 4. Devices ad Network Iterfaces : /dev 특별한파일들 5. File Formats : 파일포맷, e.g. /etc/passwd 6. Games ad Demos 7. Eviromets, Tables, ad Macros 8. Maiteace Commads : 시스템관리자만실행할수있는시스템관리용명령들 - 9 - Youg-Ji Kim
- 10 - Youg-Ji Kim
v ls : 파일목록출력명령어 Ø 사용법 : ls [ 옵션 ] Ø 옵션 -a, -all : 디렉토리내의모든파일출력 -i : 파일의 iode와함께출력 -l : 파일허용여부, 소유자, 그룹, 크기, 날짜등을출력 -r : 정렬옵션이선택되었을때그역순으로출력 -t : 최근에만들어진파일순서대로출력 -R : 하위디렉토리의내용을포함하여출력 - 11 - Youg-Ji Kim
v cd : 현재의디렉토리에서다른디렉토리로경로를변경하는명령어 Ø 사용법 : cd / 디렉토리 : 절대경로 cd 디렉토리 : 상대경로 vpwd : 현재의디렉토리위치를알려주는명령어 - 12 - Youg-Ji Kim
v cp : 파일을다른파일명또는다른디렉토리로복사하는명령어 Ø Ø 사용법 : cp [ 옵션 ] 원본복사될대상파일명 cp [ 옵션 ] 원본복사될위치디렉토리명옵션 -a : 가능한한원래파일의구조, 속성을그대로복사 -f : 같은파일명을갖는파일이있을경우, 지운후복사 -i : 같은파일명을갖는파일이있을경우, 사용자확인후복사 -p: 원시파일의소유자, 그룹, 허용여부, 시간등을그대로복사 -r : 하위디렉토리를포함한모든파일복사 - 13 - Youg-Ji Kim
v mv : 파일을다른디렉토리로이동 or 다른이름으로변경할때사용되는 Ø Ø 명령어사용법 : mv [ 옵션 ] 원본파일대상파일 mv [ 옵션 ] 원본디렉토리명옵션 -b: 지워지기전에백업본생성 -f : 옮길디렉토리에존재하는파일이있으면덮어씀 -i : 옮길디렉토리에존재하는파일이있으면확인 -u : 옮길디렉토리에구버전의파일이있을경우에만이동 -v : 옮기기전에파일명출력 - 14 - Youg-Ji Kim
v rm : 파일을삭제하는명령어 Ø 사용법 : rm [ 옵션 ] 파일명 Ø 옵션 -f : 삭제할것인지묻지않고강제로파일삭제 -i : 지우기전에확인 -r, -R : 하위디렉토리의파일까지삭제 -v : 파일을지우기전에지울파일의이름을보여줌 - 15 - Youg-Ji Kim
v mkdir : 새로운디렉토리를신규로생성하는명령어 Ø 사용법 : mkdir [ 옵션 ] 생성디렉토리명 [ 복수지정가능 ] Ø 옵션 mkdir [ 옵션 ] / 생성디렉토리명 -p : 지정된모든하위디렉토리까지함께생성 -m : mode에해당하는사용허가로디렉토리생성 - 16 - Youg-Ji Kim
v rmdir : 디렉토리를삭제하는명령어 Ø 사용법 : rmdir [ 옵션 ] 생성디렉토리명 [ 복수지정가능 ] Ø 옵션 rmdir [ 옵션 ] / 생성디렉토리명 -p : 지우고자하는디렉토리의상위디렉토리까지포함하여삭제 - 17 - Youg-Ji Kim
v more : 주어진파일의내용을한화면씩출력하는명령어 Ø 사용법 : more [ 옵션 ] 파일명 Ø Space 키에의한페이지단위출력 Ø 옵션 -h : 도움말 (help) - SPACE 또는 - z : 다음페이지 -RETURN 또는 - 1 : 행스크롤 -d 또는 -^D : 반페이지스크롤 -q 또는 -Q : 종료 (quit) -f : 다음페이지 (forward) -b 또는 - ^B : 이전페이지 (back) - 18 - Youg-Ji Kim
v less : more 와유사하게페이지단위로문서를보여준다. Ø 사용법 : less [ 옵션 ] 파일명 Ø Space 키에의한페이지단위출력 + 화살표키에의한줄단위출력 (back 가능 ) Ø 옵션 -a : 마지막라인이화면에출력되고나서탐색을시작 -c : 필요할때전체화면은다시갱신 -C : -c 옵션과같지만갱신할때화면전체를지우고시작 -e : 두번째로파일의끝에도달하면자동적으로종료한다 -E : 파일의끝에도달하기만하면자동적으로종료한다 -I : 대소문자를구분하여탐색한다 - : 행번호를추가한다. -q : 특정에러가발생하지않으면아무소리도내지않고조용히동작 -s : 연속되는공백라인은하나의행으로처리 -x 숫자 : 수치를지정해서탭간격을조정. 기본값은 8-19 - Youg-Ji Kim
- 20 - Youg-Ji Kim
v Permissio : 리눅스파일시스템에서파일을액세스하기위하여각파일에대한사용권한설정. 소유자 (user), 그룹 (group), 다른사용자 (others) 에대한각각의허가권은읽기권한 (r), 쓰기권한 (w), 실행권한 (x) 으로구성되며해당권한이주어지지않으면, - 로나타난다. -rwxrwxrwx user other group ACCESS CLASS u : user 의퍼미션 g : group 의퍼미션 o : other 의퍼미션 a : user + group + other OPERATOR + : 퍼미션추가 - : 퍼미션삭제 = : 퍼미션을일치시킴 ACCESS TYPE r : 읽기퍼미션 w : 쓰기퍼미션 x : 실행퍼미션 ( 디렉토리는탐색퍼미션 ) 400 : ower 의읽기 200 : ower 의쓰기 100 : ower 의실행 40 : group 의읽기 20 : group 의쓰기 10 : group 의실행 4 : other 의읽기 2 : other 의쓰기 1 : other 의실행 - 21 - Youg-Ji Kim
v chmod : 파일의권한과디렉토리의권한을바꾸는명령어다. Ø 사용법 : chmod [ 옵션 ] [ 사용자 ] [+ -] [ 퍼미션 ] [ 파일 디렉토리 ] Ø 옵션 -R : 하위파일과디렉토리까지변경 - 22 - Youg-Ji Kim
v chow : 파일의소유자 (UID) 와소유그룹 (GID) 을변경하는명령어 Ø 사용법 : chow [UID:GID] [ 변경할파일 디렉토리 ] Ø Ø 사용예 : chwo root:root Makefile 옵션 -R : 하위파일과디렉토리까지변경 - 23 - Youg-Ji Kim
v fid : 디렉토리를탐색하면서지정된조건을만족하는파일을찾아주는 명령어 ( 재귀동작이기본임 ) Ø 사용법 : fid [ 경로 ] [ 옵션 ] 파일명 Ø 사용예 : fid. ame.profile Ø 옵션 -ame : 찾고자하는파일명지정 -perm : 파일의권한 (`permissio) 이일치하는것을검색 -user : 사용자의 ID에따라서검색 -atime : 최근며칠내에접속한파일을검색 -ewer : 최근에갱신된모든파일을검색 - 24 - Youg-Ji Kim
v cat : 텍스트파일을만들거나파일내용을출력하는명령어 Ø 사용법 : cat [ 옵션 ] 파일명 Ø 옵션 -e : ve 옵션과동일 -b : 비어있는행을제외한모든행에번호를붙임 - : 출력되는파일내용들에대해서번호를붙임 -t : vt 옵션과동일 -v : LFD와 TAB을제외한컨트롤문자출력 -E : 각행끝에 $ 표시 -T : ^l 로 TAB 문자표시 - 25 - Youg-Ji Kim
vl : 매우긴파일이름이있고, 사용자는이파일을자주참고하거나, 그파일을다른디렉토리에연결하여그디렉토리에서도그파일의경로이름을모두입력하지않고파일이름만을입력하여파일을사용할필요가있을때사용 Ø 사용법 : l [OPTION]... TARGET [LINK_NAME] l [OPTION]... TARGET... DIRECTORY l [OPTION]... --target-directory=directory TARGET... Ø 옵션 -f : 자신이액세스할수없는사용권한을가졌을때도링크가가능하게함 -s : 하드링크대신에심볼릭링크생성 - 26 - Youg-Ji Kim
Ø 하드링크 : 동일한파일시스템내에서의링크여러개의레이블생성이가능하나, 물리적파일은동일함하드링크가추가될때마다링크계수항목이증가 Ø 소프트링크 ( 심볼릭링크 ) : 다른파일시스템들간의링크링크계수항목이증가하는대신에 permissio 에 l--- 식으로기록됨 ls -F 로참조할때파일이름뒤에 @ 가표시됨 - 27 - Youg-Ji Kim
v 표준입출력제어 (Redirectio) Ø 표준입출력의방향을바꿔줌. 표준입력은키보드, 표준출력은모니터이지만이를파일로처리할때. 기호의미 > 표준출력을파일에기록 >> 표준출력을파일의끝에더붙임 < 파일로부터입력을읽어들임 - 28 - Youg-Ji Kim
v grep : 파일내용 ( 문자열 ) 탐색 Ø 사용법 : Ø 사용예 : grep r if./*.c Ø 옵션 -v : 지정한문자열과일치하는라인을제외한모든라인을출력 - : 문자열이나패턴과일치하는라인들의번호를표시 -c : 파일의내용대신문자열이들어있는라인의수를출력 (3개의라인에서매칭된다면 3출력 ) -l : 옵션은특정한패턴을찾기위해여러개의파일을검색할때 -r, --recursive : 서브디렉토리의파일까지모두출력 - 29 - Youg-Ji Kim
v mout : 파일시스템을사용하기위하여마운트시키는명령어 Ø 사용법 : mout [-frvw] [-t fs유형 ] [-a 옵션 ] 장치디렉토리 Ø 옵션 -v : 자세한출력모드 -f : 마운트가가능한지점검 - : /etc/mtab 파일에저장하지않고마운트 -r : 읽기만가능하도록마운트 -w : 읽기 / 쓰기가모두가능하도록마운트 -t vfstype : 파일시스템의유형지정 - 30 - Youg-Ji Kim
v tar : 여러파일과디렉토리를하나의파일로묶어준다. 압축기능은없다. Ø 사용법 : tar [ 옵션 ] 파일명.tar 대상 Ø 사용예 : tar xvf tmp.tar ( 풀기 ), tar cvf tmp.tar./*( 압축 ) Ø 사용예 : tar zxvf tmp.tar.gz ( 풀기 ), tar zcvf tmp.tar.gz./*( 압축 ) à tar + gzip(guzip) 기능 Ø 옵션 c : create, x : ucompress v : verbose, 묶는파일의목록을화면에보여주는기능으로생략가능 f : file t : 풀지않고목록을보여줌 - 31 - Youg-Ji Kim
v gzip/guzip : 파일압축 (gzip)/ 해제 (guzip) 유틸리티, 압축후파일 확장자로.gz Ø 사용법 : gzip test.tar : 실행후압축된파일 test.tar.gz가생성 guzip test.tar.gz : 실행후압축해제된파일 test.tar가생성 gzip -d test.tar.gz : guzip과동일 - 32 - Youg-Ji Kim
v ps : 현재진행중인프로세스에대한정보를출력 Ø 사용법 : ps [-] [ 옵션 ] Ø 옵션 l : 긴포맷으로출력 u : 실행한사용자와실행시간표시 j : 작업중심형태로표시 s : 시그널포맷으로표시 m : 메모리정보표시 a : 다른유저의프로세스현황표시 x : 터미널제어없이프로세스현황표시 v top : 현재실행중인프로세스의시스템리소스사용상태 Ø 사용법 : top - 33 - Youg-Ji Kim
- 34 - Youg-Ji Kim
v df : 하드디스크의용량을확인한다. Ø 사용법 : df [ 옵션 ] Ø 옵션 -a : 디폴트로생략된 0블록크기의파일시스템도표시 -i : 파일크기를블록대신 iode로디스크정보표시 -k : 파일크기를KB 크기로표시 -T : 파일시스템의종류와함께디스크정보표시 -t : fstype 값을가진파일시스템에대한디스크정보표시 -h : 사용자가이해하기쉬운용량의단위표시 ( 예 : KB,MB,GB) - 35 - Youg-Ji Kim
v du : 디스크사용현황, 지정된디렉토리의디스크사용량을표시 Ø 사용법 : du [ 옵션 ] 파일 Ø 옵션 -a : 디렉토리가아닌모든파일에대한정보출력 -k : 결과값을KB 단위로출력 ( 기본값 ) -m : 결과값을MB 단위로출력 -h : 사용자가이해하기쉬운용량의단위표시 ( 예 : KB,MB,GB) -l : 하드링크의용량을모두계산 -s : 사용량의총합계만출력 -S : 하위디렉토리를합치지않고, 각각을나누어계산 - 36 - Youg-Ji Kim
v uame : 사용중인운영체제에대한정보를출력 Ø 사용법 : uame [ 옵션 ] Ø 옵션 -a : 현재사용중인운영체제와커널의컴파일정보출력 v whoami : 사용중인현재 user 이름을출력 - 37 - Youg-Ji Kim
v su : 다른사용자계정으로서브셀을생성한다. 일시적으로다른사용자계정으로작업할필요가있을때사용 su 에서인자가없으면 root 계정으로로그인하는것으로간주하며 su 는 substitute user 를의미함 Ø 사용법 : su [ - ] [ 사용자ID][ 인수 ] Ø 옵션 -, -l, --logi : 셀을실제적인로그인셀로동작시킴 -c, --commad=command : 해당유저로로그인하는과정없이현재의셀프롬프트에서하나의명령만실행 -s secods : 지정된초 (secods) 단위로업데이트된정보를출력 - 38 - Youg-Ji Kim
v shutdow : 시스템을종료할때일반적으로사용되는명령 Ø 사용법 : Ø 옵션 shutdow [ 옵션 ] 시간 [ 메시지 ] shutdow h ow -t : t 옵션뒤에 초를명시해서경고메시지를보낸후 초후에 kill 시그널전송 -h : 셧다운시 halt 실행 - : 디스크동기화동작의수행금지 -r : 시스템종료를완료하고나서다시부팅과정수행 -f : 빠른리부팅진행. 리부팅시파일시스템검사를하지않는다 -c : 이미예약되어있는셧다운취소. 사용자들에게메시지전달 -k : 경고만보내고실제로는종료하지않음. k 는 just kiddig 의의미 v reboot : 시스템을재시작 Ø 사용법 : reboot - 39 - Youg-Ji Kim
- 40 - Youg-Ji Kim
v xargs : 표준입력을통해명령줄을만들고실행하는데사용되는명령 입력을필터용으로작게조각내서명령어가처리하게해줌. Ø 사용예 Ø ls xargs - 8 echo 현재디렉토리의파일들을한줄에 8 개씩끊어서보여줌 Ø fid /tmp -ame core -type f -prit xargs /bi/rm -f /tmp 아래의 core 라는이름의파일들을찾아서모두지움 Ø 옵션 -a file : 표준입력이아닌파일로부터목록들을읽어냄 -0 : whitespace가아니고 NULL에의해서파일이름이끝나는것으로기대함 - args : 명령줄에서 args 수만큼만매개변수를허용함 - 41 - Youg-Ji Kim