
오픈 소스 비영리 기관 'Open Source Initiative'의 로고. https://opensource.org/
본 글은 학교 '오픈소스 소프트웨어 입문' 과목을 수강하며 실습(또는 공부)한 내용을 정리한 글입니다.
개인 기록 용도로 작성한 글이라, 직접 이 글을 보고 실습을 따라하기엔 어려움이 많을 것으로 예상됩니다.
혹시 본 글을 보며 Linux를 공부하실 목적이라면, 일단 키워드 위주로 AI에게 물어봐가면서, 본인의 Linux 터미널에서 직접 타이핑해가며 공부하시기를 추천드립니다.
질문이나 의견이 있다면 자유롭게 댓글 달아주세요!
**Term**
home directory - home of user account
working directory - current directory
. - Current directory
.. - Parent directory
~ - my home directory
~user - user''s home directory
**Command and symbol**
pwd (1) - print current working directory
mkdir (1) - make directory
rmdir (1) - remove directory
cd (bash) - change directory
pushd / popd
du - disk usage
쉘에서는 우리가 명령을 내리면, 현재의 디렉토리(=current directory, working directory, current working directory)에서 작동함. 이 현재 디렉토리를 cwd라고 표현함(변수가 따로 있는 건 아님). pwd으로 cwd를 출력.
현재 우리는 /home/course/foss/foss110
가 current working directory.
이건 .
과 똑같음. .
또한 current working directory를 의미.
man ls
를 보면, FILE가 생략되면 .(current directory)의 information을 출력함.
-a
는 .로 시작하는 개체들을 무시하지 않음. 리눅스에서 .로 시작하는 파일은 hidden file(숨김 파일)임.
..
은 상위 디렉토리(parent directory)를 의미함.
~
는 홈 디렉토리(home directory)를 의미함. 유저가 로그인을 했을 때 거기에 들어간다는 의미. 우리의 홈 디렉토리는 /home/course/foss/foss110
/etc
에서 cat passwd
하면 아래처럼 뜸.
foss138:x:3138:3000::/home/course/foss/foss138:/bin/bash
foss139:x:3139:3000::/home/course/foss/foss139:/bin/bash
foss140:x:3140:3000::/home/course/foss/foss140:/bin/bash
foss141:x:3141:3000::/home/course/foss/foss141:/bin/bash
foss110
: username
x
: 암호화된 암호가 들어있는 자리. (암호화되어 /etc/shadow
파일에 저장됨)
3138
: userid.
3000
: groupid.
:: 다음에 오는 /home/course/foss/foss110
: 해당 사용자의 홈 디렉토리.
연결해서 로그인을 성공하고 나면, 터미널이 저 홈 디렉토리에 /bin/bash
, 즉 배쉬 쉘을 실행시켜 줌.
/etc/passwd
파일에서 각 필드는 :로 구분되는데, ::는 해당 필드가 비어있다는 의미임.
아까 올 때 pushd로 여기 왔잖음? 그럼 다시 갈 때는 popd하면 돌아감.
pushd /etc
→ popd
Directory(Cont.)

