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 파일 내용을 수정해보면 잘 변경되는 것을 확인할 수 있다.

'네트워크캠퍼스 > LINUX' 카테고리의 다른 글

프로세스  (0) 2024.01.16
텍스트에디터  (0) 2024.01.15
프롬프트  (0) 2024.01.10
Shell  (0) 2024.01.09
리눅스 개요  (0) 2024.01.09

+ Recent posts