Ubuntu(우분투) 디렉토리 구조

1. /bin
bin은 binary(기계어) 라는 뜻으로 보통 실행파일을 의미합니다.
(MS윈도우의 경우 bin 파일이 /Windows, /Windows/System32 에 산재되어 있습니다.)

ls, cp, mv 등의 기본적인 콘솔 명령어가 이 곳에 위치합니다.
즉 $ cp hello.txt good.txt 는 $ /bin/cp hello.txt good.txt 과 같은 의미입니다.
여기에 있는 프로그램들은 시스템 파일이므로 지워서는 안 됩니다.

2. /boot
전원을 키고 부팅할 경우 필요한 파일들이 위치합니다.
커널에 대한 link, 기타 초기화 파일들이 있어 이 곳은 절대 손대면 안됩니다.
(MS도스의 IO.SYS 나 MSDOS.SYS로 이해하시면 편합니다.)

/boot/grub 은 부트메니저 grub의 설정이 들어 있습니다.
이 곳의 menu.lst 파일을 조작하면 부팅설정 변경이 가능합니다.

3. /dev
dev는 device(장치) 라는 의미입니다.
이 곳에는 컴퓨터에 연결된 모든 장치가 파일로 표현되어 모여 있습니다.

리눅스는 입출력을 파일로 대신하는 구조로 이루어져 있습니다.
플로피나 하드드라이브는 MS윈도우에서 드라이브명(a:, c:) 을 할당 받지만
리눅스에서는 단지 단순한 파일로 대체됩니다.

/dev/fd 는 플로피이고 /dev/hd 는 하드디스크 /dev/mouse 는 마우스를 의미합니다.
프린터, 콘솔, 포트등도 모두 이 곳에 위치합니다.
( /dev/hda 는 첫번째 IDE 하드 디스크 전체이고, 그중 /dev/hda1 은
그 하드 디스크의 첫번째 파티션을 의미합니다. 요즘은 거의 sda로 대체되고 있습니다.)

4. /etc
이 곳은 리눅스의 거의 모든 설정 파일이 위치합니다.
여기 파일들을 조작해 프로그램 설정을 변경할 수 있습니다.
(MS윈도우의 레지스트리(Registry)에 해당합니다.)

전체 사용자의 암호를 갖고 있는 /etc/pas*s*w*d, X Window, Fonts 설정파일이 있으며
우리가 사용하는 각종 프로그램의 설정 파일들이 이 곳에 위치합니다.
여기를 자주 들려야 리눅스 실력이 향상됩니다.

/etc/init.d 와 rcx.d
여기는 MS윈도우의 config.sys에 해당한다고 보시면 됩니다.
하지만 파일이 하나가 아니고 한 디렉토리가 꽉 찹니다.
리눅스 시작시 시동해야 할 데몬이나 스크립트들이 모여있습니다.

/etc/profile
MS윈도우의 autoexec.bat에 해당합니다.
여기서 프롬프트를 변경하거나 시작 프로그램을 추가할 수 있습니다.

/etc/fstab
파일 시스템의 마운팅 여부를 설정합니다.
하드나 파티션을 추가한 경우 이 곳의 설정을 변경합니다.
fstab은 시스템에 아주 중요한 파일이며 알아두면 아주 유용합니다.

5. /home
각 사용자들의 홈 디렉토리를 포함하고 있습니다.
예를 들어 hello 사용자의 홈 디렉토리는 /home/hello 가 됩니다.
/home/hello 아래에는 각 사용자의 개인설정 파일과 바탕화면, 문서등이 저장됩니다.
(MS윈도우의 /Documents and Settings 에 해당합니다.)

시스템을 다시 설치한다면 이 디렉토리는 백업해 두는 것이 좋습니다.

6. /lib
여기에는 시스템 전체 운영에 필수적인 공유 라이브러리가 들어 있습니다.
라이브러리란 프로그램이 실행될 때 가져다 쓰는 프로그램이라 생각하시면 됩니다.
파일을 추가만 하시고 삭제는 하지 마세요. 시스템이 멈출 수 있습니다.

7. /lost+found
파일 시스템을 체크하는 경우 잃어버린 파일(?)을 찾아서 이곳에 위치시킵니다.

8. /media
플로피나 CD, USB 메모리의 마운트 포인트로 활용됩니다.
(마운트 포인트는 마운트된 장치에 접근할 수 있는 디렉토리를 말합니다.)
마운트된 플로피의 내용을 보고 싶다면 이 곳을 찾으면 됩니다.
CD를 넣으면 이 디렉토리 아래 마운트 포인트가 생성됩니다.

