1. Linux란?
- Linus Torvals(라이너스 토발즈)가 Unix을 기반으로 개발한 운영체재
- Open Source : 전세계 아무나 그냥 사용 할 수 있다.
- 시스템 서버들은 대부분 Linux 기반으로 운영
- 따라서 웹개발자는 Linux에 시스템을 실행하고 유지하고 관리 할 줄 알아야 한다.
2. Diretory
1) 구조
- 쉽게 생각하면 윈도우 환경에서의 폴더
- Tree 구조: root부터 시작하여 밑으로 뿌리처럼 퍼져 나가는 구조
- root directory: Linux의 최상위 directory로 모든 directory는 root부터 시작한다. ('/'으로 시작)
- /home directory: Linux file system 중 가장 중요하고 기본이 되는 directory
- home directory는 유저의 공간이기 때문에 주로 home directory에서 많은 것을 하게 된다.
- Mac OS 에서는 User가 home directory
- Home 디렉토리 이외의 다른 디렉토리 들은 주로 system directory 라고 하는데, 리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리 들이다.
2) 경로
- '/'을 이용하여 directory을 구분
/User/apple/bin
- root -> User -> apple -> bin
- Absoult path (절대 경로)
- root을 기준으로 해당 directory의 경로를 전부 써주는 방식
- root에서 부터 시작하기 때문에 현재 위치와 상관 없이 항상 정확히 해당 경로로 이동 할 수 있음
- Relative path (상대 경로)
- 현재 directory 기준으로 경로 이동
- dot(.)은 현재 위치
- double dot(..)은 현재 위치에서의 상위 directory
./bin
: 현재 directory 안의 bin directoty
../move
: 현재 directory의 상위 directoty 안의 move directoty
3. Config file
리눅스에는 설정을 주로 파일을 통해서 하며 이러한 파일들을 config file이라고 한다. 너무나 다양한 설정 파일들이 있지만, 그 중 가장 중요한 설정 파일이 바로 shell 설정 파일이다.
1) .zshrc
- Z-shell의 설정 파일 (shell마다 설정파일이 다름)
- 터미널에 ls 명령어를 치면 해당 directory에 있는 directory와 파일들을 볼 수 있다.
- directory 이름 앞에 dot(.)이 붙으면 숨김 파일이 되어 ls만으로는 볼 수 없다.
- la -a 을 통해 숨김 파일까지 볼 수 있다.
- Linux의 에디터 vim을 통해 해당 파일을 읽기 또는 쓰기가 가능
vi .zshrc
2) 환경 변수
- 현재 돌아가고 있는 shell 어떠한 설정 값을 가지고 있는 변수를 뜻하며, 이러한 환경 변수들은 shell이 돌아가는 동안 계속 존재하며 사용된다.
- 예)
- USER: 유저의 아이디를 저장한 환경 변수
- HOME: 유저의 home 디렉토리 경로를 저장한 환경 변수
- PATH: path 값을 저장한 환경 변수
3) 환경 변수 - PATH
- 명령어들을 찾을 수 있는 경로들을 저장해놓은 환경 변수
- 명령어도 결국 프로그램이기 때문에 정확한 경로을 알아야 사용 할 수 있으며 이런한 경로들을 저장해 놓은 곳이 PATH
- 실행하과 하는 명령어의 경로가 PATH에 저장되어 있지 않으면 에러 발생
- PATH에 명령어의 경로가 없는 경우 export을 이용하여 PATH에 경로를 추가 할 수 있음
export PATH="add_path:$PATH"
- add_path: 새로 추가할 명령어의 경로
- ':' : 각 경로들은 ':'으로 구분
- $PATH: 기존의 PATH 변수의 내용을 전부 새로운 경로 뒤에 붙임
4. 기본 명령어들
- cd (change directory): directory 이동
- ls (list segments): 현재 경로 내 파일 목록 출력
- Pwd (print working directory): 현재 경로 출력
- mkdir (make dirctory): directory 생성
- rmdir (remove directory): directory 제거
- rm/rm -r (remove): 파일/directory 제거
- cp (copy): 파일/directory 복사
- mv (move): 파일/directory 이동
- cat (concatenate): 터미널에 파일 내용 출력
- touch : 파일 생성 및 날짜정보 변경