본문 바로가기

대학교 2학년 1학기/리눅스 프로그래밍

디렉터리와 파일 사용

728x90

1. 리눅스 파일의 종류와 특징

1-1. 파일의 종류

- 일반 파일: 데이터를 저장하는데 주로 사용. (실행파일이나 이미지 파일의 경우 바이너리 파일)

- 디렉터리: 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장.

- 심벌릭 링크: 원본 파일을 대신하도록 원본 파일을 다른 파일명으로 지정한 것.

- 장치 파일: 리눅스 시스템에 부착된 장치를 관리하기 위한 특수 파일, 대부분의 장치 파일은 /dev 디렉터리 아래에 위치.

 

1-2. 디렉터리 계층 구조

- 디렉터리를 계층적으로 구성하는 것을 트리구조라고 함.

- 모든 디렉터리의 출발점은 루트 디렉터리이며 /(빗금)으로 표시.

- 디렉터리 아래에 있는 디렉터리를 하위 디렉터리 또는 서브 디렉터리라고 하며 자신을 포함하고 디렉터리를 부모 디렉터리 또는 상위 디렉터리라고 함. (마침표 두 개로 표시)

- 디렉터리 명의 끝에 붙은 /은 디렉터리, @는 심벌릭 링크를 뜻함.

- 작업 디렉터리: 현재 사용 중인 디렉터리, 현재 디렉터리라고도 함. (마침표로 표시하며, pwd 명령으로 작업 디렉터리의 위치를 확인할 수 있음)

 

1-3. 절대 경로명과 상대 경로명

- 경로 구분자는 /을 사용, 가장 앞에 있는 /은 루트 디렉터리, 경로명 중간에 있는 /은 구분자임.

- 경로명은 절대 경로명과 상대 경로명이 있음.

 

2. 디렉터리 사용 명령

2-1. 현재 디렉터리 확인하기

pwd: 현재 위치를 확인 즉, 현재 디렉터리의 절대 경로명을 출력.

 

2-2. 디렉터리 이동하기

cd: 지정한 디렉터리로 이동.

- 형식: cd [디렉터리]

 

2-3. 디렉터리 내용 보기

ls: 디렉터리의 내용을 출력.

- 형식: ls[옵션] [디렉터리or파일]

- 옵션

-a: 숨김 파일 포함 모든 파일 목록을 출력.

-d: 디렉터리 자체 정보 출력. 

-i: 첫 번째 행에 inode 번호 출력.

-l: 파일의 상세 정보 출력 ( 순서대로 파일 종류, 파일 속성, 하드 링크 개수, 파일 소유자, 파일이 속한 그룹, 파일 크기, 파일이 마지막으로 수정된 시간, 파일명)

-A: 마침표와 마침표 두 개를 제외한 모든 파일 목록을 출력.

-F: 파일의 모든 종류를 표시. ( /: 디렉터리, @: 심벌릭 링크, *: 실행파일, 아무 표시 X: 일반파일)

-L: 심벌릭 링크 파일의 경우 원본 파일의 정보를 출력.

-R: 하위 디렉터리의 목록까지 출력.

dir, vdir: 디렉터리의 내용을 출력.

 

2-4. 디렉터리 만들기

mkdir: 디렉터리를 생성

- 형식: mkdir [옵션] 디렉터리

- 옵션

-p: 중간 디렉터리가 없으면 자동으로 중간 단계 디렉터리를 생성하면서 전체 디렉터리 생성.

ex) mkdir -p first/second/third

동시에 디렉터리 여러 개 만들기: 디렉터리는 공백 문자로 구분 ex) mkdir first third

 

2-5. 디렉터리 삭제하기

rmdir: 디렉터리를 삭제 (디렉터리가 비어있지 않으면 삭제 불가능)

- 형식: rmdir [옵션] 디렉터리

- 옵션

-p: 디렉터리의 부모 디렉터리가 빈 디렉터리일 경우 부모 디렉터리도 자동으로 삭제

 

3. 파일 사용 명령

3-1. 파일 내용 연속 출력

cat: 파일 내용을 출력한다.

- 형식: cat [옵션] 파일

- 옵션

-n: 행 번호를 붙여서 출력한다.

 

3-2. 화면 단위로 파일 내용 출력

more: 파일 내용을 화면 단위로 출력.

- 형식: more [옵션] 파일

- 옵션

+행 번호: 출력을 시작할 행 번호를 지정.

- Space Bar를 누르면 다음 화면이 출력, Enter를 누르면 한 줄씩 스크롤, /문자열을 입력하면 해당 문자열을 찾아 이동, q를 누르면 종료.

 

3-3. 개선된 화면 단위 파일 내용 출력. (more명령은 이미 스크롤되어 지나간 내용은 다시 볼 수 없음)

less: 파일 내용을 화면 단위로 출력.

- 형식: less 파일

- j: 다음 행, k: 이전 행, Space Bar, Ctrl+f: 다음 화면으로 이동, Ctrl+b: 이전 화면으로 이동.

 

3-4. 파일 뒷부분 출력하기

tail: 파일 뒷부분의 몇 행을 출력.

- 형식: tail [옵션] 파일

- 옵션

+행 번호: 지정한 행부터 끝까지 출력.

-숫자: 화면에 출력할 행의 수를 지정.

-f: 파일 출력을 종료하지 않고 주기적으로 계속 출력 (Ctrl+c로 명령 종료)

 