9. /mnt
저장장치나 주변 장치의 마운트 포인트로 활용됩니다.

10. /opt
이 곳은 원래 상용프로그램이 위치하는 장소입니다.

11. /proc
여기 보이는 것은 실제 파일이 아니라 메모리에서 실행되고 있는 프로세스를 보여주는 곳입니다.
프로세스(process)란 실제 메모리에서 실행되는 프로그램이라 생각하시면 됩니다.

볼 수만 있는 것이 아니라 파일같이 이용해서 각 프로세스를 참조할 수도 있습니다.
이러한 방식을 리눅스의 가상 파일 시스템이라고 합니다.

12. /root
root 계정 사용자도 홈디렉토리가 있습니다.
하지만 /home에 위치하지 않고 바로 이 곳 /root를 이용합니다.
이유는 남들이 함부로 들어오지 못 하도록 하기 위함입니다.

13. /sbin
/bin 와 같은 개념이지만 시스템 관리자가 사용하는 파일들이 저장되어 있습니다.
(“sbin”는 “safe binary”의 의미로 superuser만 사용해서 안전하다는 뜻입니다. )
fdisk, mkfs, init, halt 등 시스템 관련 파일이 위치합니다.
잘못 조작할 경우 전체 시스템에 이상을 초래할 수도 있습니다.

14. /srv
서비스 디렉토리로 주로 인터넷 관련 파일이 위치합니다.

15. /subdomain
서브도메인을 사용하지 않으면 비어 있습니다.

16. /sys
리눅스 시스템이 필요로 하는 파일들입니다.
손대지 않는게 좋습니다.

17. /tmp
임시 저장 파일을 담고 있습니다.
(MS윈도우 /temp와 같습니다.)

18. /usr
/usr 는 시스템에 필수적인 요소는 아니지만 사용자에게는 아주 중요한 디렉토리입니다.
거의 모든 응용프로그램이 이 곳에 위치하며 일부 설정 파일도 들어 있습니다.

라이브러리도 존재하고 컴파일 환경도 위치하고 무엇보다도 X Window가 여기에 있습니다.
(MS윈도우의 /Program Files에 해당하지만 더 큰 의미를 가집니다. 리눅스는 X Window도
시스템이라기보다 응용프로그램으로 생각합니다.)

몇 가지 중요한 서브디렉토리를 살펴보겠습니다.

/usr/bin
우리가 사용하는 대부분의 응용프로그램이 이 곳에 위치함니다.
(적은 의미의 MS윈도우의 /Program Files에 해당합니다.)

/usr/X11R6
X 윈도우에 관계되는 모든 프로그램, 설정 파일, 그리고 지원 파일들이 들어 있습니다.

/usr/include
C 컴파일러에 대한 헤더 파일을 포함하고 있습니다.

/usr/lib
/lib와 같은 기능을 하지만 주로 응용프로그램에 관련된 라이브러리가 위치합니다.

/usr/local
과거에는 이 곳에 응용 프로그램이 많이 설치 되었지만 점차 사용이 줄어들고 있습니다.

/usr/share/man
메뉴얼 페이지를 저장하고 있는 디렉토리입니다.
하나씩 읽어보면(?) 배우는게 많습니다.

/usr/share/doc
설치된 프로그램에 대한 추가 정보를 볼 수 있습니다.

/usr/src
이 디렉토리는 컴파일 되지 않은 다양한 프로그램 소스들이 들어 있습니다.
이 곳에서 비디오 드라이버 모듈을 만들기도 하고 RPM을 만들어 내기도 합니다.
리눅스 커널 소스도 이 곳에 위치합니다.

19. /var
이 곳은 시스템 운영 도중에 파일 크기가 변하는 요소들을 담고 있는 디렉토리입니다.
간단히 말해 게임하다가 최고점이 나오면 점수를 여기에 저장합니다.
그 외에도 시스템 유지에 필요한 중요한 파일들이 이 곳에 위치합니다.

리눅스 명령어 모음

