430 likes | 913 Views
1. UNIX 소개 및 기본 명령어. UNIX 의 개요 UNIX 의 역사적 배경 UNIX 의 특징 LINUX 의 소개 기본 명령어 연습 문제. UNIX 의 개요. UNIX 란 ? 마이크로컴퓨터에서 메인프레임까지 널리 사용되는 OS(Operating System) 를 포함한 소프트웨어 시스템 (Software System) *OS(Operating System) 모든 컴퓨터 동작을 운영하고 사용자와 시스템 자원들간의 인터페이스를 제공하는 프로그램 집합 UNIX 의 중요한 부분 Kernel( 커널 )
E N D
1. UNIX 소개 및 기본 명령어 UNIX의 개요 UNIX의 역사적 배경 UNIX의 특징 LINUX의 소개 기본 명령어 연습 문제
UNIX의 개요 • UNIX란? • 마이크로컴퓨터에서 메인프레임까지 널리 사용되는 OS(Operating System)를 포함한 소프트웨어 시스템(Software System) *OS(Operating System) • 모든 컴퓨터 동작을 운영하고 사용자와 시스템 자원들간의 인터페이스를 제공하는 프로그램 집합 • UNIX의 중요한 부분 • Kernel(커널) • 흔히 말하는 OS이며, 업무 스케쥴(task scheduling), 메모리 관리(memory management) 등의 작업을 담당 • Shell(쉘) • 명령어 해석기(command interpreter)하고 하며, 사용자의 명령을 받아들여 필요한 프로그램을 호출하고 수행하는 역할을 함 • Utility program(유틸리티) • 사용자의 편의를 위한 여러 시스템 프로그램 즉, 언어처리기(language processor),텍스트 편집기, 시스템 관리 프로그램 등 • File System(파일 시스템)
Application Shell Kernel Hardware UNIX의 개요 • Kernel,shell,hardware의 관계
UNIX의 개요 • Kernel: 실제 유닉스 OS의 핵심이며 다음 역할을 함 • 모든 업무(명령)의 스케쥴링 (scheduling) 및 관리 • 파일 관리 및 보안 • I/O 서비스 • 인터럽트(interrupt) 및 오류 핸들링(error handling) • 시스템 계정 관리 • 다음과 같은 사항의 관리 • 스왑 (swap)공간 • 커널이 처리하는 동안 사용하는 디스크의 예약된 공간 • 데몬(daemon) • 특정 시스템 작업을 수행하는 프로세스 • 파일 시스템 • 디렉토리,하부 디렉토리(subdirectory),파일 계층(file hierarchy) • 디바이스(device), 메모리, 프로세스 • 시스템 프로그램(Utility)과 시스템 하드웨어 사이의 기능(정보의 전송)들을 제어
UNIX의 개요 • Shell • OS의 명령 해석기 역할 • 사용자 명령을 받아들여 이를 해석하고, 필요한 프로그램을 호출하고 이를 수행하는 역할을 함으로써 사용자와 커널 사이의 인터페이스 역할과 해석기 역할을 함 • 구체적인 역할 • 로그인(login)하면 자동적으로 형성되어서 명령 대기 상태(command prompt)에 존재한다 • 입출력 방향 결정 • Foreground, background 처리 • 파이프(pipe) 및 필터 처리 • 일종의 프로그래밍 언어 • 예) Bourne, Korn, C shell, Bash
UNIX의 개요 • Utility Program • 사용자의 편의를 위한 시스템 프로그램 • 사용자의 프로그램 개발도구 이외에 사용자 자신이 작성한 프로그램도 포함 • 파일 시스템 • UNIX OS는 파일에 기반
UNIX의 역사적 배경 • UNIX의 탄생 • 1969년 AT&T의 부설 연구소인 Bell Telephone Lab.에서 Ken Thompson 등에 의해 어셈블리 언어로 개발됨(DEC사의 PDP-7용) • 1972년 Dennis Ritchie가 C언어로 개작 • 이식성이 좋은 C 언어 • 거의 어떤 컴퓨터라도 UNIX 이식 가능 • 1978년 버클리 대학원생들에 의해 네트워크 처리 능력과 메모리 관리시스템을 포함시킨 BSD(Berkely Software Distribution) UNIX가 개발됨 • 1993년 UNIX 표준화 SVR(System V Release 4)를 제정 • 이기종간 호환성 증진과 동일한 사용자 인터페이스 등 개방형시스템에 대한 요구사항을 실현한 표준 • 현재의 UNIX 표준의 기준
UNIX System V 계열 BSD 계열 Businness용 연구개발용 V.2 4.2 IBM AIX V.3 4.3 Apollo V.4 V.4.1 통합 OSF/1 HP/UX UNIX의 역사적 배경 • UNIX의 발전 Sun OS (Solaris)
UNIX의 특징 • 동시에 여러 사용자가 컴퓨터 시스템을 사용 • 프로그램 및 프로세스와 파일의 생성,수정,삭제를 제공 • 프로세스와 파일의 위치를 부여하는 디렉토리 계층 제공 • 공유 자원에 대해 경쟁을 벌이는 프로세스들이 공정하고 효과적인 방법으로 프로세서,메모리,디스크 공간을 공유 • 프로세스와 주변 장치 간의 의사소통을 할 수 있게 하고, 상이한 기계상에서도 의사소통이 가능 • 많은 표준 유틸리티. • 많은 고품질의 상업용 소프트웨어 패키지 제공 • 라이브러리 루틴과 유사한, 잘 정의된 시스템 호출을 통해 프로그래머들이 운영적 특성에 쉽게 접근 • 이식성이 우수한 운영체제
리눅스(Linux)의 소개 • 1991년 리누스 토발즈가 개발한 리눅스 버전 0.0.1을 기초로 만들어짐 • 리눅스의 특징 • 모든 프로그램의 소스는 공개되고 무료임 • 유닉스의 대부분의 표준을 거의 수용 • 저작권은 인정하지만, 프로그램이나 정보의 공유로 인해서 그 누구의 독점도 허용하지 않고, 소스와 함께 공개되어 누구나 자유롭게 프로그램을 해킹할 수 있음 • 강력한 커널인 Mach 커널은 유닉스시스템을 객체지향의 방향으로 이끌고 있음 • 향후 유닉스와 자연스럽게 같이 사용될 전망
솔라시스(Solaris) 소개 • SUN Microsystem에 의해 개발됨. • 솔라리스는 SunOS와 Openwindows를 합친 제품을 말함. • 4.2BSD를 만들던 버클리대학의 빌조이가 SUN社로 옮겨 만든 것이 SunOS
기본 명령어 • 로그인(log in) • 사용자가 적절한 id를 가지고 유닉스 시스템을 사용하기 위해 시스템에 등록하는 절차 보안상의 이유로 패스워드는 터미널 상에 보이지 않음
기본 명령어 • 셸(Shell) • 로그인 후 호출되는 프로그램 • 순수 유닉스 운영체제와 사용자 사이에서 중간적인 매개 역할 • 사용자가 프로그램을 수행하고,프로세스들의 파이프라인을 만들고, 출력을 파일에 저장하며, 동시에 하나 이상의 프로그램을 수행 • 유닉스의 네 가지 셸 • Bash • Bourne • Korn • C =>모두 특별한 특성들을 갖는 유사한 핵심적인 기능을 공유 =>Korn 셸은 Bourne셸을 포함 =>일반적으로 Bourne셸 또는 C셸 중 하나를 선택하여 사용
기본 명령어 • 유틸리티의 실행 • 유틸리티의 이름을 입력하고 엔터키(enter key)를 누름 • 예1)현재의 시간과 날짜를 표시해 주는 date • 예2)화면을 지우는 clear
기본 명령어 • 온라인 도움말 얻기:man • 유틸리티(명령어) 사용에 관한 정보를 보여줌 • 형식 • Man [chapter] word word와 관련된 매뉴얼 내용을 보여줌 만약 장 번호가 명시되지 않는다면 그 word가 발견되는 첫번째 내용을 보여줌 • man –k keyword keyword를 포함하는 모든 매뉴얼 내용을 보여줌
기본 명령어 • 특수 문자 • 프로세스의 종료: Control-C • 프로그램 수행시, 작업이 완료되기 이전에 그 프로그램을 중단할 때 사용 • 출력의 정지:Control-S/Control-Q • 프로세스의 출력이 화면에서 너무 빠르게 진행되면, Control-S로 정지 • 출력을 재개하기 위해 Control-Q 또는 다시 Control-S를 입력 ….작업을 끝내고 셸로 복귀
키보드로부터 친구 initself에게 전자 우편 전송 키보드로부터 입력 더 이상 입력이 없음을 알림 기본 명령어 • 입력의 끝: Control-D • 키보드로부터 입력이 종결되었음을 알려주는 특수문자
기본 명령어 • 패스워드 설정:passwd • 유닉스 시스템에 처음 로그인 한 후에, 초기 패스워드를 보다 개인적인 것으로 변경하는 것이 바람직 • 패스워드는 일반적으로 6문자 이상이어야 하며, 사전상의 단어나 고유명사는 피하는 것이 좋음 • 문자,숫자,특수 문자 등의 조합으로 패스워드를 설정하는 것이 좋음 • 패스워드를 잊어버린 경우, 유일한 해결 방법은 시스템 관리자에게 새로운 패스워드를 요청하는 것
….Control-D 기본 명령어 • 로그 아웃(log out) • 유닉스 시스템을 끝내기 위해 셸 프롬프트 상에서 Control-D를 입력 • 프로세스에게 더 이상의 입력이 없음을 사용자의 로그인 셸에 알림
기본 명령어 • 현재 작업중인 디렉토리의 확인:pwd • 모든 유닉스 프로세스는 계층적 디렉토리 내에 현재 작업중인 디렉토리라고 하는 하는 위치를 가짐 • 사용자가 유닉스 시스템에 로그인하면, 사용자 셸은 “홈 디렉토리(home directory)”라는 특별한 디렉토리에서 시작 • 모든 사용자는 각기 다른 자신의 사용자 훔 디렉토리를 가짐 • 홈 디렉토리는 보통”/usr”로 시작 • 현재 작업중인 사용자 디렉토리를 알기 위해 pwd 유틸리티를 사용
usr bin C tim glass myFile B myFile myFile A 기본 명령어 • 절대 경로 이름과 상대 경로 이름 • 동일한 이름을 갖는 동일한 여러 개의 화일들이 여러 다른 디렉토리에 존재 가능 • 동일한 디렉토리에 동일한 이름을 갖는 2개의 파일은 존재 할 수 없음 • 절대 경로 이름 • 루트 디렉토리에 대한 상대적인 경로 이름 • 상대 경로 이름 • 현재의 작업 디렉토리에 대해 상대적인 경로 이름 ksh프로세스
파일의 절대 경로 상대 경로 이름을 제공할 때 사용될 수 있는 특별한 필드 제공 “/usr/glass”디렉토리에 위치된 “ksh”프로세스에 대한 상대적인 “myFile”의 경로 이름 기본 명령어
기본 명령어 • 파일의 생성:cat • 표준 입력이나 파일로부터 입력받고, 이를 표준 출력 • -n 옵션은 출력에 줄 번호를 덧붙임 • Cat은 “catenate”의 축약어로서 “연결하여 붙인다”는 의미 …키보드 입력을 “heart.txt”파일에 저장 …Control-D로 입력을 종료 …화일의 번호를 붙여서 내용을 출력
기본 명령어 • 디렉토리 내용 보기:ls • 인수를 전혀 사용하지 않을 경우 • .으로 시작하는 화일들을 제외한 현재 작업중인 디렉토리의 모든 파일의 이름을 알파벳 순으로 나열 • -a 옵션 • .으로 시작하는 숨겨진 파일까지 나열 • -d 옵션 • 디렉토리의 내용보다는 그 디렉토리 자체의 상세한 정보를 제공 • -g옵션 • 화일들의 그룹을 보여줌 • -l 옵션 • 허가정보,소유권,그리고 최종 변경 일자를 포함하는 긴 목록을 보여줌 • -s 옵션 • 화일들이 차지하는 크기를 디스크 블록(disk block) 단위로 보여줌 • -F 옵션 • 파일 이름 다음에 파일의 특성을 나타내기 위한 문자를 보여줌 • -R 옵션 • 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 보여줌
기본 명령어 …현재 디렉토리의 아주 상세한 정보 표시 …저장 장소의 블록 수
기본 명령어 • 파일의 내용 보기:cat • 여러 개의 파일 이름을 인수로 가질 수 있음 • 작은 파일의 내용을 보여주기 좋음
기본 명령어 • 파일의 내용 보기: more • 파일들의 리스트를 한 번에 한 페이지씩 표시 • 디폴트로 각 파일은 줄 1에서부터 표시 • +옵션 • 시작 번호를 명시 • -f옵션 • 긴 라인을 연속적으로 나타냄 • “—More—” 메시지 • 각 페이지가 출력된 후에 명령을 기다리고 있다는 의미 • 다음 페이지를 출력하기 위해 스페이스바 키(spacebar key)를 누름 • 다음 줄을 출력하기 위해서는 엔터키를 누름 • more에서 빠져나오기 위해 q 입력 • 다른 명령에 대한 도움말을 얻기 위해 h 입력
기본 명령어 naver.html 파일의 20번째 줄부터 내용 출력
기본 명령어 • 파일의 내용 보기: page • 각 페이지를 화면에 표시하기 전에 전체 화면을 지우는 것을 제외하고는 more와 똑같이 사용 • 파일의 내용 보기:head • 파일의 처음 n줄까지를 출력 • 만일 n이 명시되지 않으면, n은 10으로 간주됨 • 하나 이상의 파일을 지정하면, 각 파일의 내용을 보여주기 전에 각 파일을 확인할 수 있는 정보를 보여줌 naver.html의 처음부터 5줄까지 출력
기본 명령어 • 파일의 내용 보기:tail • 파일의 마지막 n개의 줄을 화면에 출력 • N이 명시되지 않으면, n은 10으로 간주 • 만일 하나 이상의 파일을 지정하면, 각 파일의 내용을 보여주기 전에 각 파일을 확인할 수 있는 정보를 먼저 보여줌
기본 명령어 • 파일의 이름 바꾸기:mv • mv [-] –i oldFileName newFileName • oldFileName을 newFileName으로 변경 • 만일 newFileName이 이미 존재한다면, newFileName의 내용이 바뀜 • mv [-] –i {fileName}* directoryName • 파일을 다른 디렉토리로 이동 • mv [-] –i oldDirectoryName newDirectoryName • 전체 디렉토리를 이동 • -i옵션 • 새로운 파일 이름이 이미 존재하는 경우에 확인을 위한 프롬프트를 보여줌 • -옵션 • mv가 뒤따르는 모든 인수를 파일 이름으로 처리하도록 함 • -기호로 파일 이름이 시작되는 경우에 편리
temp temp temp 기본 명령어 파일hear1.txt를 heart3.txt 로 바꿔라 파일heart3.txt를 temp 디렉토리로 옮겨라 디렉토리 temp를 전 디렉토리로 옯겨라
기본 명령어 • 디렉토리 만들기:mkdir • 디렉토리를 생성 • -p 옵션 • 존재하지 않는 newDirectoryName의 경로 이름에 부모 디렉토리를 생성 • 만약 newDirectoryName이 이미 존재한다면 에러 메시지가 표시되고, 존재하는 파일은 어떤 변화도 없음 Program_folder라는 디렉토리를 생성
기본 명령어 • 다른 디렉토리로 이동: cd • 셸의 현재 작업중인 디렉토리를 지정한 이름의 디렉토리로 변경 • 디렉토리 이름이 없는 경우에, 셸은 사용자의 홈 디렉토리로 이동 현재 작업 위치 temp 디렉토리로 이동 temp1 디렉토리로 이동 현재 작업 위치 부모 디렉토리로 이동 홈 디렉토리로 이동
기본 명령어 • 파일의 복사:cp • cp –i oldFileName newFileName • oldFileName을 newFielName으로 복사 • newFileName이 이미 존재하더라도 그냥 복사 • -i옵션은 newFileName이 이미 존재하는 경우 확인 절차를 거침 • cp –ir {fileName}* directoryName • directoryName을 갖는 디렉토리로 파일을 복사 • -r옵션은 디렉토리인 소스 파일을 재귀적으로 복사하여 전체 디렉토리 구조를 복사 heart3.txt파일을 새로운 파일 heart1.txt로 복사 heart1.txt파일을 디렉토리 temp1으로 복사
기본 명령어 • 디렉토리 제거:rmdir • 지정된 디렉토리를 제거 • 디렉토리가 제거되기 전에, 그 디렉토리에 포함된 내용들은 모두 미리 제거되어야함 • 디렉토리와 그 내용 모두를 재귀적으로 제거하기 위해 –r옵션을 사용
기본 명령어 • 파일의 삭제:rm • 계층적 디렉토리로부터 파일의 레이블을 삭제 • rm [-] –fir {fileName}* • -i옵션 • 파일을 삭제하기 전에 사용자에게 확인을 요구 • -r옵션 • fileName,이 디렉토리 이름인 경우에 서브 디렉토리들을 포함한 모든 내용을 재귀적으로 삭제 • -f옵션 • 어떤 에러 메시지나 지시 사항도 나타내지 않음 • -옵션 • 뒤따르는 모든 토큰을 파일 이름으로 처리 • -로 시작하는 파일 이름이 있을 때 편리
기본 명령어 Rmdir은 디렉토리 내에 파일이 존재할 때 삭제할 수 없기 때문 rm으로 그 디렉토리를 재귀적으로 삭제한다
연습 문제 1.해커가 유닉스 보안을 파괴할 수 있는 방법은 무엇인가? 2.Password의 가장 좋은 종류는 무엇인가? 3.유닉스는 대소문자에 민감한가? 4.세 가지 일반적인 셸의 이름은? 5.어떻게 프로세스를 종결시키는가? 6.이 장에서 배운 명령어들을 이용하여 오늘의 일과를 작성하여 plan.txt로 하고 plan이라는 디렉토리에 저장하라. 만약의 경우를 대비하여 동일한 파일을 또 다른 디렉토리에 복사하여 저장하라.(디렉토리가 존재하지 않는 경우에는 디렉토리를 생성하라)