3-5. 파일 복사하기

cp: 파일이나 디렉터리를 복사.

- 형식: cp [옵션] 파일1(디렉터리1) 파일2(디렉터리2)

- 옵션

-i: 파일2가 존재하면 덮어쓸 것인지 물어봄.

-r: 디렉터리를 복사할 때 지정.

- 디렉터리를 복사할 때 두 번째 인자로 지정한 디렉터리가 이미 있을 경우, 원본 디렉터리(첫 번째 인자)가 목적지 디렉터리(두 번째 인자) 아래에 원본 디렉터리와 같은 이름으로 복사된다.

 

3-6. 파일 이동하고 파일명 바꾸기

mv: 파일을 이동

- 형식: mv [옵션] 파일1(디렉터리1) 파일2(디렉터리2)

-i: 파일2(디렉터리2)가 존재하면 덮어쓸 것인지 물어봄.

- 파일 -> 파일: 파일이 있으면 덮어쓰고, 없으면 새로 생성. (결국 원본 파일의 이름이 바뀌는 것)

- 파일 -> 디렉터리: 디렉터리만 지정할 경우 디렉터리로 이동, 디렉터리와 파일을 함께 지정할 경우 파일이 디렉터리로 이동하고 이름을 바꿈. ex) mv text1 temp/data2

- 디렉터리 -> 디렉터리: 존재하지 않는 디렉터리면 이름이 변경, 존재하면 지정된 디렉터리 아래로 이동.

 

3-7. 파일 삭제하기

rm: 파일을 삭제.

- 형식: rm [옵션] 파일(디렉터리)

- 옵션

-i: 파일을 정말 삭제할 것인지 물어봄.

-r: 디렉터리를 삭제할 때 지정. (디렉터리가 비어있지 않아도 삭제 가능)

 

3-8. 파일 링크

- 하드 링크: 기존 파일에 새로운 파일명을 추가로 생성하는 것.

- 심벌릭 링크: 원본 파일을 가리키는 새로운 파일을 만드는 것.

- 리눅스는 파일이 파일명+inode+데이터 블록으로 구성됨 inode번호는 파일 상세 정보와 데이터 블록 주소가 저장되어 있음. ls -i 명령으로 알 수 있는데, 파일명은 다르지만 inode 번호가 같다면 같은 파일.

- ln: 파일의 링크를 생성한다.

- 형식: ln [옵션] 원본 파일 링크 파일

- 옵션

-s: 심벌릭 링크 파일을 생성

- 하드 링크는 같은 파일에 이름만 다르게 붙인다는 점, 복사는 완전히 독립적인 파일을 만든다는 점에서 차이가 있음.

- 심벌릭 링크는 inode 번호가 다르며, ls -l 명령으로 확인 시 파일의 종류가 l로 표시되고 파일명도 ->를 사용하여 원본 파일이 무엇인지 알려줌. 수정하면 원본 파일이 수정. 다만 원본 파일이 없으면 연결할 수 없음.

 

3-9. 파일과 관련된 유용한 명령

touch: 빈 파일을 생성한다.

- 옵션

-a: 접근 시간만 변경

-m: 수정 시간만 변경

-t: 시간을 직접 입력

- 이미 있는 파일에 대해 옵션 없이 사용하면 파일의 수정 시간이 현재 시간으로 바뀜.

grep: 지정한 패턴이 포함된 행을 찾음.

- 형식: grep [옵션] [패턴] [파일]

-i: 대문자와 소문자를 모두 검색

-l: 지정한 패턴이 포함된 파일명을 출력

-n: 행 번호를 출력

ex) grep -l hello *.c grep -n unix ~/*.txt

find: 지정한 위치에서 조건에 맞는 파일을 찾는다.

- 형식: find [경로] [옵션] [조건] [동작]

- 옵션

-name: 파일명으로 검색

-type: 파일 종류로 검색

-user: 지정한 사용자가 소유한 모든 파일을 검색

-perm: 지정한 사용 권한과 일치하는 파일을 검색

- 동작

-exec 명령 {}\; :검색된 파일에 명령을 실행

-ok 명령 {}\; :사용자의 확인을 받아서 명령을 실행

-print: 검색된 파일의 절대 경로명을 화면에 출력 (기본 동작)

-ls: 검색 결과를 긴 목록 형식으로 출력

ex) find ~ -name hello.c find /tmp -user user10 -exec rm {}\;

whereis: 지정한 경로에서 명령의 바이너리 파일이나 매뉴얼 파일의 위치를 찾음.

- 형식 wheries [옵션] 명령

- 옵션

-b: 바이너리 파일만 검색

-m: 매뉴얼 파일만 검색

-s: 소스 파일만 검색

which: 명령어 파일의 위치를 찾아서 그 경로나 에일리어스를 출력

- 형식: which 명령

- 에일리어스를 먼저 찾아보며, 최대 하나의 경로만을 출력.

which와 whereis의 차이는 실행파일 위치만 보여주느냐 아니면 실행파일, 매뉴얼 파일, 소스파일의 위치를 모두 알려주느냐 이다.

728x90

'대학교 2학년 1학기 > 리눅스 프로그래밍' 카테고리의 다른 글

프로세스 관리하기  (0) 2022.05.01
파일 접근 권한 관리하기  (0) 2022.04.04
셸 사용하기  (0) 2022.04.04
문서 편집하기  (0) 2022.04.04
리눅스 입문  (0) 2022.04.04