1. 파일과 디렉터리
1) 파일
※ 리눅스에서는 폴더마저 파일로 분류됨
→ 리눅스에서는 모든 것이 파일로 되어 있음
2) 디렉터리
- 모든 폴더 상위에 루트폴더(/) 존재
- 루트 디렉토리 하위에 모든 저장장치가 매칭
3) 대표적인 디렉터리
/bin | 대부분의 명령어 실행파일 시스템과 관련된 중요한 명령어들이 주로 저장 |
/dev | 디바이스(장치) 파일이 배치 디스크, 키보드, 마우스 등의 하드웨어를 제어할 수 있도록 돕는 특수 파일 |
/etc | 리눅스에서 사용하는 대부분의 설정파일 애플리케이션 및 리눅스 자체 설정 파일 |
/home | 각 사용자 계정명으로 생성되는 디렉터리 해당 사용자의 개인적 파일 저장 |
/sbin | 시스템 관리자용 명령어 저장 (root 권한이 필요) |
/tmp | 임시저장파일 |
/usr | 유저정보 |
/var | 마운트된 정보 |
4) 절대경로 vs 상대경로
절대경로 : 해당 요소의 모든 경로를 기입해 경로를 지정하는 것
상대경로 : 현재 명령을 내리는 지점/파일 위치를 감안해서 상대적으로 위치를 지정하는 것
5) 와일드카드
ex) $ ls ab* : ab로 시작하는 모든 파일 조회
ex) $ ls ab? : ab로 시작하는 3글자 파일 조회
6) cd 명령어
→ 디렉토리 간 이동
7) ls 명령어
→ 파일 목록 출력
-l | 상세조회 |
-a | 전체조회(숨김파일까지 조회) |
-t | 생성날짜 내림차순으로 조회 |
-F | 파일 종류 조회 /:디렉터리 *:실행가능파일 @:심볼릭링크 |
ls 경로 | 해당 경로 내부 조회 |
-w [숫자] | 해당 숫자만큼의 열로 출력 |
--quote-name | 파일이름에 따옴표 붙임 |
루트폴더 내의 모든 요소 조회 가능
파일이름에 따옴표를 붙여서 출력
2. 파일 조작 명령어
1) mkdir : 디렉터리 생성
-p 옵션 : 여러 개의 디렉터리 한 번에 생성 가능
2) touch : 파일 생성
위와 같이 나열하여 여러 개 파일을 한번에 생성할 수도 있다.
3) rm, rmdir : 파일, 디렉터리 삭제
rm -r : 데릭터리와 디렉터리 하위 모든 것 삭제
rm -i 파일명 : 삭제할지 말지 확인 후 삭제
4) cat : 파일 내용 출력
-n 옵션 : 행 번호 출력
5) less : 스크롤 출력
space, f, ctrl+v : 한 화면 아래로 스크롤
b, alt+v : 한 화면 위로 스크롤
j, ctrl+n, enter : 한 행 아래로 스크롤
k, ctrl+p : 한 행 위로 스크롤
q : less 명령어 종료
6) cp : 파일, 디렉터리 복사
cp [옵션] [복사할파일] [복사할위치]
-i 옵션 : 덮어쓰기 전 경고
-r 옵션 : 디렉터리 복사 시 사용
위와 같이 디렉터리 복사 시에는 -r 옵션을 사용한다.
디렉터리 안에 있던 파일까지 모두 복사된 것을 확인할 수 있다.
7) mv : 파일 이동, 이름 변경
① 파일 이동
mv [옵션] [이동할파일] [목적지]
b.txt 파일이 test3 디렉터리로 잘 이동된 것을 확인할 수 있다.
위와 같이 여러 파일을 한 번에 옮기는 것도 가능하다.
디렉터리 이동의 경우 -r 옵션을 주지 않아도 된다.
② 파일명 변경
a.txt가 b.txt로 변경된 것을 확인할 수 있다.
8) ln : 링크 생성
※ 링크 : 리눅스 파일에 별명을 붙이는 것 → 별명으로 호출하는 것이 가능
ln [옵션] [링크할파일] [링크이름]
① 하드링크
→ 한 파일에 이름을 여러개 부여하는 것
위와 같이 file2를 열어보면 file1의 내용과 같은 것을 출력한다.
그냥 보기에는 복사와 같다고 생각할 수 있지만, 위와 같이 file의 내용을 수정하면 file2의 내용도 똑같이 변경되어 있는 것을 확인할 수 있다.
하드링크의 경우 원본을 삭제하더라도 위와 같이 계속 역할을 수행할 수 있다.
② 심볼릭링크
→ 디렉터리는 하드링크로 지정할 수 없고, 서로 다른 디스크에 걸쳐서 만드는 것이 불가능하다.
ln -s [링크할파일] [링크이름]
심볼릭링크의 경우 원본이 삭제되면 기능을 수행할 수 없게 된다.
즉, 바로가기의 기능처럼 참조형으로 해당 파일의 위치만 가지고 있기 때문에 링크가 깨진 심볼릭 링크는 사용할 수 없다.
위와 같이 심볼릭 링크의 원본이 삭제되면 연결된 링크 파일은 동작하지 않는 것을 확인할 수 있다.
☆ 링크를 사용하는 이유
① 긴 절대경로를 별명으로 줄여서 사용하기 위해
② 버전이 여러 개인 파일이 한 폴더에 있을 때 구분하기 위해
9) 파일 찾기
① find : 디렉터리에서 파일 찾기
find [검색할디렉터리] [검색조건] [액션]
현재 작업폴더에서 a 파일을 찾아 콘솔에 찍어달라는 의미이다.
② grep : 특정 문자열이 포함된 파일 찾기
grep [찾는문자] [경로]
위와 같이 cat.txt 파일에서 print라는 문자가 포함된 열만 출력한다.
-i | 대소문자 구분 없이 검색 |
-v | 해당 문자가 포함되지 않은 문장 검색 |
-r | 해당 디렉토리 하위까지 검색 |
--color | 찾은 문자열 강조, 기본은 빨간색 |
콘솔에 hello world를 찍고, 그 중 hello가 포함된 줄만 출력하라는 의미이다.
10) --help : 명령어 도움말 보기
- 사용법, 명령어의 기능적 설명, 지정할 수 있는 옵션목록과 설명 등의 내용
※ $ LANG=ko_KR.UTF-8 cat --help : 한글 문서가 있는경우 한글 출력
11) man : 메뉴얼 출력, --help에 비해 상세한 내용
man [키워드]
-k 옵션 : 특정 명령어 출력
위와 같이 복사 관련 키워드의 메뉴얼이 출력된다.
man cat 입력 시 CAT(1)이라고 나온다.
괄호 안에 숫자는 섹션을 의미한다.
1 : 명령어
2 : 시스템콜
3 : 라이브러리 함수
4 : 디바이스파일
5 : 파일 서식
6 : 게임
7 : 기타
8 : 시스템 관리 명령어
9 : 커널 루틴
man [섹션번호] [이름]
-wa 옵션 : 해당 명령어가 몇 번 섹션 번호 문서가 존재하는지 볼 수 있다.
12) which : 명령어 검색
which [옵션] [명령어]
3. 파일 권한 변경하기
→ 중요한 시스템 파일들을 함부로 제어하지 못하게 막기 위한 목적
1) 10자리 비트 -rwxrwxrwx
① 첫 자리
- : 일반 파일
d : 디렉터리
l : 심볼릭 링크
b : 블록장치
c : 문자장치
s : 소켓
p : 이름 있는 파이프
② 나머지는 세글자씩 묶기
r : 읽기 (4)
w : 쓰기 (2)
x : 실행 (1)
③ 3비트씩 쪼갠 것의 의미
소유자의 권한, 그룹의 권한, 다른 사용자 및 그룹의 권한
2) chmod
$ chmod 숫자(3자리) 파일명
745 : 소유자(rwx), 그룹(r), 다른사용자(rx) 의 권한을 가짐
$ chmod -R 숫자(3자리) 디렉터리 및 경로
위와 같이 test 디렉터리 안에 두 개의 파일이 있을 때
-R 옵션을 사용하면 디렉터리와 그 안의 파일들까지 모두 해당 권한으로 변경되는 것을 확인할 수 있다.
4. 파일 소유권 변경하기
☆ 소유권 변경이 가능한 사용자는 루트계정뿐
1) $ su -
위 명령어를 통해 루트계정으로 변경한 후 진행
2) chown
# chown 유저명 파일명
# chown 유저명:그룹명 파일명
# chown -R 유저명:(그룹명) 파일명
루트 계정에서 rootuser.txt 파일을 생성해준다.
다시 일반사용자 계정으로 돌아와서 vi를 통해 해당 파일을 열어준다.
위와 같이 일반사용자 계정은 r 권한만 있기 때문에 readonly 경고가 뜨는 것을 확인할 수 있다.
루트 계정에서 chown 명령어를 이용하여 rootuser.txt 파일의 소유권을 ubuntu 계정으로 변경해준다.
다시 ubuntu로 돌아와서 rootuser.txt 파일 내용을 수정해보면 잘 변경되는 것을 확인할 수 있다.