Chap 1 리눅스설치및활용
1. 리눅스설치 1.1. 리눅스설치 1.1.1. 호스트시스템슈퍼유저사용설정리눅스는멀티유저시스템이다. 그러므로하나의시스템에여러사용자가로긴해서사용할수있다. 그중에서시스템을관리하는사용자를일반적으로슈퍼유저혹은어드민이라고한다. 슈퍼유저권한을갖게되면시스템의모든영역을마음대로수정, 편집할수있다. 우분투에서는슈퍼유저권한의사용에대해서기본설정하지않는다. 일반적으로개발환경을구축하는데있어서슈퍼유저의권한이있다면, 명령을실행할때마다 sudo 명령을사용하지않아도되므로편리하다. 다만, rm과같은파일삭제명령을수행할때, 잘못된판단으로시스템을모두를지워운영체제조차구동되지않을수있다는점을인지하고진행해야한다. 터미널 (Application메뉴 - 보조프로그램Accessories - 터미널Terminal을실행하여, root 계정패스워드를생성한다.( 또는 Ctrl + Alt + T를누르면 Terminal을켤수있으며 Ctrl + Shift + T를누르면 Terminal Tab을추가할수있다.) huins@ubuntu:/$ sudo passwd root 입력을마치면현재시스템사용자패스워드, 새로운 root 사용자패스워드, 새로운 root 사용자패스워드확인절차를거친다음에 root 사용자계정으로로긴할수있다. root 사용자계정으로의로그인을위해서현재우분투를로그아웃시킨다. 로그인메뉴에서 other를선택하고 root 사용자를선택한다음, 이전에입력했던 root 사용자의패스워드를입력해준다. 다시한번언급하지만, root 권한은시스템에서사용되는모든권한을획득한상태이므로, 파일삭제등과같은명령을쓸때에는신중하게고려하고사용하여야한다. 최소한 root 사용자로로긴하였을때에는삭제명령 (rm) 에서가급적강제삭제옵션 (-rf) 와같은옵션을사용하지말아야한다. 교재에서개발환경설치및파일시스템빌드부분은 root계정을사용한다. 일반사용자계정으로아래교육내용을진행할때에는명령어앞에 sudo를붙여서해당명령에대해슈퍼유저권한을획들할수있다. 본교재에서는시스템환경구성, 파일시스템포팅등과같은내용에서슈퍼유저권한으로실행하도록구성되었다. 2
따라서다음부터의작업은모두관리자계정으로접속해서진행하도록하겠다. 아래처럼 sudo su 명령어를입력해주고로그인계정비밀번호를입력하면된다. 이때입력시보이지않으므로잘못입력하였을시엔터를치고다시시도하면된다. huins@ubuntu:/$ sudo su [sudo] password for huins: root@ubuntu:/home/huins# 1.1.2. 라이브러리설치 32bit 호환라이브러리설치 64bit의호스트를설치한경우 CD에포함된툴체인이나기타바이너리들은 32bit용으로배포가되므로사용하지못한다. 따라서 64bit 환경에서 32bit 라이브러리및바이너리를사용할수있도록호환해주는라이브러리를별도로설치해주도록한다. root@ubuntu:/# dpkg --add-architecture i386 && apt-get update root@ubuntu:/# apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 Build-essential 패키지설치 개발에필요한기본라이브러리들과헤더파일등이포함되어있는패키지이다. root@ubuntu:/# apt-get install build-essential 3
2. 리눅스호스트활용 2.1. 리눅스명령 리눅스시스템을사용시, 사용빈도가높은기본적인명령어들을소개하고사용 법을설명하겠다. 2.1.1. adduser / useradd 리눅스시스템에사용자를추가해주는명령이다. 리눅스시스템에아이디를추가해주려면, 슈퍼유저권한으로로그인을해야한다. 1 명령어기본형식 adduser와 useradd의기본형식은아래와같다. adduser [option] [ 만들 ID] 2 전형적인사용예시아래의예시는 kittens라는사용자를만들어주는예시이다. 별도의옵션을등록하지않으면, 사용자 kitten은자신의그룹을별도로만들고, 홈디렉터리는 /home/kittens가된다. 아래와같은명령으로사용자를등록하게되면, 사용할패스워드를물어오게되는데, 패스워드를입력하여사용자등록을완료한다. root@ubuntu:/# adduser kittens 4
2.1.2. deluser 리눅스시스템에등록된사용자를삭제하는명령이다. 1 명령어기본형식 deluser [option] 사용자ID 2 전형적인사용방법 사용자를만들때와마찬가지로명령뒤에삭제하려는사용자 ID 를붙여주면된다. deluser kittens 2.1.3. passwd 사용자의패스워드를만들거나변경해주는명령어이다. 만들어진패스워드는암호화되어 /etc/passwd파일에저장된다. 암호는최소한 6자이상이어야하며, 8자이상을권고하고있으며, 대문자및소문자등을구분하기때문에신중하게결정해야한다. 1 명령어기본형식 passwd [option] 사용자 ID 2 일반유저가자신의패스워드변경시자신의패스워드를바꿀경우에는 passwd만입력해도되고, 슈퍼유저가일반사용자의패스워드를변경해줄경우사용자 ID까지입력해주면된다. 예를들면사용자가자신의패스워드를변경하려면아래와같이하면된다. kittens $ passwd Changing password for user kittens (current) UNIX password: New UNIX password: 3 슈퍼유저가일반사용자의비밀번호를변경할경우 만약, 슈퍼유저의권한으로로그인했을경우, 다른사용자의 passwd 바꾸려면 아래와같이할수있다. 5
# passwd kittens Changing password for user kittens New UINX password: retype new UNIX password: 2.1.4. mkdir 디렉터리를만드는명령이다. 디렉터리및파일테스트는 /root 사용자디렉터리에서테스트를하는것이안전하다. 슈퍼유저권한인경우삭제명령을잘못사용하게되면시스템이지워질수도있기때문이다. 1 명령어기본형식 mkdir [option] [Directory Name] 2 전형적인사용예시아래의명령이실행되면, 현재자신이위치한디렉터리에서브디렉터리로 cmd_test라는디렉터리가생성된다. root@ubuntu:/# mkdir cmd_test 3 상대경로를이용한디렉터리만들기현재위치한경로에서부터디렉터리를따라간뒤해당디렉터리를만들게된다. 아래의예시를보면, 위에서이미만든 cmd_test라는디렉터리내부에 md라는디렉터리를만들게된다. root@ubuntu:/# mkdir./cmd_test/md 4 절대경로를이용한디렉터리만들기 6
절대경로를이용하는경우에는, 리눅스의최상위시스템부터경로를따라가서디렉터리를만들게된다. 즉, 최상위디렉터리인 / 를기준으로디렉터리경로를따라가서디렉터리를만들게된다. 아래의명령이수행되면, 최상위디렉터리에서부터 /cmd_test 디렉터리의서브디렉터리인 md 디렉터리에서서브디렉터리 abs_md디렉터리를만들게된다. root@ubuntu:/# mkdir /root/cmd_test/md/abs_md 지금까지사용했던명령이최상위디렉터리 (/) 에서부터수행하였다면, 아래와같 은형태의디렉터리가생성이되었을것이다. 2.1.5. cd (chdir) 디렉터리를이동하는명령 1 명령어기본형식 cd [-L -P] [directory name] 2 전형적인사용예시앞에서만들었던디렉터리를사용할경우의예시는아래와같다. 우선, 현재디렉터리 ( 최상위디렉터리 ) 내에있는서브디렉터리로이동 (cmd_test) 한다. root@ubuntu:/# cd /root root@ubuntu:/root# cd cmd_test 3 상대경로를이용한디렉터리이동위의명령으로슈퍼유저의홈디렉터리인 /root로이동한다음 cmd_test 디렉터리로이동되었고, 아래의명령이수행되면, cmd_test 디렉터리의서브디렉터리인 md 그리고그리고 md 디렉터리의서브디렉터리인 abs_md 디렉터리로이동한다. 7
root@ubuntu:/# cd./md/abs_md 4 절대경로를이용한디렉터리이동우선최상위디렉터리로재이동한뒤, 절대경로를이용해서, abs_md까지이동하기위해서는아래와같이하면된다. 이전디렉터리만들기의만들어진디렉터리구조를이동하는방법이다. 본페이지가장위의그림을참고하도록하자 root@ubuntu:/# cd /root root@ubuntu:/root# cd /cmd_test/md/abs_md 2.1.6. rmdir 디렉터리관련명령에는 mkdir, chdir(cd), rmdir이있지만, rmdir은일반적으로잘사용되지않는다. 그이유는 rmdir 명령은해당디렉터리에파일이존재하는경우삭제할수없지만, rm은디렉터리뿐만아니라삭제하려는디렉터리내부에파일이존재하는경우에도삭제가가능하기때문에 rmdir명령보다 rm 명령을통한디렉터리삭제가더빈번하게사용된다. 1 명령어기본형식 rmdir [Option] [Directory Name] rmdir 의경우에디렉터리내에서브디렉터리혹은파일이있다면, 삭제되지않는다. 그렇기때문에예시를기존과다르게역순으로해보려한다. 2 절대경로를이용한디렉터리삭제 root@ubuntu:/# rmdir /root/cmd_test/md/abs_md 3 상대경로를이용한디렉터리삭제 root@ubuntu:/# rmdir./cmd_test/md 8
4 현재디렉터리에있는서브디렉터리삭제 root@ubuntu:/# rmdir cmd_test 2.1.7. cat cat(concatenate) 는파일의내용을표준출력으로보내기때문에파일내용을알아보거나여러파일을하나의파일로병합하는경우에사용된다. 표준입력으로부터값을입력받아파일로만들수도있으며파일이름을사용하지않으면표준입력으로부터입력받는다. 1 명령어기본형식 cat [option] [file(s)] 2 표준입력으로데이터받기예시표준입력으로부터값을받아출력방향 (Re-Direction) 을이용하여 test.txt 파일을생성한다. 사용자가 Ctrl + D 를입력할때까지데이터를입력할수있다. root@ubuntu:/# cat > test.txt 3 파일내용확인리다이렉션의방향을바꿈으로써파일내용을확인할수있다. root@ubuntu:/# cat < test.txt 4 파일병합 9
파일 test.txt 와 test2.txt 파일을병합하여, test12.txt 파일로생성 root@ubuntu:/# cat test.txt test2.txt > test12.txt 2.1.8. dmesg 리눅스시스템에서발생하는메시지를보여주는명령이다. 일반적으로임베디드사용자라면더욱많이사용하게되는명령어이다. 새로운장치를연결하거나, 디바이스드라이버내에서 printk등을이용해출력한메시지들을확인하는경우에사용된다. grep 명령어와 pipe를이용해연결하여사용하는경우가일반적이다. 1 명령어기본형식 dmesg [-c] [-n level] [-s bufsize] 2 장치메시지전체출력예시스템이부팅되면서부터, dmesg 명령이수행되기이전까지발생한메시지를출력. root@ubuntu:/# dmesg 3 원하는메시지출력 시스템이부팅되면서부터아래의 dmesg 명령이수행되기이전까지발생한메시 지중에서 usb 라는단어를포함한메시지만화면에출력한다. 10
root@ubuntu:/# dmesg grep usb 2.1.9. rm remove 명령으로, 파일을삭제할경우사용하는명령이다. 파일과디렉터리삭제가가능하므로사용시에신중을기해야한다. 리눅스에서는한번지운파일은복구하기가힘들기때문이다. 1 명령어기본형식 rm [options] file(s) 2 옵션 options 설 명 -f 물어보지않고강제로지운다. -i 각파일에대하여지울것인지묻는다. -r 서브디렉터리를포함한모든내용을재귀적으로지운다. -v 지워지는파일명을출력한다. 3 파일삭제예시 아래명령이수행되면 test.txt 파일을삭제한다. 하지만 rm 의경우일반적으로 rm i' alias 로묶여있다. 그래서아래명령을실행하면삭제할것인지를물어볼 11
수있다. root@ubuntu:/# rm test.txt 4 디렉터리삭제아래명령이수행되면 mydirectory라는디렉터리가삭제된다. 마찬가지로 alias에의해서삭제할것인지를물어볼수있다. root@ubuntu:/# rm r mydirectory 5 무조건삭제아래명령은디렉터리든파일이던상관하지않고모두지우는명령이다. -f 옵션을사용했기때문에물어보지않고지우게되는것이다. 만약, 아래명령이사용자의실수로최상위디렉터리에서수행되었다고생각해보자. 끔찍한일이아닐수없다. 아래의명령어는예시이므로절대실행하지말것 root@ubuntu:/# rm rf * 6 주의사항 rm과 mv는사용시항상주의해야한다. 이유는 -f 옵션때문이다. 가급적이면 -f 옵션은사용하지않는것이좋다. 굳이사용해야한다면실수가없도록반드시미리확인해야한다. 특히, rm의경우파일을연속으로기재하여여러파일들을지우는경우가있다. 이때이런상황을맞이할수있으니조심하기바란다. 필자의경우예전에 test.c 파일과 test.o 파일을삭제하려다두번타이핑하는것이귀찮아서, 와일드카드인 * 를사용하려했다. 그런데키보드상태가좋지않아, 확장자구분인. 가입력되지않은것이다. 아래의명령어는절대실행하지말것 root@ubuntu:/# rm rf test * 12
위의명령을실행하는위치가마침파일시스템의최상위디렉터리였다면어떤일이발생할것으로예상이되는가? 위의명령이실행되는순간리눅스시스템이모두지워져버린다. 위명령은결국 test라는파일과모든파일을다지우라는명령이되어버린것이다. 최상위디렉터리에서위의명령이실행된다는것은수퍼유저권한이므로, 파일뿐만아니라하위디렉터리를포함해서 (-r) 묻지도말고 (-f) 지워라. 라는의미가된다. 귀찮더라도확인하며삭제하는습관을기르는것이좋다. 2.1.10. su 사용자와그룹 ID 를교체하여쉘을실행한다. 즉, 로그인중필요에의해서다른사 용자계정으로변경하는것을말한다. 1 명령어기본형식 su [UserID] 2 사용자변경예시아래는수퍼유저 (root) 가 kittens 사용자계정으로전환하는예제이다. 이경우에는수퍼유저가일반사용자계정으로전환하는것이므로패스워드입력없이바로변경이된다. root@ubuntu:/# su kittens 하지만아래와같이수퍼유저로계정전환을하려면, 패스워드를입력해주어야 한다. 13
kitten@ubuntu:/$ su root Password: 루트권한으로로그인해서 kittens 사용자로변경한뒤에더이상 kittens 계정을사용할필요가없으면, exit를입력해서사용을그만두고계정변경전권한으로되돌아간다. root@ubuntu:/# exit 2.1.11. tar 윈도우즈에서는 zip 형식의파일압축과해제를많이사용하고여러가지편리한툴도많다. 그러나리눅스에서많이배포되는소스들은대부분 bzip 혹은 tar.gz 파일들이다. XWindow를사용하지않는한, 별도로유용한툴이제공되지않기때문에 tar을이용해서압축을하거나해제할수있다. (tar의경우아주많은옵션들을가지고있지만본교재에서는압축을풀고해제하는것과관련된몇가지옵션만을다룬다. tar은패키지로묶을뿐, 압축이라하기에는조금문제가있다. 파일이가지는용량까지줄이는압축을해야하는경우라면 bzip 혹은 zip을이용한다 ) 1 명령어기본형식 tar [option] [archive-file] [files or directories] 2 옵션 14
주요동작모드에서의옵션은다음과같다. options 설명 -t 압축파일의내용을출력 -x 압축파일에서원본내용을추출 ( 압축해제 ) -c 새로운압축파일을생성 -d 압축파일과파일시스템간의차이점을비교 -r 압축파일에다른파일을추가 -u 압축파일안에있는가보다최신의파일만추가 -A 압축파일에다른압축파일을추가 --delete 압축파일로부터제거 -v 처리되는파일을순서대로출력 -f 압축파일혹은압축장치를사용 -z gzip 필터 3 압축해제예시 압축파일이 test.tar.gz면다음과같이압축을해제하면된다. 디렉터리까지통째 로압축하였다면, 현재위치에서해당디렉터리가확인이될것이고, 파일만압축했 다면, 해당위치에압축해제된파일들이생성된다. root@ubuntu:/# tar zxvf test.tar.gz 압축파일이 tar.bz2 면다음과같이압축을해제하면된다. root@ubuntu:/# tar jxvf test.tar.bz2 4 압축을할때 tar.gz로압축을할경우에는다음과같이한다. 아래의명령이수행되면현재위치의디렉터리에서 test_dir.tar.gz 파일을만들고그내용은 mydirectory가된다는이야기이다. 즉, mydirectory가통째로 test_dir.tar.gz라는파일이름으로압축된다. root@ubuntu:/# tar zcvf test_dir.tar.gz mydirectory 파일만압축할경우에는파일이름을넣어주면된다. 15
root@ubuntu:/# tar zcvf test_file.tar.gz test.c 디렉터리내부에있는모든파일및디렉터리를압축하려면와일드카드를이용. root@ubuntu:/# tar zcvf test_file.tar.gz * 2.1.12. ping ping(packet internet gopher) 은자신의네트워크나다른네트워크가통신이잘되고 있는지점검한다. 1 명령어기본형식 ping [hostname or ip] 2 사용예아래의명령이수행되면, KT에서운영하는 DNS로 ping 메세지를보내게된다. 인터넷이연결되었다면, 당연히응답이올것이다. root@ubuntu:/# ping 168.126.63.1 인터넷이아니라, Achro-i.MX6Q 개발보드혹은다른 PC와의통신을확인하려면, 동일네트워크에연결된해당장치의 ip를넣어주면된다. root@ubuntu:/# ping 192.168.1.57 16
2.1.13. apt-get 데비안계열의우분투의패키지관리자이다. 1 명령어기본형식 apt-get [option] [command] 2 사용커맨드일반적으로사용하는것들만소개를하겠다. update : 새로패키지들의리스트를확인 install : 패키지설치 remove : 패키지제거 3 옵션 -h : Help -d : 다운로드만할경우 -u : 업그레이드패키지리스트출력 4 일반적인사용예시 다운로드경로를추가한다음갱신할경우갱신된다운로드경로내용은 /etc/apt/source.list 파일에적용된다. root@ubuntu:/# apt-get update 패키지를다운로드하여설치할경우 root@ubuntu:/# apt-get install vim 설치된패키지를삭제할경우 root@ubuntu:/# apt-get remove vim 2.1.14. dd dd명령은디스크로부터데이터를덤프할경우사용한다. 뿐만아니라덤프된데이터를기록하는경우에도종종이용된다. 본교재에서는환경설정부분에서플래시메모리를초기화하는데사용할것이므로, 지금은명령의내용과사용방법만확인 17
하도록한다. 1 명령어기본형식 dd [Operand]... 2 오퍼랜드일반적인명령에대해서설명한다. bs=byte : 읽거나쓸때한번에기록하는 Byte 크기 (bs=ibs, obs) if=file : 읽어올파일명 of=file : 기록할파일명 seek=blocks : 선택된파일에서찾을위치 skip=blocks : 입력에서지정된 BLOCKS 만큼 ibs 건너뛰고입력을시작 count=block : 복사할블록카운트 3 일반적인사용아래의명령은 u-boot.bin라는파일을입력으로 /dev/sdb라는저장매체의시작부터 512바이트떨어진곳에서부터 1 블록씩기록하되, 8192 블록까지만기록을한다. root@ubuntu:/# dd if=u-boot.bin of=/dev/sdb bs=1 seek=512 count=8192 18
1. 리눅스설치및활용 2.2. vi에디터학습 vi는리눅스에서기본적으로제공되는에디터이다. vi는텍스트기반의에디터로서, 강력하지만처음접하여서사용할때에는그사용법이다소어렵고불편하다고느끼게된다. 하지만, 제공되는기능들을모두익혔을때에는다른어떤그래픽기반에디터에뒤지지않을만큼편리하고강력함을느끼게된다. 뿐만아니라, 리눅스에서기본적으로제공되는만큼, XWindow가아닌텍스트기반환경에서도충분히활용할수있는유틸리티이다. 그리고교재에서다루고있는 vi는기존 vi의기능확장버전인 vim을사용한다. 2.2.1. vim 다운로드및설치리눅스에서가장오래된텍스트에디터중하나이다. 우분투에서는기본에디터로 vi가설치가되어있으며고전적인터페이스를가진다. 우리는확장된 vi인 vim에디터를다운로드하여사용한다. 아래와같이입력해주고설치여부를물어보면 Y를눌러준다. # apt-get install vim 2.2.2. vim의모드 1 명령모드명령모드는키입력을통해 vi에게명령을하는모드로서커서를이동하거나, 삭제복사, 붙이기등의작업을수행한다. 19
1. 리눅스설치및활용 2 입력모드입력모드는실제로편집을하기위한상태이다. 입력모드에서글자를타이핑하게되면, 타이핑한글자가실제로입력된다. 명령모드에서입력모드로진입하기위해서는 i, a, o, 또는 s키를누르면가능하다. 일반적으로명령모드에서 i키는 input기능키이다. 3 ex모드라인에디터인 ex에디터의기능을사용하는모드이다. vi는 ex에디터를기반으로만들어진에디터이기때문에 ex 에디터의기능을그대로사용할수있다. ex모드를사용할경우, 특정패턴들을특정문자열로대체하는것과같이일괄처리작업에효율적이다. 2.2.3. 파일컨트롤 1 파일열기 수정할파일과함께파일열기 # ls # vim HelloWorld.c 면 파일을열게되면, 파일내용이출력되면서명령모드상태가된다. 종료를하려 :q! 입력하면 vim 에디터가종료된다. 20
1. 리눅스설치및활용 파일을열지않고, vim 실행 # ls # vim vim 명령만입력했을경우에는위와같이간단한사용메시지를볼수있다. 현재바탕에있는글자들은명령모드가아닌, 다른모드에서입력이발생되면사라진다. i 키를눌러서입력모드로바꾸고키보드에서문자를입력하는순간화면이사라지고, 키보드에서입력한글자가출력되는것을확인할수있다. 파일을열지않고 vim실행시파일열기파일을열지않고, vim을실행하게된후에, 편집할파일을열기위해서는 'e' 혹은 'o' 명령을사용하면된다. 아래에서는 o 명령으로 HelloWorld.c를열고자할경우이다. 21
1. 리눅스설치및활용 2 파일저장 편집후파일저장 HelloWorld.c 파일을열어서아래의그림과같이 Hello Earth부분을추가해주었다. 편집된내용을저장하려면 ESC키를눌러서명령모드로바꾸고, ':' 를눌러서 ex 모드로바꾼뒤 w명령을입력하여저장 ("ESC" + ":" +"w") 할수있다. 모드를전환하여저장한다. 다른이름으로저장 22
1. 리눅스설치및활용 다른이름으로내용을저장할경우에는 w명령뒤에파일명을입력해주면된다. 입력모드에서명령모드로이동하기위해서 ESC키를누르고, ex모드로변경하기위해서 ":" 를누른후사용하여야한다. ("ESC" + ":" +"w" + " 파일명 ") 3 vi종료 VI를종료하기전에수정을한파일에대해서처리를결정해주어야한다. 저장하고나가던지 (wq), 아니면그냥종료하던지 (q), 저장않고강제로종료하던지 (q!) 에대해서결정해주어야한다. q명령을통해서종료할경우에는소스의수정이가해지지않은상태에서만가능하다. 즉, 저장을한뒤에만 q 명령을통해서종료할수있는것이다. 저장없이종료를해야한다면 q! 를이용해서강제로종료해주어야한다. 수정한파일저장후 vi 종료 수정한파일저장하지않고종료 23
1. 리눅스설치및활용 2.2.4. ex 모드명령어 1 저장및종료 저장하기위해서는 ex모드로전환해야한다. ESC 키를먼저눌러주고, : 를눌 러서 ex모드로전환한다. command 설 명 : w 저장 : w file file 이름으로저장 : w >> file file에붙여서저장 : q 종료 ( 바뀐부분이있으면, 종료되지않고경고가출력됨 ) : wq! 저장하고강제종료 : o file file을불러옴 : e file file을불러옴 : e 현재열었던파일을다시불러옴 : wq 저장하고종료 2.2.5. 입력모드명령어명령모드에서입력모드로전환하기위한명령어는아래와같다. 일반적으로가장많이사용하는명령어는 i 이다. command 설명 a i o s A I O 커서위치다음칸부터입력커서의위치에입력커서의다음행에입력커서위치의한글자를지우고입력커서행의맨마지막부터입력커서행의맨앞부터입력커서의이전행에입력 cc 커서위치의한행을지우고입력 1 이동 - 명령모드에서커서이동 24
1. 리눅스설치및활용 command 설명 h j k l w b 좌측이동우측이동위로이동아래로이동좌측이동아래로이동위로이동우측으로이동단어의첫글자로이동단어의마지막글자로이동 { 이전문단으로이동 } 다음문단으로이동 M :[n] gg G 커서를화면중앙으로이동 n행으로이동문서의시작위치로이동문서의끝위치로이동 - 입력모드에서의커서이동 command 설명 좌측이동우측이동위로이동아래로이동 25
1. 리눅스설치및활용 2.2.6. 명령모드 1 삭제 명령모드에서삭제에관련된명령어들은아래와같다. command 설명 x dl dw D dd 커서위치의글자삭제커서위치의글자삭제커서위치의한단어를삭제커서위치부터행의끝까지삭제커서가있는행을삭제 2 복사및붙이기명령 command 설명 yw yy [n]yy p [n]p dd 한단어복사하기한라인복사하기 n의상수값만큼라인을복사하기붙이기 n의상수값만큼붙이기반복삭제명령이지만, 삭제시내용이버퍼에저장되므로 p를이용하여이전에삭제된내용을붙일수있다. 레지스터에저장된내용을보려면 :reg 명령을이용해서볼수있다. 26
1. 리눅스설치및활용 3 블록지정 명령모드에서일정부분에대해서블록을지정할수있다. v 키를누르면, 해당 부분이영상처리되며블록이지정되는것을확인할수있을것이다. 블록지정후사용할수있는명령 command 설명 y d 복사 삭제 > 행앞에탭삽입 < 행앞에탭제거 : 선택영역에대해 ex 명령 U u 대문자로바꿈 소문자로바꿈 4 되살리기와되돌리기 command 설명 ctrl + r u 되살리기 실행취소 5 문자열찾기문자열을찾기위해서는 / 뒤에검색하고자하는문자혹은문자열을입력하면된다. 아래의명령은현재수정하고있는파일내용에서 search라고입력된문자열을찾아준다. /search 문자열찾기에서사용할수있는명령 command 설명 b n 이전에매칭된문자혹은문자열 다음매칭될문자혹은문자열 27
1. 리눅스설치및활용 6 문자열치환 문자열치환 (replace) 을하려면, 기본적인정규식은알아야한다. 관련정규식은 vim 의 man page 를확인하기바란다. 몇가지자주사용되는예를들어보겠다. command 설명 :%s/windows/linux/g :-2,+5s/cat/dog/g 문서전체에서문자열 windows를문자열 linux로바꿈커서의현위치로부터위로 2줄, 아래로 5줄에포함된문자열 cat을 dog로바꿈. :%s/hong/hong/gc 문서전체에서문자열 hong 을 HONG 으로바꿈. 단, 사용자의교체여부를확인함. vi 의경우에암기를해서사용하는것이아니라, 몸으로익혀사용하는에디터이 다. 많이사용할수록시간이지난후에더강력한기능을자유롭게쓸수있기때 문에스스로많이사용해보는것을권한다 28