alias(명령어 간소화하기)
apropos(관련된 명령어 찾기)
arch(컴퓨터 종류 알기)
arp(같은 서브넷의 IP 보여주기)
at(작업 시간 정하기)
atd(계획성 있는 작업 실행하기)
awk(특정 패턴 문자 처리하기)
a2p(펄 파일로 바꾸기)
badblocks(배드 블럭 검사하기)
bc(계산기)
biff(메일 수신 소리로 확인하기)
bg(후면작업; 배경화면 설정)
bind(키나 함수 순서 결합하기)
break(루프 빠져나가기)
cal(달력보기)
builtin(내부 명령어 알아보기)
case(조건 처리하기)
cat(화면상에서 파일 보기)
cd(디렉토리 변경하기)
cfdisk(디스크 설정하기)
chattr(파일 속성 변경하기)
chfn(사용자 정보 변경하기)
chgrp(파일, 디렉토리가 속했던 그룹 바꾸기)
chmod(파일 권한 바꾸기)
chown(파일 주인 바꾸기)
chsh(지정된 셸 바꾸기)
cksum(CRC값을 점검한다)
clear(화면 청소하기)
clock(CMOS 시각을 조정하기)
cmp(파일 비교하기)
colcrt(문자 변환 필터)
colrm(열 삭제하기)
column(가로 정렬하기)
comm(파일 비교 출력하기)
command(명령어 알아보기)
continue(루프 계속돌기)
cp(파일 복사하기)
cpio(복사본 만들기)
crontab(cron을 관리한다)
csplit(파일에 서식, 규칙 정하기)
cut(필요한 필드만 출력하기)
date(날짜 보기)
dd(블럭장치 읽고 쓰기)
debugfs(ext2 파일 시스템 디버깅하기)
declare(변수 선언하기)
df(파일 시스템의 사용량 보기)
dirs(디렉토리 목록 표시하기)
dmesg(부팅 메시지 보기)

(X윈도우 환경에서 printk 메세지를 기본으로 못보는데 dmesg를 통해서 확인할수 있다)
dnsdomainname(DNS 이름 출력)
domainname(NIS 이름 출력&설정)
du(디렉토리와 파일의 용량 파악하기)
dumpe2fs(파일 시스템 정보 보기)
echo(표준 출력하기)
eject(장치 해제하기)
elm(메일 관련)
enable(내부 명령어 지정)
env(환경변수 출력하기)
eval(인수 읽기)
exec(셸 명령어 실행하기)
exit(종료하기)
expand(탭을 공백으로 변환하기)
export(변수 지정하기)
e2fsck(파일 시스템 복구하기)
fc(지정된 편집기 받기)
fdformat(플로피 디스크 포맷하기)
fdisk(파티션 나누기)
fg(지정된 작업을 전면 프로세스로 시작하기)
file(파일 종류 보기)
find(파일 찾기)
finger(사용자 정보 알기)
fold(정형화하기)
fmt(정형화하기)
for(반복 실행하기)
free(메모리 사용량 알아보기)
fsck(파일 시스템 검사하기)
fstab(파일 시스템에 대한 고정적인 정보 저장하기)
ftp(파일 전송 프로그램)
fuser(프로세스 ID 출력)
getkeycodes(매핑 테이블 출력하기)
grep(특정 문자(열) 검색하기)
gzexe(실행 파일 압축하기)
gzip(압축하기)
halt(시스템 종료하기)
hash(기억해 두기; index 역할)
head(파일의 앞부분 출력하기)
help(도움말 보여주기)
host(호스트 정보 보기)
history(사용 명령어 목록보기)
hostname(서버 이름 알기)
id(계정 정보 알기)
if(조건문 실행하기)
ifconfig(랜카드에 주소 할당하기)
imolamod(모듈 설치하기)
inetd(인터넷 서비스의 최상위 데몬)
init(실행 단계 정하기)
ispell(철자법 검사하기)
jobs(수행중인 프로세스 알기)
kbd_mode(키보드 모드 출력하기)
kill(프로세스 죽이기) 강제종료 (kill -9 PID)
klogd(커널 로그 데몬)
ldd(공유 라이브러리의 의존성 알기)
less(페이지 단위로 출력하기)
let(정규식 표현하기)
lilo(부팅하기)
ln(링크하기)
locate(패턴에 맞는 파일 찾기)
login(로그인하기)
logger(시스템 로그 기록하기)
logname(사용자 로그인명 보여주기)
logout(로그인 셸 종료하기)
look(특정 단어 검색하기)
losetup(중복 장치 확인하기)
lpd(프린트 데몬)
lpq(현재 프린트 작업 상태 출력하기)
lpr(출력하기)
lprm(대기열에 있는 문서 삭제하기)
ls(디렉토리 내용보기)
lsattr(파일 시스템의 속성 보여주기)
lsdev(하드웨어 장치 출력하기)
lsmod(모듈 정보 출력하기) lnsmod(묘둘 올리기) rmmod (모듈 내리기)
mail(메일 관련)
make(컴파일하기)
man(매뉴얼 보기)
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mesg(메시지를 받을 수 있는지 확인하기)
mformat
minfo
mkdir (디렉토리 만들기)
mke2fs(파일 시스템 생성하기)
mkfs(파일 시스템 만들기)
mknod(특수 파일 만들기)
mkswap(스왑 영역 지정하기)
mlabel
mmd