루트 디렉토리 /
→ 트리 자료구조가 생각나야 함.
리눅스의 파일 시스템은 트리 자료구조를 가짐. 그래서 항상 루트 디렉토리로 시작함.
root
root
는 시스템 관리자 계정(슈퍼유저)의 이름입니다. /root
디렉토리는 루트 사용자의 홈 디렉토리입니다. 일반 사용자들의 홈 디렉토리는 /home
에 존재하지만, root
는 따로 /root
라는 디렉토리를 가집니다.
boot
이 디렉토리는 부팅에 필요한 파일들이 저장되는 곳입니다. 주로 커널 파일(예: vmlinuz
)과 부트로더 설정 파일(예: grub.cfg
)이 이곳에 있습니다.
home
일반 사용자들이 사용하는 홈 디렉토리들이 저장되는 곳입니다. 각 사용자마다 /home/username
경로 아래에 홈 디렉토리가 생성됩니다. 예: /home/user1
, /home/user2
.
sbin
시스템 관리자가 사용하는 시스템 관련 명령어들이 들어 있습니다. 예를 들어, 시스템을 부팅하거나 복구할 때 사용하는 명령어들이 여기 있습니다. (fsck
, reboot
, shutdown
등) bin 디렉토리와 유사하지만 일반적으로 루트유저만 실행할 수 있는 프로그램들이 있는 디렉토리입니다.
bin
ls
, cp
, mv
등 리눅스의 기본 명령어들이 있는 디렉토리입니다. 시스템 부팅 후, 필수적인 명령어들이 여기에서 실행됩니다. 부팅, 복구, 시스템 유지 관리 등에서 필수적인 명령어들(예: ls
, cp
, mv
, cat
등)이 이 디렉토리에 존재합니다. /bin
에 있는 명령어는 시스템이 정상적으로 작동하는 동안 언제든지 사용할 수 있어야 하므로, 시스템이 복구 불가능한 상태에서도 사용할 수 있어야 합니다.
usr
일반 사용자와 시스템이 사용하는 응용 프로그램과 라이브러리들이 들어 있는 디렉토리입니다. /usr/bin
에는 사용자가 사용할 수 있는 명령어들이 들어 있고, /usr/lib
에는 라이브러리 파일들이 들어 있습니다. 이 디렉토리는 시스템에 설치된 많은 프로그램과 관련된 파일들을 포함합니다.
/usr/bin
상세설명)
~~일반적으로 사용자와 관련된 명령어들이 위치하는 디렉토리입니다. 이 디렉토리에는 시스템에서 자주 사용되는 프로그램들과 응용 프로그램들이 설치됩니다. /usr/bin
에는 시스템 관리자가 설치한 응용 프로그램이나 패키지 관리자에 의해 설치된 프로그램들이 저장됩니다. 예를 들어, 텍스트 편집기(예: vim
, nano
), 웹 브라우저(예: firefox
), 개발 도구(예: gcc
) 등이 여기에 들어 있습니다. /usr/bin
에 있는 명령어들은 시스템 부팅 시 반드시 필요하지 않지만, 시스템 운영 중에 유용한 명령어들입니다.~~
제대로 된 설명)
https://www.quora.com/Whats-the-difference-between-bin-and-usr-bin-in-Linux
초기에는 디스크 크기가 부족하다보니, /bin은 부팅 단계에서 사용하는 최소한의 명령어들이 들어 있었고 나머지 (다중 사용자 모드가 될 때까지 덜 필요한) 명령어들은 /usr/bin에 들어 있었음.(왜 메모리가 아닌 디스크를 칭하는진 모르겠네)
https://superuser.com/a/1018649
그러나, 이후 디스크 크기가 충분해지면서, 많은 리눅스 배포판에서 그냥 모든 명령어들이 /usr/bin에 들어가고, /bin은 그냥 /usr/bin을 가리키는 심볼릭 링크로서 동작하게 설계되었음.
lrwxrwxrwx 1 root root 7 Aug 31 2022 /bin -> usr/bin
var
변동이 있는 데이터, 즉 시스템 실행 중에 변할 수 있는 파일들이 위치하는 디렉토리입니다. 로그 파일, 캐시 파일, 이메일 큐, 프린터 큐 등 다양한 동적 파일들이 이곳에 저장됩니다.
예: /var/log
(로그 파일), /var/cache
(캐시 파일), /var/spool
(대기 중인 작업 큐) 등.
etc
시스템 설정 파일들이 들어 있는 디렉토리입니다. 운영 체제의 동작을 제어하는 설정 파일들이 이곳에 위치합니다. 예: /etc/passwd
, /etc/network/interfaces
, /etc/hostname
등.
dev
디바이스 파일들이 있는 디렉토리입니다. 리눅스에서는 모든 하드웨어 장치(디스크, 프린터, USB 장치 등)가 파일로 표현되므로, 이 디렉토리에는 이러한 장치들이 나타내는 파일들이 있습니다. 예: /dev/sda
(첫 번째 하드디스크), /dev/tty1
(터미널).
opt
옵션 소프트웨어 패키지들이 설치되는 디렉토리입니다. 전통적으로는 서드파티 소프트웨어가 이곳에 설치됩니다. 예를 들어, 아파치 웹 서버나 다른 상용 소프트웨어들이 /opt
에 설치될 수 있습니다.
media
이동식 미디어 장치(USB 드라이브, CD/DVD 등)가 자동으로 마운트되는 위치입니다. 예: /media/usb
, /media/cdrom
등.
/dev
에서 ls -l
하면 파일종류 c가 보이는데, character device. b는 block device → disk일 확률이 높음. l은 symbolic link.
/dev/pts
에서 ls -l
하면 파일 허가권이 보임.
crw--w---- 1 foss108 tty 136, 87 Mar 11 11:41 87
crw--w---- 1 foss096 tty 136, 88 Mar 11 11:41 88
crw--w---- 1 foss064 tty 136, 89 Mar 11 10:40 89
crw--w---- 1 foss023 tty 136, 9 Mar 11 11:41 9
crw--w---- 1 foss030 tty 136, 90 Mar 11 11:41 90
crw--w---- 1 foss109 tty 136, 91 Mar 11 11:41 91
crw--w---- 1 foss093 tty 136, 92 Mar 11 11:41 92
crw--w---- 1 foss131 tty 136, 93 Mar 11 11:40 93
crw--w---- 1 foss058 tty 136, 94 Mar 11 11:39 94
crw--w---- 1 foss056 tty 136, 95 Mar 11 11:39 95
crw--w---- 1 foss119 tty 136, 96 Mar 11 11:41 96
crw--w---- 1 foss013 tty 136, 97 Mar 11 10:45 97
crw--w---- 1 foss041 tty 136, 98 Mar 11 11:41 98
crw--w---- 1 foss097 tty 136, 99 Mar 11 11:39 99
c--------- 1 root root 5, 2 Feb 25 18:57 ptmx
여기서 교수가 chmod 777 0 하면 0의 권한이 rwxrwxrwx가 되는데, 그럼 echo Hi > 0 하면 교수 터미널에 나옴.
'Developments > Linux' 카테고리의 다른 글
[Linux 실습] Ch6. 파일 권한(File Permission) (0) | 2025.03.27 |
---|---|
[Linux 실습] Ch5. 파일 관리와 파일 명령어들(File management and General File commands) (0) | 2025.03.27 |
[Linux 실습] Ch3. 완전 기본적인 명령어들(Very basic commands) (0) | 2025.03.27 |
[Linux 실습] Ch2. 터미널과 명령어 설계(Terminal and Command Design) (0) | 2025.03.27 |
[Linux 실습] Ch1. Linux 시스템 기본 개념 (0) | 2025.03.27 |