리눅스(그리고 유닉스)의 가장 근본적인 디자인 원칙은 「모든 것은 파일」입니다.
일반 파일·디렉토리는 물론, 디바이스(키보드·디스크·네트워크 카드), 프로세스, 시스템 정보까지 모두 「파일처럼」 다룹니다.
왜 이게 강력한가.
같은 도구(cat·ls·grep)로 모든 걸 다룰 수 있음.
키보드 입력도 cat /dev/input으로 읽음.
CPU 정보도 cat /proc/cpuinfo로 봄.
프로세스 메모리도 /proc/PID/maps로 들여다봄.
「파일을 다루는 법 하나」로 시스템 전체 조작.
결과 — 파이프 연결의 자유.
디스크 통계를 그래프 그리는 도구에 보낼 때, 디스크 명령 출력을 파이프로 그래프 도구에 — 모두 「텍스트 파일 = 표준 입력」 인터페이스.
도구 조합이 무한.
파일 종류.
1) 일반 파일 — 텍스트·이미지·실행 파일.
2) 디렉토리 — 다른 파일을 포함.
3) 심볼릭 링크 — 다른 파일을 가리킴.
4) 디바이스 파일 — 하드웨어 표현.
5) 소켓 — 네트워크·프로세스 통신.
6) 파이프(FIFO) — 프로세스 간 데이터 전달.
ls -l의 첫 글자가 종류 표시.
윈도우와의 큰 차이.
윈도우는 「파일은 파일, 레지스트리는 레지스트리, 드라이버는 드라이버」 따로.
리눅스는 모두 파일시스템 안에 — 통일된 인터페이스가 강력함과 동시에 단순함.
한 줄 요약
리눅스의 「모든 것은 파일」 철학은 디바이스·프로세스·시스템 정보까지 파일로 다룸.
같은 도구로 모든 걸 조작, 파이프 조합 자유.
윈도우의 분리된 시스템과 큰 대조.
더 알아볼 것
- 디바이스 파일 — /dev/null·/dev/random
- 프로세스 파일시스템 — /proc 활용
- Plan 9 — 더 극단적인 「모든 것은 파일」