550 likes | 834 Views
2. 일반 사용자를 위한 유닉스. 시동과 종료 로그인 (login) 사용자 ID 와 패스워드를 입력 사용자 ID 는 다른 사용자와 구분해 주는 고유 이름. login: // 사용자 ID 입력 password: // 사용자 패스워드 입력. 2. 일반 사용자를 위한 유닉스 ( 계속 ). 로그인 실패 시 로그인 후 첫번째 메시지. Login incorrect login: // 다시 로그인 시도.
E N D
2. 일반 사용자를 위한 유닉스 • 시동과 종료 • 로그인(login) • 사용자ID와 패스워드를 입력 • 사용자ID는 다른 사용자와 구분해 주는 고유 이름 login: // 사용자ID 입력 password: // 사용자 패스워드 입력
2. 일반 사용자를 위한 유닉스(계속) • 로그인 실패 시 • 로그인 후 첫번째 메시지 Login incorrect login://다시 로그인 시도 Last login: Mon Mar 8 16:13:30 from netwk.hannam.ac.kr Sun Microsystems Inc. SunOS 5.5.1 Generic May 1996 # _
2. 일반 사용자를 위한 유닉스(계속) • 패스워드 설정과 변경 • 일반적으로 6문자 이상 입력 • /etc/passwd에 암호화된 형태로 저장 # passwd passwd: Changing password for james Enter login password: // 현재 패스워드 입력 New password: // 새로운 패스워드 입력 Re-enter new password: // 새로운 패스워드 재입력 # _
2. 일반 사용자를 위한 유닉스(계속) • 로그아웃(logout) 사용자가 컴퓨터 시스템 사용을 종료하고자 할 경우, 그 시스템으로 부터 빠져 나오는 과정 # logout 또는 # exit 또는 # ^D
2. 일반 사용자를 위한 유닉스(계속) • 유닉스 명령 형식 • 명령어는 반드시 소문자로 입력한다. • 명령어와 옵션, 옵션과 인수 사이에는 한 개 이상의 공백이 있어야 한다. 명령어[ - 옵션인수] 명령 수행의 대상 명령 수행의 방법 작업 지시어
2. 일반 사용자를 위한 유닉스(계속) • 온라인 도움말 정보(man: manual page) man [ chapter ] word man -k keyword -k: 키워드 검색 # man -k mode //키워드를 mode로 가지는 도움말 정보 출력 chmod chmod (1) - change the permissions mode of file chmod chmod (2) - change access permission mode of a file def_prog_mode curs_kernel (3x) - low-level curses routines def_shell_mode curs_kernel (3x) - low-level curses routines ….
2. 일반 사용자를 위한 유닉스(계속) • 특수 문자 (메타 문자) • 터미널에 입력되었을 때 특수하게 해석되는 문자 • 메타 문자 목록 얻기 stty all or -a //모든 메타 문자 목록 얻기
2. 일반 사용자를 위한 유닉스(계속) # stty -a // 모든 메타 문자 목록 출력 erase kill werase rprnt flush lnext susp intr quit stop eof ^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # stty kill ^k // 줄 삭제를 ^k로 변경 # stty -a erase kill werase rprnt flush lnext susp intr quit stop eof ^H ^k ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # _
2. 일반 사용자를 위한 유닉스(계속) • 프로세스의 종료: Control-C 작업 완료 이전에 프로세스의 종료 # man man //man에 대한 도움말 정보 man(1) User Commands man(1) NAME man - find and display reference manual pages SYNOPSIS man [ - ] [ -adFlrt ] [ -M path ] [ -T macro-package ] [-s section ] name ... man [ -M path ] -k keyword … ^c // 작업의 종료 # _
2. 일반 사용자를 위한 유닉스(계속) • 출력의 정지: Control-S / Control-Q • ^S: 터미널 출력의 일시 중시 • ^Q: 터미널 출력의 재개 # man ls ls(1) User Commands ls(1) NAME ls - list contents of directory SYNOPSIS ^S //터미널 출력의 일시 중지 ^Q // 터미널 출력의 재개 /usr/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] /usr/xpg4/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] SUNWcsu
2. 일반 사용자를 위한 유닉스(계속) • 입력의 끝: Control-D # cat > test In my dreams that fill the night, I see our eyes ^D // 입력의 끝 # _
2. 일반 사용자를 위한 유닉스(계속) • 작업 디렉토리 확인(Print Working Directory) pwd # pwd // 현재 작업 디렉토리를 출력 /user/james # _
cat -n { filename } -n: 출력에 줄 번호 표시 2. 일반 사용자를 위한 유닉스(계속) • 화일 생성: cat 표준 입력이나 파일로부터 입력 받아 이를 표준 출력에 표시한다. # cat > test // 키보드 입력을 test파일에 저장 hi! I hope that you get this file. ^D # cat -n test //줄 번호를 포함한 파일의 내용보기 1 hi! 2 I hope that you get this file. # _
2. 일반 사용자를 위한 유닉스(계속) # cat test // 줄번호를 포함시키지 않고, test파일 보기 hi! I hope that you get this file. # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 내용 보기: ls ls -adglsFR {filename} {directoryname} -a : 숨겨진 파일 나열 -d: 디렉토리 자체의 상세 정보 -g: 파일의 그룹 정보 -l: 허가정보, 소유권, 최종변경일자를 포함하는 긴 목록 제공 -s: 파일들이 차지하는 크기를 디스크 블록 단위로 제공 -F:파일 이름 다음에 파일의 특성을 나타내기 위한 문자 제공 -R: 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 제공
2. 일반 사용자를 위한 유닉스(계속) # ls // 현 디렉토리의 모든 파일 출력 heart heart1 heart2 tmp # ls -a // 숨겨진 파일 출력 . .. heart heart1 heart2 tmp # ls -l // 허가정보, 소유권 등을 포함한 긴 목록 제공 -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart -rw-r--r-- 2 james netwk 135 5월 27일 11:19 heart1 -rw-r--r-- 2 james netwk 133 5월 27일 11:19 heart2 drwxr-xr-x 2 james netwk 512 5월 27일 16:55 tmp # ls -R // 디렉토리 내용과 그 서브 디렉토리 내용을 재귀적으로 출력 . : heart heart1 heart2 tmp . /tmp: test1 test2 test3 # _
more -f { +lineNumber} {fileName} -f: 긴 라인을 연속적으로 출력 +lineNumgber: 시작 번호 명시, 디폴트는 첫번째 줄부터 시작 2. 일반 사용자를 위한 유닉스(계속) • 파일의 내용보기: more/ page/ head/ tail • more: 한번에 한 페이지씩 출력 • page: 각 페이지를 화면에 표시하기 전에 전체 화면을 지우는 것을 제외하고는 more와 동일
head -n {fileName} -n: n 번째 라인까지 출력, 디폴트는 10 tail -n {fileName} -n: 마지막 줄에서 n번째 라인의 줄부터 출력 2. 일반 사용자를 위한 유닉스(계속) • head: 파일의 처음 n줄을 출력 • tail: 파일의 마지막 n 줄부터 출력
2. 일반 사용자를 위한 유닉스(계속) # cat > heart //heart 파일 생성 I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. ^D # head -2 heart //heart 파일의 첫번째 두줄 출력 I hear her breathing, I'm surrounded by the sound. # tail -2 heart // heart 파일의 마지막 두줄 출력 Floating in this secret place, I never shall be found. # _
2. 일반 사용자를 위한 유닉스(계속) • 파일의 이름 변경 및 이동: mv mv -i oldfile newfile // oldfile을 newfile로 변경 mv -i {filename} directoryname // filename을 directoryname으로 이동 mv -i olddirectory newdirectory // olddirectory을 newdirectory로 변경 -i : 새로운 파일 이름이 이미 존재하는 경우를 위한 확인 프롬프트 생성
2. 일반 사용자를 위한 유닉스(계속) # ls -R // 현재 디렉토리 목록을 재귀적으로 출력 . : old.txt tmp ./tmp: test # mv old.txt new.txt // old.txt를 new.txt로 이름을 변경 # ls new.txt tmp # mv tmp temp // tmp 디렉토리를 temp 디렉토리로 변경 # ls new.txt temp # mv -i new.txt temp // new.txt를 temp 디렉토리로 이동 # ls -R . : temp ./temp: new.txt test # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 만들기: mkdir mkdir Directoryname # ls -l -rw-r--r-- 1 james netwk 133 5월 27일 11:19 temp.txt # mkdir newdir // newdir 디렉토리 생성 # ls -l drwxr-xr-x 2 james netwk 512 5월 30일 22:01 newdir -rw-r--r-- 1 james netwk 133 5월 27일 11:19 temp.txt # _
2. 일반 사용자를 위한 유닉스(계속) • 다른 디렉토리로 이동: cd cd [Directoryname] Directoryname의 인수가 없는 경우에, 사용자의 홈 디렉토리로이동 # pwd /user/james/tmp # cd temp //temp디렉토리로 이동 # pwd /user/james/tmp/temp # cd // 사용자의 홈 디렉토리로 이동 # pwd /user/james # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 복사: cp cp -i oldfile newfile cp -r olddirectory newdirectory - i : 이미 존재하는 경우를 위한 확인 옵션 - r : olddirectory내에 있는 모든 파일과 서브디렉토리를 재귀적 으로 newdirectory에 복사
2. 일반 사용자를 위한 유닉스(계속) # ls -l drwxr-xr-x 2 james netwk 512 6월 17일 10:30 tmp -rw-r--r-- 1 james netwk 124 6월 17일 19:37 text # cp text newtext // text를 newtext로 복사 # ls text newtext tmp # cd tmp # ls -l drwxr-xr-x 2 james netwk 512 6월 20일 19:37 sub_tmp -rwxr-xr-x 3 james netwk 215 6월 20일 10:30 data.txt # cd .. # cp -r tmp tmp2 // tmp를 tmp2에 재귀적으로 복사 # cd tmp2 # ls -l drwxr-xr-x 2 james netwk 512 6월 22일 16:07 sub_tmp -rwxr-xr-x 3 james netwk 215 6월 22일 16:07 data.txt # _
2. 일반 사용자를 위한 유닉스(계속) • 디렉토리 제거 • rmdir {directoryname} 디렉토리가 제거 되기 전, 그 디렉토리내에 있는 모든 파일은 제거되 어야 한다. rm -r : 디렉토리와 그 내용 모두를 재귀적으로 제거 # rmdir temp rmdir: 디렉토리 ”temp": 디렉토리가 비어 있지 않음 # rm -r temp # ls # _
-f : 어떤 에러 메시지나 지시 사항도 나타내지 않는다. -r: 서브디렉토리를 포함한 모든 내용을 재귀적으로 삭제 -i: 화일 삭제 전 사용자에게 확인 요구 2. 일반 사용자를 위한 유닉스(계속) • 파일의 삭제 rm -fir {filename} # ls file1 file2 file3 # rm * //해당 디렉토리내의 모든 파일 삭제 # ls -a . .. // 해당 디렉토리내에 파일이 존재하지 않음 # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 내 단어 수 세기: wc wc -lwc {filename} - l : 줄 수 - w : 단어 수 - c : 문자 수 # cat heart I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. # wc -lwc heart 4 19 106 heart // 줄, 단어, 문자 순으로 출력 # _
필드 값 -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart 2. 일반 사용자를 위한 유닉스(계속) • 화일 속성 • 필드의 속성 # ls -l heart -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart 의 미 허가권 모드 하드 링크 갯수 파일 소유자의 사용자 ID 파일의 그룹ID 파일의 크기, 단위는 바이트 파일이 마지막으로 변경된 시간 파일 이름
문 자 파일 유형 - 일반 파일 d 디렉토리 파일 b (디스크 드라이브와 같이) 버퍼된 특수 파일 c (터미널 같이) 버퍼되지 않은 특수 파일 l 심볼릭 링크 p 파이프 s 소켓 2. 일반 사용자를 위한 유닉스(계속) • 파일 유형 첫번째 필드의 첫번째 문자는 다음과 같이 부호화된 파일의 유형을 나타내고 있다.
읽 기 허가 쓰기 허가 실행 허가 r w x 2. 일반 사용자를 위한 유닉스(계속) • 화일 허가권 • 하드 링크 계수 : 얼마나 많은 레이블이 동일한 물리적 파일을 가리키는 가를 표시 r w - r - - r - x User group others
2. 일반 사용자를 위한 유닉스(계속) • 그룹 목록 보기: groups groups [userID] # groups netwk # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 그룹 변경: chgrp chgrp -R groupID {fileName} -R: 디렉토리내에 있는 모든 파일의 그룹을 재귀적으로 변경 # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 heart # chgrp ce heart // 파일의 그룹을 ce로 변경 # ls -l -rw-r--r-- 1 kang ce 106 5월 17일 10:05 heart
2. 일반 사용자를 위한 유닉스(계속) • 화일의 허가권 변경: chmod • mode chmod -R mode {filename} -R: 디렉토리내에 있는 파일 모드를 재귀적으로 변경 형식: 대상 + 허가권 대상 - 허가권 대상 = 허가권 대상: u(user), g(group), o(others), a(all) 허가권: r(read), w(wirte), x(excute)
허가권모드 요구 사항 g+w 그룹 쓰기 허가권 추가 u-rw 사용자 읽기 및 쓰기 허가권 제거 a+x 모든 사람에게 실행 허가권 추가 2. 일반 사용자를 위한 유닉스(계속) • mode 예
2. 일반 사용자를 위한 유닉스(계속) # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 data.txt # chmod g+w data.txt //그룹에게 쓰기 허가권 부여 # ls -l data.txt -rw-rw-r-- 1 kang netwk 106 5월 16일 14:25 data.txt # chmod +x data.txt // 실행 허가권을 모두에게 부여 # ls -l data.txt -rwxrwxr-x 1 kang netwk 106 5월 16일 14:25 data.txt # chmod -w data.txt // 모든 사람에게 쓰기 허가권 제한 # ls -l data.txt -r-xr-xr-x 1 kang netwk 106 5월 16일 14:25 data.txt
사용자(user) 그룹(group) 모든 사용자(all) 설정 rwx r-x --- 2진수 111 101 000 8진수 7 5 0 2. 일반 사용자를 위한 유닉스(계속) • 8진수를 이용한 파일 허가권 설정 • 각 8진수는 세 단위(u,g,a) 의 허가권을 나타낸다.
2. 일반 사용자를 위한 유닉스(계속) # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 heart # chmod 750 heart # ls -l heart -rwxr-x--- 1 kang netwk 106 5월 16일 14:25 heart # chmod 777 heart # ls -l heart -rwxrwxrwx 1 kang netwk 106 5월 16일 14:25 heart # chmod 111 heart # ls -l heart ---x--x--x 1 kang netwk 106 5월 16일 14:25 heart
chown -R newUserID {fileName} -R: 재귀적으로 디렉토리내의 파일에 대한 소유권변경 수퍼 유저만이 변경가능 2. 일반 사용자를 위한 유닉스(계속) • 파일의 소유권 변경: chown # ls -l heart -rw-r--r-- 1 kang netwk 106 5월 16일 14:25 heart # chown kim heart // heart의 소유권을 kang에서 kim으로 변경 # ls -l heart -rw-r--r-- 1 kim netwk 106 5월 16일 14:25 heart # _
2. 일반 사용자를 위한 유닉스(계속) • 그룹의 변경: newgrp newgrp [groupID] 수퍼 유저만이 변경 가능 # date > test1 //netwk그룹 쉘로 test1생성 # ls -l -rw-r--r-- 1 james netwk 133 5월 27일 11:19 test1 # newgrpothers // 일시적으로 others 그룹쉘 생성 # date > test2 // others 그룹 쉘로 test2 생성 # ls -l -rw-r--r-- 1 james others 133 5월 27일 11:20 test2 -rw-r--r-- 1 james netwk 133 5월 27일 11:19 test1 # _
2. 일반 사용자를 위한 유닉스(계속) • 전자 우편: mail • 메일 보내기 mail [-v] [-s subject] {address} -v : 메시지 전송 여부의 확인을 위해 자신에게도 메일 전송 -s : subject에 메시지 제목 지정 address: 로그인 이름, 인터넷 주소로서 이름@ 영역 ex) james , james@ce.hannam.ac.kr
2. 일반 사용자를 위한 유닉스(계속) • 간단한 메일 전송 # mail james // james에게 메일 전송 ………….. // 편지 내용 입력 ^D // 입력의 끝, 표준 입력을 전자우편으로 전송 # __ • 파일로 메일 전송 # cat > mail.txt • hi! • How is Amanda doing? • with best regards from Graham ^c # mail james < mail.txt //mail.txt 파일의 내용을 james에게 전송
2. 일반 사용자를 위한 유닉스(계속) • 다중 사용자에게 메일 전송 # mail james june glass // james, june, glass에게 메일 전송 ………….. // 편지 내용 입력 ^D // 입력의 끝, 표준 입력을 전자우편으로 전송 # _
명 령 의 미 ? 도움말 정보 copy [mesg] [filename] mesg를 filename에 복사 delete [mesg] mesg를 삭제 file [filename] 우편함에 있는 filename으로부터 읽어 온다. mail {userID} userID에게 메일전송 print [mesg] more를 이용하여 명세 된 메시지 출력 quit mail 명령 모드에서 빠져 나온다. reply [mesg] mesg를 보낸 송신자에게 회신 save [mesg] [filename] mesg를 filename에 저장 2. 일반 사용자를 위한 유닉스(계속) • 메일 읽기 • 명령 모드에서 사용 가능한 mail 명령 mail // mail 명령 모드로 진입
구 조 의 미 . 현재 메시지 nn 메시지 번호 nn ^ 지워지지 않은 메시지 중 첫번째 $ 마지막 메시지 * 모든 메시지 nn - mm nn부터 mm사이에 포함된 메시지 user user로부터의 모든 메시지 2. 일반 사용자를 위한 유닉스(계속) • 하나 이상의 전자우편 메시지를 나타내는 집합
2. 일반 사용자를 위한 유닉스(계속) $ mail // 명령모드로 진입 mail version 5.0 Thu May 2 21:00:21 PDT 1999 도움말 정보 필요시 ? 입력. "/var/mail/james": 4개 메시지 4개 신규 >N 1 hall Wed Feb 24 23:00 15/353 >N 2 june Wed Feb 24 23:20 15/353 >N 3 glass Wed Feb 24 23:30 15/353 >N 4 kang Wed Feb 24 23:35 15/353 ? 3 // 3번 메시지 선택 Message 3: From glass Wed Feb 24 23:30 KST 1999 Date: Wed, 24 Feb 1999 23:30:47 +0900 (KST) From: glass …………. // 메시지 내용 ?
2. 일반 사용자를 위한 유닉스(계속) ? ^ // 지워지지 않은 메시지 중 첫번째 메시지 Message 1: From hall Wed Feb 24 23:00 KST 1999 Date: Wed, 24 Feb 1999 23:01:57 +0900 (KST) From: hall ……………… // 메시지 내용 ? quit # _
2. 일반 사용자를 위한 유닉스(계속) • 파일 편집: vi • Berkeley의 BSD 유닉스용으로 개발되었고, 현재는 모든 유닉스 시스템에서 사용 가능한 에디터 • 명령 모드와 텍스트 입력 모드가 존재 • vi 에디터의 호출 # vi// 인수 없이 vi 에디터 호출 # vi filename// filename 파일을 편집하기 위해 vi 에디터 호출
2. 일반 사용자를 위한 유닉스(계속) # vi vi_test// 새로운 vi_test파일 • // 커서 위치(입력 라인) ~ // 빈 라인은 ~ (tilde)로 표시 ~ ~ ~ ~ ~ "vi_test" [새 파일] // 마지막 라인
키 의 미 :w <filename> filename으로 저장하고 수행을 계속 :w 현재의 이름으로 저장하고 수행을 계속 :q 편집한 내용이 없을 경우 수행을 종료 :wq 현재의 이름으로 저장하고 수행을 종료 :q! 편집한 내용을 저장하지 않고 수행을 종료 :sh 일시적으로 쉘 프롬프트 상태로 전환(복귀: ^D) 2. 일반 사용자를 위한 유닉스(계속) • 파일의 저장과 종료