⭐️ 고민거리
- git bash의 sh도 Shell을 의미할까요?
- 프론트엔드 개발자가 Linux와 Terminal, 그리고 Database에 대하여 얼만큼의 지식이 필요할까요?
Linux Basic
- 운영 체제(OS, Operating System)
- 컴퓨터라는 도구와 소통 및 명령 할당할 수 있는 중간 매개 소프트웨어(Windows, Mac OS, etc)
- 명령어 집합의 별도 학습 필요
- 커널(Kernel)
- 유저가 CPU 안에 있는 반도체 칩 등에게 어떤 명령을 Shell(User Interface)로 가하게 되면 그 명령을 수행
- 즉, 커널은 중간 관리자
- 쉘로 커널과 소통하기 위한 명령어를 알고 있어야 함
- 쉘 종류: git bash, zsh, csh, tcsh 등(sh는 Shell을 의미)
- 커널의 역할 수행: 태스크 관리자, 메모리 관리자, 파일 시스템 관리자, 네트워크 관리자, 디바이스 드라이버 관리자
- Linux root directory
- 최상위 디렉토리
- Linux home directory
- ~: home directory를 의미
- 사용자로서 사용하는 모든 디렉토리가 포함된 공간
- 절대 경로 / 상대 경로
- 절대 경로: root directory부터 시작하는 경로
- 상대 경로: 지금 자신의 위치 기준으로 찾아가는 경로
- Linux 환경 변수
- 동적인 변수값의 집합
- Linux 기본 세팅으로, key와 value의 형태로 이뤄짐
- Linux .config 파일
- 환경을 목적에 맞게 바꿀 수 있음
- Linux Command(리눅스 명령어): CLI(Command Line Interface)
// 아래의 내용들을 터미널에 입력합니다.
clear // 명령어 삭제
pwd // 현재 디렉토리 확인(print working directory)
ls // 현재 디렉토리 내 폴더 및 파일 확인(list segments)
ls -l // 현재 디렉토리 내 폴더 및 파일의 메타 정보까지 나열
ls -al // 파일명 앞에 '.'이 적혀 있는 숨김 파일까지 확인
env // 동적인 변수값들을 보여줌(environment)
cd / // root directory로 이동(change directory)
cd ~ // home directory로 이동
cd.. // 현 위치 대비 앞 단위로 이동
cd... // '.'의 갯수에 따라 깊은 단위로 이동
mkdir // 디렉토리 생성(make directory)
touch // 디렉토리 및 파일 생성(예: touch test.txt)
rm -r // 디렉토리와 내부 파일 전체 삭제(remove recursive / 예: rm -r directory)
rm // 파일 삭제(예: rm test.txt)
cp // 디렉토리 및 파일 복사(copy / 예: cp test.txt)
vi // 파일 수정(vim)
Database
- 카페 매출 정보를 저장해놓는 엑셀, 작품을 써서 저장해놓는 워드 등과 마찬가지로 데이터베이스는 데이터를 저장해놓는 곳을 의미
- 데이터베이스를 사용하는 이유는 첫째, 데이터를 오랜 기간 저장 및 보존하기 위해서, 둘째, 데이터를 체계적으로 보존하고 관리하기 위해서
- 데이터베이스는 관계형 데이터베이스(RDBMS: Relational Database Management System)와 NoSQL로 명칭되는 비관계형(Non-relational) 데이터베이스로 나눔
- 관계형 데이터베이스
- 모든 데이터를 2차원 테이블로 표현(column / row)
- 각 row에는 고유 키(PK: Primary Key)가 존재
- 테이블 관계의 종류
- one-to-one: A 테이블의 한 데이터는 B 테이블의 데이터 하나와만 연결
- one-to-many: A 테이블의 데이터가 B 테이블의 여러 데이터와 연결
- many-to-many: A 테이블과 B 테이블 모두 서로 여러 데이터와 연결
- FK(Foreign Key): 다른 테이블의 PK를 참조한 외부 키를 의미
- 중요한 점은 테이블의 셀 하나에는 하나의 데이터만이 존재