Chapter 5 The Shell 이번 장에서는 shell에 대하여 기본적인 내용을 알아보자…

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

컴퓨터와 인터넷.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
2. 파일 시스템 파일 디렉터리와 경로명 파일 시스템의 구조 새로운 파일 생성 소유권과 허가 파일 유형과 일반화.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
리눅스 기본 명령어 및 Vi 명령어 정리 2015/1, 컴퓨터의 개념 및 실습.
Linux/UNIX Programming
Unix & Shell 사용법 1 번째주 Dept. of Computer Science & Engineering
제6장 쉘 창병모
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
양방향 파이프의 활용 양방향 통신 파이프는 기본적으로 단방향이므로 양방향 통신을 위해서는 파이프를 2개 생성한다.
Root Filesystem Porting
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Root Filesystem Porting
Linux Master 김희승 임승한 OneScore 임승한.
HW #4 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음 명령을 사용하여 파일로 저장한 후, 이를 프린트하여 제출한다. $ ls –lR linux_unix > hw4-1 $HOME linux_unix.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
[INA470] Java Programming Youn-Hee Han
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
Linux/UNIX Programming
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HW #4 UNIX 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음 명령을 사용하여 파일로 저장한 후, 이를 프린트하여 제출한다. $ ls –lR linux_unix > hw4-1 $HOME linux_unix.
24장. 파일 입출력.
Linux/UNIX Programming
이재광 정보보호 일반 중에서 제2장 운영체제 보안 이재광
UNIX Unbounded A Beginning Approach
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Linux/UNIX Programming
01_ C++ 스타일의 입출력 02_ C 스타일의 입출력
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
Linux/UNIX Programming
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
Linux/UNIX Programming
Linux/UNIX Programming
( Windows Service Application Debugging )
Linux/UNIX Programming
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
시스템 인터페이스 Lab#5 쉡 실습.
Linux/UNIX Programming
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
 파일 아카이브와 압축 명령 익히기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
Tensorboard in Windows
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
함수, 모듈.
4. 셸을 이용한 명령어 입력. Unix 시스템 쉘 간단한 셸 명령 명령 매개변수(Command arguments)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
Docker Study 6~7.
Linux/UNIX Programming
CCISS 어레이 형식 centos7 설치방법
Linux/UNIX Programming
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

Chapter 5 The Shell 이번 장에서는 shell에 대하여 기본적인 내용을 알아보자… 표준입력, 출력, 리다이렉션, PIPE,TEE, 백그라운드 작업...등을 배워보자… 내용이 아주 간단하고 금방 끝나니… 지난 시험 풀이도 해주고….