mount
mmount
mmove
mpartition
mount(장치 연결하기)
more(화면 단위로 출력하기) ls -al | more
mrd
mren
mtoolstest
mtype
mutt(메일 관련)
mv(파일 옮기기)
mzip
netstat(현재 네트웍 상황 보기)
nice(프로세스 우선 순위 변경하기)
od(8진수로 파일 보기)
passwd(암호 입력하기)
pidof(실행중인 프로그램의 프로세스 ID 찾기)
pine(메일 관련)
ping(네트웍 확인하기)
popd(pushd 취소)
ps(프로세스 상태 알기) ps -aux
pstree(프로세스 상관관계 알기)
pwd(절대경로 보여주기)
quota(디스크 한계량 알기)
rarp(rarp 테이블 관리하기)
rcp(원격 호스트에 파일 복사하기)
rdev(루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기)
rdate(네트웍으로 시간 설정하기)
reboot(재부팅하기)
readonly(읽기 전용으로 표시하기)
renice(프로세스 우선 순위 바꾸기)
reset(터미널 초기화하기)
restore(다시 저장하기)
rlogin(바로 접속하기)
rm(파일 지우기)
rmdir (디렉토리 지우기) rm -rf
route(라우팅 테이블 추가/삭제하기)
rpm(프로그램 추가/삭제)
rpm2cpio(rpm을 cpio로 변환하기)
rsh(원격으로 명령어 실행하기)
rup(호스트 상태 출력하기)
rusers(호스트에 로그인한 사용자 출력하기)
rwall(호스트 사용자에게 메시지 뿌리기)
script(기록하기)
set(변수값 설정하기)
setup(시스템 관련 설정하기)
showmount(호스트의 마운트 정보 보여주기)
shutdown(전원 끄기)
sleep(잠시 쉬기)
source(스크립트 번역하기)
split(파일 나누기)
ssh(암호화된 원격 로그인하기)
stty(터미널라인 설정 보여주기)
su(계정 바꾸기)
suspend(셸 중단하기)
swapoff (스왑 해제하기)
swapon(스왑 활성화하기)
sync(버퍼 재설정하기)
syslogd(로그인 과정 설정하기)
tac(거꾸로 보기)
tail(문서 끝부분 출력하기)
talk(이야기하기)
tar(파일 묶기)
tcpdchk(tcp wrapper 설정하기)
tcpmatch(네트웍 요청에 대해 예측하기)
tee(표준 입력으로부터 표준 출력 만들기)
telnet(원격접속하기)
test(테스트하기)
times(셸에서의 사용자와 시스템 시간 출력하기)
top(cpu 프로세스 상황 보여주기)
tr(문자열 바꿔주기)
true(종료 코드 리턴하기)
type(유형 보기)
ul(밑줄 처리해서 보여주기)
ulimit(제한하기)
umask(매스크 모드 설정하기)
umount(장치 해제하기)
unalias(별명 제거하기)
uname(시스템 정보 보기)
unexpand(공백 문자를 탭으로 변환하기)
uniq(중복된 문장 찾기)
useradd(사용자 계정 만들기)
userdel(계정 삭제하기)
usermod(사용자 계정정보 수정하기)
unset(설정 변수 해제)
uptime(시스템 부하 평균 보여주기)
users(로그인된 사용자 보여주기)
w(시스템에 접속한 사용자 상황 알아보기)
wait(프로세스 기다리기)
wall(모든 사용자에게 메시지 보내기)
wc(문자, 단어, 라인수 세기)
whatis(명령어의 간단한 설명보기)
while(루프 명령어)
who(사용자 알기)
write(콘솔 상에서 간단한 메시지 보내기)
xcopy(반복적으로 복사하기)
XFree86
ypchfn(NIS에서 사용하는 chfn 명령어)
ypchsh(NIS에서 사용하는 chsh 명령어)
yppasswd(NIS에서 사용하는 passwd 명령어)
zcat(압축 파일 보기)
zcmp(압축 파일 비교하기)
zforce(강제로 gz 만들기)
zgrep(압축 상태에서 grep 실행하기)
zmore(압축 상태에서 more 실행하기)
znew(.Z 파일을 .gz로 다시 압축하기)