Linux, Vim, Toy SPARCS FRESHMAN SEMINAR 2015-10-08 SAMJO
Index Linux Directory Structures Commands Vim Modes Commands Toy
Before Start, 기초적인 Linux 와 Vim 을아신다면매우지루한세미나입니다. 재미없어서죄송합니다아아아아. 근데모르신다면집중해서들어주세요! 특히 vim 을모르시면뒤에세미나 (frontend, backend) 가힘들어집니다.
Operating System is system software that manages computer hardware and software resources 프로세서 / 메모리관리 I/O 요청제어 네트워크 예 : Windows, Mac OS X, Linux, Solaris,
OS Structure Kernel 운영체제의핵심 프로세스, 메모리등하드웨어를관리 제한된리소스를관리 보호된메모리를사용 Shell 사용자와운영체제사이의층 명령어를입력받아 kernel에전달 예 : sh, bash, zsh, csh,
Linux is a Unix-like and mostly POSIX-compliant computer operating system assembled under the model of free and open source software development and distribution Linus Torvalds(1969~) 에의해개발 가볍고안정적, 다양한하드웨어지원 대부분오픈 - 소스이며무료
Linux Distribution Debian: SPARCS 서버대부분이사용 Ubuntu: 개인데스크탑용으로많이사용 Mint Elementary OS Fedora Red Hat Enterprise Linux CentOS: 매우안정적이며, 서버로많이사용 Gentoo Chrome OS
Directory Structure /bin /boot /dev /etc /home /lib /lost+found /opt /root /sbin /tmp /usr /var
/home Your House 숙제, 프로젝트등작업공간 C:\Users\[username] 같은곳 /home/[username] 에서작업하면됨 /home 이나 /home/[ 남의 username] 에서작업하면안됨 어차피여러분은권한이없을것임ㅅㄱ
/bin, /boot, 각종실행파일, 설정, 부팅관련된파일이저장되는곳 C:\Windows, C:\Program Files, C:\Program Data 같은곳 잘못건드리면서버에문제가생김 삭제, 이동, 이름바꾸기, 내용바꾸기등등 어차피여러분은권한이없을것임ㅅㄱ 자세히알고싶다면, google.com 또는휠세미나!
Secure SHell 두가지의서버접속방법 서버컴퓨터에마우스랑키보드 10 개씩꽂아서접속 인터넷을통한원격접속 서버접속에관련된프로토콜 Telnet 뭔지모르겠지만쓰지말자 Secure Shell 이걸쓰자 Putty 를사용하여서버에접속 newbie.sparcs.org / port 22
Commands 계정관련 passwd 매뉴얼 man 파일관련 cp, rm, mv mkdir, rmdir ln, tar du 경로및디렉터리 pwd cd ls 출력 cat, more, less, wc grep touch, vi
Commands 프로세스 jobs, ^Z, fg, bg, & 원격접속 ssh, scp 기타 who, which alias history 파일디스크립터 Wildcard Pipe Redirection
passwd (password) 사용자계정의비밀번호를변경 passwd [username] 계정이름이생략될경우, 자신의계정을의미 여러분은다른계정의비밀번호를바꿀수없음 남에게털리지않도록기본비밀번호를바꾸자
man (manual) 명령어의사용설명서 삽질하기전에이걸읽거나구글링을먼저해보자 man [command]
pwd (print working directory) 현재작업중인디렉터리를표시
cd (change directory) 현재작업중인디렉터리를다른디렉터리로변경 cd [target]. : 현재디렉터리..: 상위디렉터리 ~: 홈디렉터리 (/home/[ 아이디 ] 또는 /root) 상대경로사용가능 /data/web/dev/apps/abc -> /data/web/real/ cd../../../real
ls (list) 디렉터리안의파일을나열 ls [option] [directory] -l (long): 권한, owner, owner group 등세부정보표시 -a (all): 숨김파일포함 (c.f: 이름이. 로시작하는파일 ) -R (recursive): 하위디렉터리포함 -d (directory): 내부를리스팅하는대신디렉터리자체의정보를출력
cp (copy), mv(move) 파일을복사 (Ctrl+C & Ctrl+V) 파일을이동 (Ctrl+X & Ctrl+V) cp [option] [source] [target] -r (recursive): 해당파일및하위파일까지모두복사 ( 디렉터리복사시가능 ) mv [option] [source] [target]
rm (remove) 파일을삭제 주의 : 휴지통그런거없음, 한번삭제하면끝임ㅅㄱ rm [option] [source] -r (recursive): 해당파일및하위파일까지전부삭제 ( 디렉터리삭제시사용 ) -f (force): 묻지않고강제로삭제
sudo rm -rf / --no-preserve-root 다음과같은 2 단계또는 5 단계의과정을자동으로실행 남의서버인경우 1. 서버주인을당신의앞으로소환 2. 서버주인이당신을죽이게함 내서버인경우 죽음의 5 단계 : 부정 -> 분노 -> 공포 -> 흥정 -> 자살
mkdir, rmdir (make / remove directory) 디렉터리를생성 / 삭제 mkdir [option] [target] -p: 중간디렉터리가존재하지않을경우자동으로생성 예 : mkdir -p a/b/c/d/e/f/ rmdir [option] [target] 디렉터리가비어있을때만삭제됨 -p: 하위디렉터리를모두삭제 ( 단, 모든하위디렉터리가비어있어야함 )
ln (link) 바로가기를생성 ln [option] [target] [link name] -s (symbolic): 심볼릭링크를생성
Symbolic Link vs Hard Link
tar 파일을모으고 (.tar) 압축 (.gz) tar [option] [dest] [file1] [file2] option -c(create) : 압축하기 -v(verbose) : 진행상황화면에보여주기 -x(extract) : 압축풀기 -z(gzip) : gzip으로압축 / 해제 -f(file) : 압축결과를파일로저장하기
tar tar.gz 압축하기 파일을모은후 (.gz) 압축 (.tar) 하여야함 tar cvzf dest.tar.gz a b c d tar.gz 압축풀기 압축을푼다음파일을나눠야함 tar xvzf alzip.tar.gz
du 지정된디렉터리나파일의용량을출력 du [option] [file/dir] -s: 현재디렉터리의사용량만확인 -h: human-readable한수치로바꿔줌 (K, M, G, T ) file/dir 부분이생략된경우현재디렉터리
cat (concatenate) 파일내용을읽어서 stdout 으로내보냄 cat [option] [file1] [file2] -n: 줄번호표시
more 내용을앞에서부터화면에꽉차게출력 more [file] 한줄이동 : 한페이지이동 : 나가기 : Enter Space q git diff 를하면기본적으로 more 로뜸
less more 보다더많은기능지원 less [filename] /[keyword] : [keyword] 검색 n으로이전, N으로다음검색. :[line] : [line] 번줄로이동 v : 편집모드 나머지명령어는밑의링크를참고 http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for-effective-navigation/ http://linuxaria.com/howto/bash-linux-less?lang=en
wc(word count) 줄수, 단어수, 바이트수를셈 wc [filename]
grep (global regular expression print) 주어진 regular expression 과맞는줄을찾아출력 grep [option] [keyword] [file] option -i : 대소문자구분안함 -w : 독립적인단어로검색 -w로 apple을찾으면 pineapple을가진줄은출력이안됨
Regular Expression CS322 를들으면됨 (regex101.com)
touch 파일의수정시간을수정 touch [option] [file/time] option -r [file1] [file2] file2의수정시간을 file1과같게한다. -t [time] [file] file의수정시간을 time이되게한다. [time] 은 YYYYMMDDhhmm
vi / vim (vi improved) Emacs 와함께신성한편집기 vi [file1] [file2] 이렇게간단하면얼마나좋을까요 Linux 명령어뒤에자세하게설명함 더자세한 vi 의사용법은아래링크를참고해서자습하면됨 http://vim-adventures.com/
jobs / ^Z jobs 현재작업중인프로세스들을출력한다. Ctrl+Z 실행중인프로그램을정지하고, background 로보냄 Background: 실행중이나사용자에게보이지않는프로세스 Foreground: 실행중이며사용자에게보이는프로세스
bg(background), fg(foreground), & fg [process] [process] 를 foreground 상태로만듬 bg [process] 프로세스를 background 에서실행되게함 [process] & 프로세스뒤에 & 를붙이면 background 상태로시작
ssh (Secure Shell) 원격컴퓨터에접속하여작업할수있게해줌 ssh [option] [user@][computer] -P [number]: 포트번호지정 [user@] 부분이비어있으면같은아이디로접근시도
scp (Secure Copy) 암호화된통신을사용하여파일을전송 scp [option] [file] [user@][computer:directory] samjo$ scp P 1234 test.txt sambradjo.net/data/abc/ sambradjo.net 에 samjo 라는계정으로포트 1234 를사용하여접속 현재경로의 test.txt 를원격서버의 /data/abc/ 로전송
Wildcard * 0개이상의문자를표현 Ex: 뀨 * 뀨, 뀨뀨, 뀨냥, 뀨냐아앙, 뀨냐아앙? 딱 1개의문자를표현 Ex : 뀨? 뀨냥, 뀨꺆, 뀨뀨, 뀨?
Pipe 한명령어의 stdout 을다른프로그램의 stdin 으로연결 standard i/o ex ps aux vs ps aux more ps aux grep manage.py
Redirection 입력과출력을방향전환또는 redirect cmd > file: cmd 의 stdout 을 file 에저장 cmd < file: file 을읽어 cmd 의 stdin 으로보냄 ex: ls /home > home-list.txt ps aux grep manage.py > django-list.txt mysql uroot p < some.sql
who / which who: 현재누가접속해있는지보여줌 which [program]: program 이설치된경로를출력 which kill: /bin/kill
alias 명령어의별칭을정함 주로긴명령어를줄이는데사용함 alias short= long long long long command ex: alias sp= ssh p20140545@vc233.kaist.ac.kr
history 이전에실행했던명령어를보여줌 history -c 를치면기록이삭제됨 Ctrl+R 을누르면키워드검색가능 위 / 아래방향키로이전 / 다음명령어를가져옴
VIM 무시무시하고기기괴괴한편집기 많이사용하는편집기 emacs, nano, 모드 (mode) 가존재 Normal: 각종명령 ( 이동, 수정, 삭제, 검색 ) 등을할수있는상태 Input: 데이터를입력하는상태 Visual, Select, Replace 등다양한상태가존재 https://rawgit.com/darcyparker/1886716/raw/eab57dfe784f016085251771d65a75a471ca22d4/vimmodestatediagram.svg 기본은 normal node
VIM mode Normal -> Input: i: 현재위치부터입력 a: 현재위치다음부터입력 I, A, o, O, Input, Visual -> Normal: Esc
Commands - 이동 h/j/k/l : 왼쪽 / 아래 / 위 / 오른쪽 ( 물론방향키사용가능 ) -: 줄의처음으로 e / w: 다음단어의끝 / 처음 $: 줄의마지막으로 Shift+g: 문서의마지막으로 gg: 문서의처음으로 [ 숫자 ]g: 숫자번째라인으로
Commands 선택및복사 v: 이동명령인 hjkl 및방향키로범위지정 Shift+v: 라인단위로범위지정 Ctrl+v: 사각형으로범위지정 y: 지정된블록을복사 p: 현재라인아래에붙여넣기 d: 지정된블록을잘라내기 dd: 현재라인을잘라내기
Commands - 검색 / 기록 /[regex]: 앞에서부터검색?[regex]: 뒤에서부터검색 n / N: 다음 / 이전찾기 u: 실행취소 Ctrl+R: 재실행
Commands 파일 / 창 :e [file]: 파일열기 :q / :q! / :wq: 종료 / 강제종료 / 저장후종료 :w / :w [file]: 저장 / 다른이름으로저장 :sp / :vp: 세로 / 가로로창나누기 Ctrl+ww: 다음창으로이동 Ctrl+wh/j/k/l: 각방향의창으로이동 Ctrl+w=: 창크기같게만들기
Commands 사실이거말고명령어는매우많음 쓰다보면자연스럽게외우게됨 다만, 파일열기 / 저장 / 종료, normal<->insert 모드전환은알고있어야 더배우고싶다면 vimtutor 또는 vim adventure, Google- 갓을애용하면됨
.vimrc Vim 의설정파일 Syntax highlighting, 탭크기지정, 탭 <-> 스페이스전환 마우스사용모드, 빈줄 highlight,. Google 에검색해서알맞은 vimrc 를깔면됨 ex: https://github.com/amix/vimrc
Toy ( 장난감 ) 사전적의미 [ 명사 ] 아이들이가지고노는여러가지물건 [NOUN] A toy is an object that children play with, for example a doll or a model car 이세미나에서의의미 SPARCS에서개발하고사용하는작은프로그램들 자주쓰는것 : NUGU( 회원정보 ), EDALIAS( 메일구독 ) 안쓰는것 : MAILPATCHER( 아이디삽입 ) 더안쓰는것 : SEMINAR( 세미나업로드 ), GEOGY( 도메인주소생성 )
nugu SPARCS 회원의정보를알수있음 nugu [option] [name] -h: 도움말표시 -s: 이름 /ID 검색 -l: 모든회원출력 -e: 본인정보수정
nugu example nugu 회원목록을표시 nugu samjo ID samjo 의정보를표시 nugu -s 성원 성원이라는이름을가진사람을검색 nugu -e 자신의정보를수정 nugu -l grep 조 조라는단어가프로필에포함되어있는사람을검색
nugu practice 1. 자신의정보를등록하세요. 2. 휠최고 - 존엄조현성회원님의전화번호를얻으세요. 3. SPARCS 14 학번의정보를찾아보세요.
edalias 메일리스트구독을할수있는프로그램 edalias 구독가능한모든메일리스트가표시됨 # 을지우면해당메일리스트를받아볼수있음 메일리스트추가 / 비공개메일리스트구독불가 wheel 에게문의하시면됩니다. 또는 wheel 이되시면됩니다.
.forward 자신의메일계정으로 sparcs 메일을연결해야함 예 : samjo@sparcs.org => a1sams1a@gmail.com ~/.forward 파일을열어 ( 만들어 ) 자신의이메일주소를넣으면됨
mailpatcher 이름옆에아이디를붙여줌 주로회의록을정리할때사용함 회장이아니라면쓸필요가없음 mailpatcher 실행후 input, output 파일이름을입력하면됨
mailpatcher example 무엇인가문제가있어 13 학번이후로는잘안되는듯하다
Q&A END OF THIS SEMINAR
References http://en.wikipedia.org/ http://sparcs.org/seminar/ 2014 가을신입생세미나 리눅스 / 장난감 by suckzoo 2014 봄학기신입생세미나 TOY by egg 2013 봄신입생세미나 #4 Vim by yumgyun