Unix & Shell 사용법 1 번째주 Dept. of Computer Science & Engineering Knowledge & Data Engineering Lab
Unix & Linux Unix Linux 1969년 AT&T의 지부인 벨연구소에서 Ken Thompson에 의해 개발 1989년 핀란드 대학생인 리누스 토르발스가 유닉스를 기반으로 개발한 공개 운영제체 워크스테이션이나 개인용 컴퓨터에서 주로 사용되는 유닉스와 유사한 오퍼레이팅시스템 소스코드 완전 무료로 공개
Unix & Linux 의 특징 멀티태스킹(Multitasking) 멀티유저(Multiuser) 시스템이 한번에 하나 이상의 프로그램을 실행 가능 멀티유저(Multiuser) 한번에 한명 이상의 사용자를 지원가능
ID and Password 시스템 관리자(System Manager, System Administrator) 유닉스 시스템의 관리와 유지/보수를 수행하는 사람 사용자명(User id) 사용자를 구분할 수 있는 고유한 이름 계정(Account) 시스템을 사용할 허가
참고 : unix, linux 계열 OS는 대소문자를 구분 Login 하는법 login : - 사용자명을 입력하고 Enter키 password : - 패스워드를 입력하고 Enter키 참고 : unix, linux 계열 OS는 대소문자를 구분
How to logout 작업을 마치려면 로그아웃 명령으로 세션을 마쳐야 한다 로그아웃 로그아웃 방법 유닉스에게 현재의 사용자명으로 로그인한 사용자가 작업을 마친다고 알리는 것 로그아웃 방법 쉘 프롬프트가 나타날 때까지 기다렸다가 Ctrl-D키를 누름 logout 명령어를 사용 exit 명령어를 사용
Change Password passwd 명령어를 사용 사용자명이 hycse인 사용자가 패스워드를 변경하는 과정 Changing passwd for hycse Old password: New password: Re-enter new password: $
파일시스템 디렉토리명 의 미 /bin 기본적인 실행 가능한 명령 파일을 갖는다 /dev 특수 파일인 장치 파일을 갖는다 의 미 /bin 기본적인 실행 가능한 명령 파일을 갖는다 /dev 특수 파일인 장치 파일을 갖는다 /etc 시스템을 관리하는데 필요한 파일을 갖는다 /tmp 시스템이 임시 저장용으로 사용하는 디렉토리 /usr 사용자와 관련된 명령과 범용 프로그램 등을 갖는다 /usr/bin /bin 에 있는 명령 파일보다 적게 사용되는 명령 파일을 갖는다 /usr/lib 사용자들이 프로그래밍할 때 사용하는 프로그램의 라이브러리 /usr/include 사용자들이 프로그래밍할 때 사용하는 프로그램의 헤더파일 /usr/man 온라인 도움말 파일을 갖는다 /home 각 사용자의 홈 디렉토리
Shell 쉘이란 명령어 해석기(Command processor) 프로그래밍 언어 종류 사용자가 입력하는 명령을 읽고 해석하는 프로그램 프로그래밍 언어 쉘이 해석할 수 있는 스크립트라는 프로그램을 작성 유닉스를 사용하는데 있어 주요한 인터페이스 종류 bash csh ksh sh tcsh
각 Shell 의 특징 bash csh ksh sh tcsh Bourne Again shell 명령행 편집, 히스토리 치환, 본 셸 호환 csh C shell 본 셸과 호환되지만 전혀 다란 프로그래밍 인터페이스 명령행 편집 기능 제공하지 않음 ksh Korn shell 유닉스에서 가장 많이 사용하고 있는 셸 본 셸과 호환, 명령행 편집 기능 제공 sh Bourn shell Original shell 명령행 편집기능 제공하지 않음 tcsh 확장형 C shell
Shell 확인 및 변경 현재 사용하고 있는 shell 확인 다른 shell 로 바꾸기 $ echo $SHELL ex) $chsh $ echo $SHELL /bin/bash $ chsh Changing shell for root. New shell [/bin/bash] : /bin/csh Shell changed. &
Shell 기본 명령어 파일과 디렉토리 목록보기 : ls 현재 작업 디렉토리 표시하기 : pwd 디렉토리 이동하기 : cd 숨긴 파일 표시하기 ( ex : ls –a ) 자세한 정보 표시하기 ( ex : ls –l ) 하위 디렉토리의 내용 모두 표시 ( ex : ls –R ) 현재 작업 디렉토리 표시하기 : pwd 디렉토리 이동하기 : cd 절대경로 이동 ( ex : cd /home/tonxoo/test ) 상대경로 이동 ( ex : cd .. ) [tonxoo@kde example]$ pwd /home/tonxoo/example [tonxoo@kde example]$
Shell 기본 명령어 (cont’d) 파일 복사하기 : cp 파일이나 디렉토리 이동하기 : mv cp –r [원본 디렉토리 이름] [복사할 디렉토리 이름] 파일이나 디렉토리 이동하기 : mv mv [원본 파일] [이동할 디렉토리 명] mv [원본 파일] [이동할 파일 명] mv [원본디렉토리] [이동할 디렉토리 명] 디렉토리 만들기 : mkdir 디렉토리 삭제사기 : rmdir 파일 삭제하기 : rm
고급 Shell 명령어 Redirection 사용하기 ( <,<<,>,>>) 출력 : ‘>’, ’>>’ 입력 : ‘<‘, ‘<<‘ 명령어 > 파일 이름 명령어의 결과를 파일로 저장(파일 존재시 지우고 저장) 명령어 >> 파일 이름 명령어의 결과를 파일로 저장(파일 존재시 맨뒤에 첨부) 명령어 < 파일 이름 명령어의 입력으로 파일을 지정
고급 Shell 명령어 (cont’d) Pipe 사용하기 (|) 와일드카드 사용하기 (*,?) 명령어 순차 실행 (;) 명령어1 | 명령어2 명령어의 출력을 다른 명령어의 입력으로 전달 와일드카드 사용하기 (*,?) * : 모든 문자를 대신함 ? : 숫자를 대신함 명령어 순차 실행 (;) 여러 개의 명령어를 세미콜론(;)으로 구분하면 왼쪽에서 오른쪽 순서대로 실행 백그라운드 실행하기 (&) 명령어 & shell의 제어를 받지 않고 무한으로 구동시키는 방법