커리큘럼
p108~129
디렉토리
디렉토리는 파일 시스템을 계층화할 때 사용하는 도구이다. 여러 개념을 동등한 레벨로 둘 수도 있고, 상하위 개념으로 나누어서 파일을 관리할 수도 있도록 도와준다.
루트 디렉토리
리눅스를 포함한 유닉스 계열 OS는 모두 팡리 시스템 최상단에 루트 디렉토리 가 존재한다. 나타낼 때는 / 로 표기한다. 루트 디렉토리 아래에는 전통적으로 이름과 역할이 정해져 있는 디렉토리들이 있다.
디렉토리 | 용도 |
---|---|
/bin | 기본 실행 명령어가 위치한다. |
/dev | 디바이스 파일이 위치한다. |
/etc | 시스템 설정 파일이 위치한다. |
/home | 사용자의 홈 디렉토리가 위치한다. |
/lib | 시스템 라이브러리가 설치된다. |
/mnt | 시스템에 디스크 등을 임시로 마운트할 때 사용한다. |
/proc | procfs가 마운트된다. |
/root | root 사용자의 홈 디렉토리 |
/sbin | 시스템 관리용 명령어가 위치한다. |
/sys | systs가 마운트된다. |
/tmp | 시스템 임시 파일이 위치한다. |
/usr | 시스템 소프트웨어가 설치된다. |
현재 작업 디렉토리, PWD
bash는 특정 디렉토리를 기준으로 실행되며, bash가 실행 중인 디렉터리는 pwd이다. change directory(cd) 명령어를 통해서 다른 디렉토리로 이동할 수 있다.
홈 디렉토리
리눅스에 사용자를 추가하면 사용자별로 할당하는 디렉토리를 홈 디렉토리 라고 한다. 터미널을 실행하거나 SSH로 리눅스 시스템에 접속하면 로그인한 사용자의 홈 디렉토리를 현재 작업 디렉토리로 설정해서 시작한다.
bash에서는 ~ 으로 홈 디렉토리를 나타내며, cd ~을 입력하면 현재 로그인한 사용자의 홈 디렉토리로 이동한다.
경로
파일의 위치 정보를 나타내는 것을 경로라고 한다. 경로는 크게 상대 경로와 절대 경로, 2가지로 나타낼 수 있다.
상대 경로
현재 작업 디렉토리를 기준으로 경로를 나타내는 것을 상대 경로라고 한다. . 이나 .. 으로 나타낼 수 있고, . 은 현재 작업 디렉토리이며 .. 은 현재 작업 디렉토리의 부모(상위) 디렉토리를 나타낸다.
절대 경로
절대 경로는 루트 디렉토리를 기준으로 파일 경로를 나타낸다.
디렉토리 생성하기, mkdir [옵션] 디렉토리
mkdir 명령어를 활용해서 디렉토리를 생성할 수 있다.
- animals 디렉토리를 생성한다.
2. animals 디렉토리로 이동하고 dog, cat, cow 디렉토리를 한번에 생성한다.
3. 상위 디렉토리로 이동하고, 경로를 주어서 animals 하위에 snake 디렉토리를 생성한다.
4. -p 옵션을 확인한다. -p는 상위 디렉토리가 없을 때, 생성한 후에 하위 디렉토리를 생성한다.
5. 상위 디렉토리인 fruits가 없을 때
6 -p 옵션을 줄 때
cf) 추가적으로, -p 옵션을 주면 이미 있는 디렉토리인 경우에도 오류 메세지를 출력하지 않고 정상적으로 종료된다.명령은 정상적으로 종료되지만 아무 작업도 수행하지 않습니다. 즉, 오류가 발생하지 않고 조용히 넘어갑니다. -p 옵션이 있으면 디렉토리가 이미 존재할 때 오류를 발생시키지 않는 특성이 있습니다. 이것은 -p 옵션의 "관대한(permissive)" 특성 때문입니다.
디렉토리 삭제하기, rmdir [옵션] 디렉토리
mkdir와 비슷한 형식이며, 입력받은 디렉토리를 삭제한다. 여러 개를 입력받을 수도 있다. 다만, rmdir은 비어있는 디렉토리만 삭제할 수 있다. 삭제 대상에 일반 파일이나 다른 디렉토리가 있으면 실패한다.
rmdir도 -p옵션을 줄 수 있는데, 디렉토리의 상위 디렉토리까지 모두 삭제할 수 있다.
- ls 명령어로 animals와 fruits 디렉토리를 확인한다.
- animals 디렉토리 하위의 4개 디렉토리도 확인한다.
- cat 디렉토리를 삭제한다. 사진과 같이 아무것도 출력되지 않으면 정상 삭제된 것이다.
- 남은 3개의 디렉토리도 삭제한다.
animals 디렉토리도 삭제한다.
fruits 디렉토리를 확인한다.
fruits를 삭제해본다. 하위에 apple이 있어서 아래와 같은 에러가 발생할 것이다.
- -p 옵션을 줘서 삭제해본다.
- fruits까지 같이 삭제된 것을 확인할 수 있다.
파일 복사하기
파일을 복사할 때는 cp 명령어를 사용한다. cp에는 두 가지 형식이 있다.
cp [옵션] <원본 파일의 경로> <복사한 파일을 저장할 경로> ,
cp [옵션] <원본 파일의 경로 1> <원본 파일의 경로 2> ... <복사본을 저장할 디렉토리>
첫 번째는 하나를 복사하는 것이고 두 번째는 여러 파일을 한 디렉토리로 복사할 때 사용한다. cp 명령어의 주요 옵션에는 -f와 -r이 있다.
옵션 | 설명 |
---|---|
-f (--force) | 복사본 파일이 이미 존재하는 경우 무시하고 강제로 덮어씌운다. |
-r (--recursive) | 지정한 디렉토리 하위의 파일을 모두 복사한다. |
1. 실습용으로 testdir 디렉토리를 생성한다.
2. echo 명령어로 greetings 파일을 새성한다. echo 명령어와 출력할 텍스트를 입력하고 그 뒤에 기호 > 와 파일 이름을 작성하면 파일을 생성하고 출력할 내용을 파일에 작성한다. 이것을 redirection이라고 한다.
3. `cp [옵션] <원본 파일의 경로> <복사한 파일을 저장할 경로>` 방식으로 greetings를 say-hi라는 이름으로 복사한다.
4. `cp [옵션] <원본 파일의 경로 1> <원본 파일의 경로 2> ... <복사본을 저장할 디렉토리>` 방식을 사용해서 여러 파일을 다른 디렉토리로 복사해본다.
파일 이동하기, mv [옵션] <원본> <대상>
이동에는 두 가지 의미가 있다. 하나는 파일의 위치를 변경하는 것, 다른 하나는 파일 이름을 변경하는 것이다. 리눅스에서는 파일 이름 변경할 때 위치 변경 명령어와 같은 것을 사용한다.
원본 부분은 원본 파일을 지정한다.
대상 부분은 파일을 이동해 저장할 경로를 지정한다. 디렉토리를 지정하면 그 디렉토리로 이동하고, 이름까지 지정해주면 이름이 변경된다.
mv \[옵션\] <원본1> <원본2> ... <디렉토리>
와 같은 형식으로 여러 파일을 한꺼번에 옮길 수도 있다.
주로 사용하는 옵션은 2가지가 있다.
옵션 | 설명 |
---|---|
-f | 파일을 덮어쓸 때 묻지 않고 실행한다. |
-i | 파일을 덮어쓸 때 사용자에게 실행 여부를 물어본다. |
일반 파일 이동
- mv 명령어로 ‘say-hi’ 파일의 이름을 hello로 변경한다.
- greetings의 이름을 welcome으로 변경하고 testdir로 hello와 welcome을 옮겨본다.
디렉토리 이동
haha라는 디렉토리를 생성한다.
haha를 hoho로 변경해본다.
hoho를 temporary 아래로 옮겨본다. 이 때, 이름을 다시 haha로 수정함과 동시에 이동한다.
파일 삭제하기, rm [옵션] 파일
파일 부분에 파일 이름을 명시하면 해당 파일을 삭제할 수 있다. 기본적으로 일반 파일만 삭제할 수 있으며 디렉토리를 삭제하기 위해서는 옵션을 추가해야 한다.
옵션 | 설명 |
---|---|
-d | 디렉토리를 삭제한다. 디렉토리가 비어있을 경우에만 사용할 수 있다. |
-f | 파일이 존재하지 않아도 실패로 처리하지 않고 사용자에게 실행 여부를 묻지 않는다. |
-i | 파일을 삭제하기 전에 사용자에게 실행 여부를 묻는다. |
-r | 디렉토리와 디렉토리에 포함된 모든 파일을 삭제한다. |
일반 파일 삭제
- say-hi 파일을 삭제해본다.
- -i 옵션을 줘서 hello 파일을 삭제해본다.
- 여러 개의 파일을 삭제해본다.
디렉토리 삭제
- 상위 디렉토리를 삭제해서 하위의 디렉토리와 파일들을 모두 삭제해본다.
단어 정리
- 디바이스 파일
- 유닉스 계열 운영체제의 /dev 디렉토리에 있는 디바이스 파일은 하드웨어 장치나 시스템 자원에 대한 인터페이스를 제공하는 특수 파일입니다. 이것들은 "모든 것이 파일"이라는 유닉스 철학의 핵심적인 구현입니다.
- 디바이스 파일의 주요 유형은 다음과 같습니다:
- 문자 디바이스 파일(Character Device Files): 데이터를 문자 단위로 순차적으로 처리하는 장치를 나타냅니다. 예를 들어:
- /dev/tty - 터미널 장치
- /dev/console - 시스템 콘솔
- /dev/null - 데이터를 버리는 "블랙홀" 장치
- 블록 디바이스 파일(Block Device Files): 데이터를 블록 단위로 임의 접근하는 장치를 나타냅니다. 예를 들어:
- /dev/sda, /dev/sdb - 하드 드라이브
- /dev/sr0 - CD/DVD 드라이브
- 가상 장치 파일: 실제 하드웨어에 대응되지 않는 가상 장치를 나타냅니다. 예를 들어:
- /dev/random, /dev/urandom - 난수 생성기
- /dev/zero - 0으로 채워진 무한한 데이터 스트림을 제공
- 이러한 디바이스 파일을 통해 프로그램은 일반 파일을 다루는 것과 동일한 방식으로 하드웨어와 상호작용할 수 있어, 프로그래밍 인터페이스가 단순화됩니다.
'개발 > 코딩자율학습단' 카테고리의 다른 글
[코딩자율학습단 13기] 7일차, 사용자와 사용자 그룹 (0) | 2025.04.05 |
---|---|
[코딩자율학습단 13기] 6일차, 소프트 링크와 하드 링크 (0) | 2025.03.15 |
[코딩자율학습단 13기] 4일차, 리눅스 파일 (0) | 2025.03.15 |
[코딩자율학습단 13기] 3일차, 리눅스 셸 (0) | 2025.03.15 |
[코딩자율학습단 13기] 2일차, 리눅스 설치 (0) | 2025.03.15 |