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의 차이는 실행파일 위치만 보여주느냐 아니면 실행파일, 매뉴얼 파일, 소스파일의 위치를 모두 알려주느냐 이다.
'대학교 2학년 1학기 > 리눅스 프로그래밍' 카테고리의 다른 글
프로세스 관리하기 (0) | 2022.05.01 |
---|---|
파일 접근 권한 관리하기 (0) | 2022.04.04 |
셸 사용하기 (0) | 2022.04.04 |
문서 편집하기 (0) | 2022.04.04 |
리눅스 입문 (0) | 2022.04.04 |