The Command Line Command line syntax command [arg1] [arg2] … [argn] argument : 인수 (화일이름, 숫자, 텍스트 등) option : 선택사항(명령어의 효과를 변경하는 인수 example : [comp76]:/home/hotbody/ftp 136 >ls main.cpp test.txt [comp76]:/home/hotbody/ftp 137 >ls -l total 2 -rw-rw-rw- 1 hotbody 94 0 Apr 3 1997 main.cpp -rw-r--r-- 1 hotbody 94 36 Aug 19 20:18 test.txt [comp76]:/home/hotbody/ftp 138 >ls -l main.cpp command line이란 명령을 가진 행을 의미한다. shell에 어떠한 명령을 주기 위해서는 command를 사용해야 하고 형식은 위와 같다… 명령행 문법은 위와 같고… 옵션이란 명령의 효과를 변경하는 인수(argument)를 의미한다…. 예..-c, -l,….

Entering a command line 다음 문자 가져옴 yes 버퍼에서 이전 문자 지움 ctrl-H no yes 전체 버퍼 내용을 지움 ctrl-U no 버퍼에 문자를 저장 no return yes 지금 부터는 shell이 명령행(command line)을 입력받는 방법을 보자.. 결국 한줄을 입력받아 shell의 명령행 처리기에 보내는 과정이다. 버퍼 내용의 처리를 위해 쉘에 버퍼 전달

Processing the command line 첫번째 단어를 가져와 명령어 이름으로 저장 no 다음단어를 인수로 저장 newline yes 명령어이름에 해당하는 프로그램이 존재? ‘Command not found’ 출력 프로그램 수행 yes no 한줄을 해석해서 프로그램을 실행하거나 없을경우 command not found를 내는 과정이다. 프롬프트를 화면에 출력

Executing the command line 쉘 : 명령실행 sleep 쉘 : 명령대기 인수전달 종료 프로세스 쉘은 명령을 실행시키고 나서, 그 명령이 종료 뙐때까지 기다립니다. 명령이 종료되고 나서는 다시 사용자로부터 명령을 입력받습니다.

표준입력, 표준 출력 Unix에서는 터미널, 프린터, 디스크 등의 디바이스를 각각 하나의 화일로 취급 디바이스 파일 예: /dev/tty06 기본적으로 표준 입출력 장치는 터미널 프로세스 4장에서 설명했듯이 unix에는 다양한 파일과 디렉토리가 있다. 유닉스는 여기에 부가적으로 device file이라 하여 각종 디바이스를 하나의 파일처럼 취급한다. 예를들어 tty06같은 것은 터미널을 가르키는 파일이다. /dev 디렉토리아래에 이러한 디바이스 파일이 많이 있음을 보여준다…. 기본적으로 unix는 표준 입출력 장치로 터미널을 가정한다. 아무 언급이 없다면 입력과 출력은 터미널로 한다는 의미이다… 예를 들자면 c 프로그램을 짜보면 입력 출력 함수 scanf, printf등은 사실 stdin, stdout이라는 파일로 부터 읽고 쓰는 것이다…. 그러므로 모두 파일로 처리한다는 의미…. 따라서, 파일로 가는 통로를 바꿔 주면 다른 파일이나, 장치(부터/에서) 입출력을 할 수 있습니다. -> redirection 화일 프린터

Redirection 표준 출력 redirection : 쉘에게 명령어 실행 결과를 지정한 파일에 출력하도록 지시 redirection output symbol : > example : cat a b c > d 표준 입력 redirection : 쉘에게 명령어의 입력을 지정한 파일로부터 하도록 지시 redirection input symbol : < example : mail subby < homework2 파일에 표준출력 내용 추가(append) : 쉘에게 명령어 실행 결과를 기존 파일의 뒤에 추가하도록 지시 appending output symbol : >> example : cat b >> a redirection이란 shell이 표준 입력이나 출력을 어디로 부터 받을지 변경하는 방법을 의미한다…. 표준 출력을 리다이렉션하는 법은 >를 이용한다. 몇가지 간단한 예를 수행해보게 하여 >를 쓰는 것과 안 쓰는 것의 차이를 보게 하자… 마찬가지로 표준 입력을 redirection하는 것은 지정한 파일로 부터 입력을 받도록 하는 것이다….. >>는 파일의 표준 출력을 파일에 append하는 것을 의미한다.

Pipe Pipe(‘|’) : 한 명령어의 표준 출력을 후속 명령어의 표준입력으로 직접 연결 이점 example 중간결과를 저장하는 파일이 불필요 디스크 공간과 수행 시간의 절약 명령어 입력의 간소화 example [comp76]:/home/hotbody/ftp 139 >who jorc7911 pts/11 Aug 19 20:44 (comp38.snu.ac.kr) limcom pts/5 Aug 12 16:12 (beast) panpilin pts/6 Aug 19 20:39 (comp4) hotbody pts/25 Aug 19 15:03 (horn.snu.ac.kr) [comp76]:/home/hotbody/ftp 140 >who | sort 파이프란 위의 설명과 같고… 즉 command_a > temporary_file, command_b<temporary_file 을 간단히 command_a | command_b와 같이 할 수 있는것이다. redirection과의 차이점을 이해하게 하고, 이점을 알게하자… 예를 들면 위와 같이 편리하게 할 수 있다… sort말고도 grep으로 하는 것도 보여주고… 해보게 하자… 1차 시험 문제 ls -al | grep Mar 같은 걸 해보게 하자… 맞춰보라 하든지...

Filters Filter : 입력 데이터스트림을 처리하여 출력 데이터스트림을 만드는 명령어 example : sort [comp76]:/home/hotbody 149 >ls | sort | tail temp test.ps test.txt tmp trace txttar.gz typescript util util.c zmodem 필터라는 것은 위와 같은 프로그램들을 말하는 것이다… 예를 들면 sort, grep같은 프로그램을 지칭한다. 표준 입력, 출력을 하지 않거나 유저의 입력이 필요한 프로그램은 당연히 필터로 사용하지 못한다… ls는 표준 입력이 없으니 안되고, vi같은것은 사용자의 입력이 필요해서 안된다….

tee tee 유틸리티 : 하나의 입력으로 두가지의 출력을 동시에 생성 example: [comp76]:/home/hotbody 150 >who | tee who.out | grep hotbody hotbody pts/25 Aug 19 15:03 (horn.snu.ac.kr) [comp76]:/home/hotbody 151 >cat who.out jorc7911 pts/11 Aug 19 20:44 (comp38.snu.ac.kr) limcom pts/5 Aug 12 16:12 (beast) tee라는 유틸리티는 T자를 의미한다… 즉 하나의 입력을 가지고 두가지 출력을 만드는 것 예와 같이 다음 프로그램의 표준 입력을 위해 표준 출력을 하면서 파일에 저장할 수 있게 한다….. 예를 잘 설명하고…. 한번 수행해보게 하자...

백그라운드 작업 수행(1) foreground 수행 : 명령어의 실행이 끝날 때까지 shell이 프롬프트를 출력하지 않고 기다림 background 수행 : 명령어가 끝나기를 기다릴 필요가 없이 다음 작업을 수행 background 작업 지시 : 명령어 끝에 ‘&’ example : [comp76]:/home/hotbody 195 >tail -f test.txt & [comp76]:/home/hotbody 192 >ps PID TTY TIME CMD 7949 pts/25 0:01 csh 12481 pts/25 0:00 tail [comp76]:/home/hotbody 193 >kill 12481 [comp76]:/home/hotbody 194 >kill -9 12481 unix는 background수행을 할 수 있게 한다…. 아주 복잡한 프로그램이나 시간이 오래 걸리는 작업의 경우 &를 붙이면 background로 수행할 수 있다… 예의 프로그램은 사실 약간 부적절한 프로그램이지만…. background로 수행하면 ps해보면 나오고 이걸 죽일려면 kill하면 된다. 그래도 안죽이면 kill -9 …

백그라운드 작업 수행(2) ps : 현재 수행중인 프로세스의 목록을 보여준다. jobs : 현재의 jobs들을 보여준다. job : background로 수행 중이거나 stop된 프로세스 bg, fg : 특정 프로세스를 background 나 foreground로 실행 상태를 변경한다. kill : 특정 프로세스를 중지한다. kill 11409 : process ID kill %1 : job 번호 nohup : logout후에도 명령을 계속 수행한다. 이러한 background작업을 위한 여러 유틸이다…. 한번씩 수행해보게 하자…. jobs로 나오는 job번호를 이용해서 프로그램을 중지시킬 때는 kill %job번호로 하면 된다고 알려주자…

Filename Generation 특수 문자 example: ? : 한 개의 임의의 문자에 대응 * : 여러 개의 임의의 문자에 대응 [ ] : 괄호내의 문자열 list중 임의의 문자에 대응 example: a?? : a11, a12, abc, … a* : a, ab, abcd, … a[123] : a1, a2, a3 a[0-2] : a0, a1, a2 [a-b]*[012]: afd0, b13142, … 마지막으로 shell에서 파일 이름을 generation하는 몇가지 방법을 보자.. *랑 ?는 대부분 알테고… 예를 보며 설명을 해주고… ls등으로 해보게 하자…