디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd 디렉토리의 파일 목록 확인 : ls 디렉토리 생성 : mkdir 디렉토리 삭제 : rmdir 한빛미디어(주)
학습목표 2장. 디렉토리 다루기 내용 유닉스 파일 시스템을 이해한다. 파일의 종류와 특징을 이해하고 올바른 사용 방법을 익힌다. 디렉토리 관련 명령의 사용 방법을 익힌다. 내용 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd 디렉토리의 파일 목록 확인 : ls 디렉토리 생성 : mkdir 디렉토리 삭제 : rmdir
파일 파일 시스템 Section 01 유닉스 파일 시스템 관련 있는 정보들의 집합 시스템 내의 파일을 효과적으로 관리하기 위해 계층적으로 구성한 유닉스 시스템의 파일과 디렉토리의 집합
파일 시스템 UNIX uses a broader interpretation of files than in most operating systems. In UNIX, a file is any source from which data can be read or any destination to which data can be written. Therefore, the keyboard, a source of input, is a file; the monitor, a destination for output, is a file; a printer, another destination for output, is a file; and a document stored on a disk, a source or destination of data, is also a file.
파일의 종류 네트워크 단말기 디스크 파이프
일반파일, 디렉토리 파일, 심볼릭 링크 파일, 장치 파일 일반 파일 파일의 종류 일반파일, 디렉토리 파일, 심볼릭 링크 파일, 장치 파일 일반 파일 데이터의 저장을 목적으로 하는 파일 텍스트 파일 파일의 내용이 아스키(ASCII) 코드로 구성된 파일 텍스트 편집기나 cat, more 명령을 이용하여 그 내용을 볼 수 있다. 바이너리 파일 내용이 아스키 코드가 아닌 모든 파일 지정된 응용 프로그램을 이용하여야 내용을 볼 수 있다 디렉토리 파일 내용이 다른 파일이나 하위 디렉토리의 이름인 특수 파일 dir1 file1 = inode 1282 dirA = inode 5314
심볼릭 링크 파일 장치 파일 파일의 종류 원본 파일을 가리키는 특수 파일 장치를 관리하기 위한 특수 파일 ./file2 I love UNIX!! link1 file2 명령어 file $ file .profile $ file . dad@0,0:a 136,0
ASCII 코드(American Standard Code for Information Interchange) ---------------------------------------------------------------------- 10진수 | 16진수 | 8진수 | 2진수 | 출력 ---------------------------------------------------------------------- 000 | 00 | 000 | 00000000 | NUL (null) 001 | 01 | 001 | 00000001 | SOH (start of heading) 002 | 02 | 002 | 00000010 | STX (start of text) 003 | 03 | 003 | 00000011 | ETX (end of text) 004 | 04 | 004 | 00000100 | EOT (end of transmission) 005 | 05 | 005 | 00000101 | ENQ (enquiry) 006 | 06 | 006 | 00000110 | ACK (acknowledge) 007 | 07 | 007 | 00000111 | BEL (bell) 008 | 08 | 010 | 00001000 | BS (backspace) 009 | 09 | 011 | 00001001 | HT (horizontal tab) 010 | 0A | 012 | 00001010 | NL (new line (or LF, line feed)) 011 | 0B | 013 | 00001011 | VT (vertical tab) 012 | 0C | 014 | 00001100 | NP (new page (or FF, form feed)) 013 | 0D | 015 | 00001101 | CR (carriage return) 014 | 0E | 016 | 00001110 | SO (shift out) 015 | 0F | 017 | 00001111 | SI (shift in) p. 44 ASCII code
ASCII 코드 016 | 10 | 020 | 00010000 | DLE (data link escape) 017 | 11 | 021 | 00010001 | DC1 (device control 1) 018 | 12 | 022 | 00010010 | DC2 (device control 2) 019 | 13 | 023 | 00010011 | DC3 (device control 3) 020 | 14 | 024 | 00010100 | DC4 (device control 4) 021 | 15 | 025 | 00010101 | NAK (negative acknowledge) 022 | 16 | 026 | 00010110 | SYN (synchronous idle) 023 | 17 | 027 | 00010111 | ETB (end of transmission block) 024 | 18 | 030 | 00011000 | CAN (cancel) 025 | 19 | 031 | 00011001 | EM (end of medium) 026 | 1A | 032 | 00011010 | SUB (substitute) 027 | 1B | 033 | 00011011 | ESC (escape) 028 | 1C | 034 | 00011100 | FS (file separator) 029 | 1D | 035 | 00011101 | GS (group separator) 030 | 1E | 036 | 00011110 | RS (record separator) 031 | 1F | 037 | 00011111 | US (unit separator)
ASCII 코드 032 | 20 | 040 | 00100000 | SP (space) 033 | 21 | 041 | 00100001 | ! 034 | 22 | 042 | 00100010 | " 035 | 23 | 043 | 00100011 | # 036 | 24 | 044 | 00100100 | $ 037 | 25 | 045 | 00100101 | % 038 | 26 | 046 | 00100110 | & 039 | 27 | 047 | 00100111 | ' 040 | 28 | 050 | 00101000 | ( 041 | 29 | 051 | 00101001 | ) 042 | 2A | 052 | 00101010 | * 043 | 2B | 053 | 00101011 | + 044 | 2C | 054 | 00101100 | , 045 | 2D | 055 | 00101101 | - 046 | 2E | 056 | 00101110 | . 047 | 2F | 057 | 00101111 | /
ASCII 코드 048 | 30 | 060 | 00110000 | 0 049 | 31 | 061 | 00110001 | 1 050 | 32 | 062 | 00110010 | 2 051 | 33 | 063 | 00110011 | 3 052 | 34 | 064 | 00110100 | 4 053 | 35 | 065 | 00110101 | 5 054 | 36 | 066 | 00110110 | 6 055 | 37 | 067 | 00110111 | 7 056 | 38 | 070 | 00111000 | 8 057 | 39 | 071 | 00111001 | 9 058 | 3A | 072 | 00111010 | : 059 | 3B | 073 | 00111011 | ; 060 | 3C | 074 | 00111100 | < 061 | 3D | 075 | 00111101 | = 062 | 3E | 076 | 00111110 | > 063 | 3F | 077 | 00111111 | ?
ASCII 코드 064 | 40 | 100 | 01000000 | @ 065 | 41 | 101 | 01000001 | A 066 | 42 | 102 | 01000010 | B 067 | 43 | 103 | 01000011 | C 068 | 44 | 104 | 01000100 | D 069 | 45 | 105 | 01000101 | E 070 | 46 | 106 | 01000110 | F 071 | 47 | 107 | 01000111 | G 072 | 48 | 110 | 01001000 | H 073 | 49 | 111 | 01001001 | I 074 | 4A | 112 | 01001010 | J 075 | 4B | 113 | 01001011 | K 076 | 4C | 114 | 01001100 | L 077 | 4D | 115 | 01001101 | M 078 | 4E | 116 | 01001110 | N 079 | 4F | 117 | 01001111 | O …
/ bin etc usr tmp default lib login 디렉토리 계층 구조 / bin etc usr tmp default lib login 루트 (뿌리) 디렉토리 (가지) 파일 (잎) 상위 하위 현재 홈 디렉토리 : ~ 현재 디렉토리 : . 상위(부모) 디렉토리 : .. 하위(자식) 디렉토리 : 이름
경로명(pathname)은 디렉토리 계층구조 내의 위치를 규정함으로써 특정 파일이나 디렉토리를 구분한다. 경로명 : 파일 시스템에서 특정 파일의 위치 경로명(pathname)은 디렉토리 계층구조 내의 위치를 규정함으로써 특정 파일이나 디렉토리를 구분한다. 경로명 내의 slashes (/)는 객체명(파일 or 디렉토리)들 간의 구분자 역할을 한다. 처음 위치의 slash 는 / (root) directory를 나타낸다
절대 경로명(Absolute pathname) 절대경로 vs. 상대경로 절대 경로명(Absolute pathname) 루트 디렉토리를 기준으로 함 루트 디렉토리부터 특정 파일까지 가는데 거치는 모든 디렉토리의 이름 표시 항상 / (루트)로 시작 상대 경로명 (Relative pathname) 현재 위치를 기준으로 함 하위로 내려갈 때는 디렉토리의 이름을, 상위로 올라갈 때는 .. 추가 슬래시(루트) 이외의 문자로 시작 현 위치에 따라 같은 파일이라도 상대 경로가 달라진다.
Pathnames(경로명) : 절대경로/상대경로 예 ../../../../etc/mail /usr/ccs/bin /usr/openwin/lib/X11/fonts bin Openwin/lib/X11/fonts /lib /export/home ../usr/ccs/bin
절대 경로와 상대 경로 / usr opt dev etc export kernel var bin sbin lib prof home user1 user2 sjyoun unix unix의 절대경로 : /export/home/user2/unix unix의 상대경로 : 현재 디렉토리 user1의 절대경로와 상대 경로는?
./file6 ~/file6 ~tran/file6 부모 디렉토리 ( .. ) .., ../.. 상대경로의 축약 상대 경로의 축약 홈 디렉토리( ~ ) tilde ~/project.list ~kykim/file1 작업 디렉토리 ( . ) file6 ./file6 ~/file6 ~tran/file6 부모 디렉토리 ( .. ) .., ../..
Relative Pathnames for file3 ~joan/file3
유의 사항 예 파일과 디렉토리 명명 규칙 사용 가능 사용 자제 사용 불가 : / 좋은 이름 나쁜 이름 쓸 수 없는 이름 알파벳(대소문자 구분), 숫자, 하이픈(-), 밑줄(_), 점(.) 사용 자제 공백, *, &, |, “, ‘, `, ~, #, $, (, ), |, ;, <, > 쓰는 경우 이름을 따옴표로 감싸거나 모든 특수문자 앞에 \를 추가 사용 불가 : / 예 좋은 이름 C, helloWorld.c, unix, .secrete, sample12 나쁜 이름 *hl, I’am, #77dir, my dir, book\ 쓸 수 없는 이름 Mydir/, /test, wrong/name
: Print Working Directory The pwd Command : Print Working Directory No options! No arguments!
pwd(print working directory) Section 02 현재 디렉토리 확인: pwd 현재 작업 디렉토리의 절대 경로 출력 사용법 pwd(print working directory) $ pwd /export/home/pro/kykim $ 자신의 단말기 창에서 $ pwd 명령을 실행하고 결과를 분석 $ pwd /export/home1/std11/s00… $
The cd Command : Change Directory 현 작업 디렉토리의 변경 $
디렉토리명을 지정하지 않으면 자신의 홈 디렉토리로 이동 사용법 cd [디렉토리명] Section 03 디렉토리 이동: cd 현재 작업 디렉토리를 지정한 디렉토리로 이동 디렉토리명을 지정하지 않으면 자신의 홈 디렉토리로 이동 사용법 cd [디렉토리명] /tmp 로 이동 telnet hanbitbook.co.kr $ cd /tmp $ pwd /tmp $ cd /export/home/user1 $ 홈디렉토리로 이동
Section 04 디렉토리 파일 목록 확인: ls 파일이나 디렉토리에 대한 정보 출력 옵션 ls [옵션] [파일 또는 디렉토리명] 옵션 기 능 a All. 시스템에 숨겨진 파일(디렉토리들)을 모두 보여줌 l Long. 파일과 디렉토리에 대한 상세 정보를 보여줌 d Directory. 디렉토리에 대한 정보만 출력 R Recursive. 서브 디렉토리내의 모든 디렉토리들을 반복 출력 F 파일 종류를 구분. (실행 파일은 *, 디렉토리는 /를 붙임) u 파일, 디렉토리 이름을 최종 접근 시간 순으로 화면에 출력
Long List Option (-l) 파일타입 –(정규), d(디렉토리), c(문자), b(블록), l(심볼릭링크), p(FIFO), s(소켓) 접근권한 (6장) 링크 : 디렉토리나 파일에 연결된(linked) 파일 수 소유자, 그룹, 파일크기(byte), 최종수정날짜, 파일이름
사용법 실습 ls ls -a ls -l ls -al ls -d ls -F ls -u ls /tmp ls /etc 현재 디렉토리의 모든 파일목록 ls ls -a ls -l ls -al ls -d ls -F ls -u ls /tmp ls /etc ls /etc/passwd ls –l /etc/passwd $ ls -a . .. .profile $ ls .profile .profile $ 지정한 파일 정보
$ man ls
mkdir [옵션] 디렉토리명 새로운 디렉토리 생성 옵션 사용법 실습 cd mkdir temp dir test Section 05 디렉토리 생성: mkdir 새로운 디렉토리 생성 옵션 -p : 디렉토리 생성에 필요한 하위 디렉토리도 함께 생성 사용법 mkdir [옵션] 디렉토리명 실습 $ mkdir unix $ ls -F unix/ $ cd mkdir temp dir test mkdir tmp cd tmp mkdir temp pwd
실습용 디렉토리 만들기 현재 위치 이동하기 [실습하기] 디렉토리 상세 정보보기 $ pwd /export/home1/std11/s… (자신의 홈 디렉토리) $ mkdir Ch2 $ $ cd Ch2 $ ls -al drwxr-xr-x 2 s… stu 512 10월 19일 16:50 . drwxr-xr-x 2 s… stu 512 10월 19일 16:50 .. $ $ mkdir Temp $ ls -F Temp/ $
디렉토리 상세 정보 보기 작업 디렉토리 위치 변경하기 [실습하기] 디렉토리 상세 정보보기 $ ls -ld Temp drwxr-xr-x 2 s… stu 512 10월 19일 16:55 Temp $ $ cd .. $ pwd /export/home1/std11/s… $
$ mkdir saturnGp/memos/schedule Session 3.14 Make Directory $ mkdir saturnGp $ ls -ld saturnGp drwxr-xr-x 2 gilberg staff 512 May 19 14:03 saturnGp ------------------------------------------------------------ Session 3.15 Make Directory in Path $ mkdir -p saturnGp/memos/schedule $ ls -lR saturnGp total 1 drwxrwxr-x 3 gilberg staff 512 May 19 14:17 memos saturnGp/memos: drwxrwxr-x 2 gilberg staff 512 May 19 14:17 schedule saturnGp/memos/schedule: total 0 $ mkdir saturnGp/memos/schedule $ mkdir –m 755
디렉토리가 비어있어야 삭제 가능 (cf. $ rm –r) 옵션 사용법 rmdir [옵션] 디렉토리명 Section 06 디렉토리 삭제: rmdir 지정한 디렉토리 삭제 디렉토리가 비어있어야 삭제 가능 (cf. $ rm –r) 옵션 사용법 rmdir [옵션] 디렉토리명 실습 telnet hanbit.co.kr $ rmdir dir $ cd rmdir tmp cd tmp ls rmdir temp
Session 3.18 Remove Directory(디렉토리 삭제) $ rmdir memos The rmdir command cannot delete a directory unless it is empty. If it contains any files, UNIX will return an error message. Note that when the command is executed successfully, the only response is the shell prompt. Session 3.18 Remove Directory(디렉토리 삭제) $ rmdir memos memos: Directory not empty $ rmdir memo // $ rm –r 또는 하위 파일 삭제후 $ _ $ rmdir temp/work/prog test
실습(연습문제 P.63) 1. 4. 5. 6. 7. 8. 9. 11. 12. 13.
5. 루트 디렉토리 자체의 상세 정보를 보는 명령을 적으시오. 연습문제(2장) 다음 표에서 왼쪽의 ls 명령을 보고 그 의미를 오른쪽에 채워 넣으시오. 문제에 주어진 test는 사용자 계정 또는 디렉토리명이다. 명령어 의미 ls .. 부모 디렉토리의 목록 출력 ls ../test ls ~test ls ~/test ls /test 4. 절대 경로와 상대 경로의 정의를 기술하시오. 5. 루트 디렉토리 자체의 상세 정보를 보는 명령을 적으시오.
6-10. 다음 그림을 보고 현재 디렉토리가 user1 일 때 주어진 작업을 수행하는 명령을 적으시오. 연습문제(2장) 6-10. 다음 그림을 보고 현재 디렉토리가 user1 일 때 주어진 작업을 수행하는 명령을 적으시오. 6. 위 그림을 보고 다음 표를 채우시오. 파일명 절대 경로 상대 경로 / C etc hw. c user2
연습문제(2장) 7. 현재 디렉토리를 확인하시오. 8. 현재 디렉토리를 Unix 디렉토리로 이동하시오. 9. 홈 디렉토리 아래에 U 디렉토리를 생성하시오. 10. /etc 디렉토리의 파일 목록을 파일 종류별로 출력하시오. 11. 현재 디렉토리를 user2 디렉토리로 이동하시오. 12. 현재 디렉토리를 홈 디렉토리로 이동하시오. 13. 현재 위치가 홈 디렉토리일 때 9에서 생성한 U 디렉토리를 삭제하시오.
Lab Sessions Lab Sessions Session I Log into the Ray system using CDE. Create 3 directories named letters, reports, and assignments under your home directory. Move to directory letters. Create 2 directories named friendly and formal under the letters directory. Move to directory reports using only one command (directly from letters). Create 3 directories named personal, business, and school under the directory reports using only one command. Create a directory called UNIX under the assignments directory without moving from the reports directory. Create 2 directories called HWs and Projects under the directory UNIX. The directories in this step should be created without moving from the reports directory. Move to your home directory. Recursively list all of the directories you created under your home directory using “ls” command.
Home directory ~kykim reports letters assignments friendly formal personal business school UNIX HWs Projects