Linux
1991년, Linus Torvals가 개발한 OS
오픈 소스이며 가장 널리 사용되는 OS
리눅스의 구조
- 커널 : 리눅스의 핵심이자 프로세스 관리, 메모리 관리, 파일 및 장치 등 컴퓨터의 하드웨어를 모두 제어하는 영역
- 쉘 : 커널과 사용자의 접점, 쉘을 통해 사용자는 컴퓨터로 원하는 동작을 할 수 있음
- 가장 많이 사용자되는 쉘은 BASH(Bourne-Again Shell)과 zsh(Z Shell)
- 응용 프로그램 : 각종 프로그램 시스템을 위한 프로그램, 문서 편집 도구, 브라우저, 네트워크 도구 등을 의미
FHS(Filesystem Hierarchy Standard)
- 파일 계층 시스템
그림출처: 코딩팩토리
root(/
)
- 최상위 경로인 루트폴더
/home(~
)
- 리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리
/bin & /sbin
OS의 최소한의 구동을 위해 필요한 프로그램이 들어있는 폴더, binary의 약자
cat
,chmod
,chown
,cp
,date
,echo
,kill
,ln
,ls
,mkdir
,etx
등 기초적인 프로그램들이 포함- sbin 폴더는 bin과 유사하지만 오직 루트유저 전용 프로그램 포함
/usr
- 각 유저 이름에 해당하는 폴더이름이 존재
- 각 폴더마다 bin, sbin, shared, lib과 같이 각 유저들이 사용할 수 있는 폴더가 생성되어 있으며, 각각의 유저별로 다른 파티션으로 존재하기 때문에 다른 사용자들이 사용할 수 있도 록 마운트할 수 있지만 수정할 수는 없음. User의 약자
PATH
/
: root 디렉토리~
: home 디렉토리Absolute path(절대 경로) : 경로를 표현하는 방식이 root 디렉토리 부터 시작한다는 점에서 완전한의 의미에 더욱 가까움
/home/kangsick/bin
Relative path(상대 경로) : 현재 자신의 위치를 기반으로 움직이는 경로.
.
: 현재 경로..
: 상위 경로
환경 변수
- OS도 프로그램이기 때문에 OS가 동작하기 위해 변수가 필요
env
명령어로 linux의 환경변수 확인
$PATH
터미널에서 사용하는 명령어의 경로가 저장되어 있음
여러 경로를 저장하기 위해 각 경로는
:
로 구분됨1
PATH=/Users/apple/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
실제
ls
명령어는/bin
디렉토리 안에 위치whereis ls
를 입력하면 해당 명령어가 위치해 있는 경로를 별도로 지정해주지 않더라도 어디서든 사용이 가능한 이유는 환경 변수가 존재하기 때문
Configs
- 리눅스에서는 주로 파일을 통하여 설정(config)
.bashrc
,.zshrc
shell 설정 파일 등 많은 설정 파일들이 대부분 유저의 home(
~
) 디렉토리에 존재.
으로 시작하는 파일 및 디렉토리는 숨김파일로 간주(dot file)ls
에a
(all) 옵션을 주어야지만 볼 수 있음alias(별칭, “다른 방법으로”) : 일종의 사용자 지정 단축 명령어 (
.zshrc
,.bashrc
등에 등록)1 2
alias myip="ipconfig getifaddr en0" # macOS alias myip="hostname -I" # ubuntu
주요 명령어 모음
디렉토리 명 | 설명 |
---|---|
home | 사용자 홈 디렉토리가 생성되는 곳입니다. |
media | CD_ROM이나 USB같은 외부 장치를 연결하는 디렉토리입니다. |
opt | 추가 패키지가 설치되는 디렉토리입니다. |
dev | 장치파일들이 저장되어 있는 디렉토리입니다. |
root | root계정의 홈 디렉토리입니다. (/ 디렉토리와는 다릅니다.) |
sys | 리눅스 커널관련 정보가 있는 디렉토리입니다. |
usr | 기본 실행파일과 라이브러리 파일, 헤더 파일등의 파일이 저장되어있는 디렉토리입니다. |
boot | 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리입니다. |
var | 시스템 운영중에 발생한 데이터와 로그가 저장되는 디렉토리입니다. |
tmp | 시스템 사용중에 발생한 임시데이터가 저장됩니다. (부팅 시 초기화) |
srv | FTP나 Web등 시스템에서 제공하는 서비스의 데이터가 저장되는 디릭토리입니다. |
run | 실행중인 서비스와 관련된 파일이 저장되는 디렉토리입니다. |
proc | 프로세스 정보 등 커널 관련 정보가 저장되는 디렉토리입니다. |
mnt | 파일 시스템을 임시로 연결하는 디렉토리입니다. |
etc | 리눅스 설정을 위한 각종 파일들을 가지고 있는 디렉토리입니다. |
표출처 : 코딩팩토리