[CodeStates-Section1]U8.Linux/Git 기초

hameee·2022년 11월 2일
0

CodeStates_Frontend_42기

목록 보기
8/39
post-thumbnail

1.후기

 패키지, 모듈, npm...? 모르는 개념이 많이 나와서 공부하기 벅찬 하루였다. 블로그에 누군가 깔끔하게 정리해놓은 자료가 있을 것이라고 기대했지만 그런 구세주는 없었다. 조각난 지식을 내 머릿속에서 이어 붙이는데 긴 시간이 걸렸다. 사실 제대로 이해한 것인지도 의문이다. 직접 배포를 해봐야 완전히 이해되지 않을까 싶다.

 스터디를 시작했다. 모르는 것을 물어볼 사람이 있어서 좋다. 모두가 몰라도 같이 검색해보면서 배우면 기억에 더 잘 남아서 좋다. 빠지지 말고 열심히 해야겠다.

2.새롭게 알게 된 것

Section1 Unit8 - [Linux/Git] 기초
Chapter1. Command-Line Interface
Chapter2. 패키지와 패키지매니저
Chapter3. Node.js
Chapter4. Git

<Chapter1. Command-Line Interface>

1)
I/O(Input/Output): 입력과 출력
입력 소스(Input source): 키보드, 마우스, 카메라, 마이크
출력 소스(Output source): 모니터, 스피커, 전등, 공기청정기(스마트 홈)

2) CLI(Command-Line Interface) 장점
-대량의 서버 컴퓨터를 설치해야 하는 서비스에 용이(ex. 아마존 웹 서비스(AWS, Amazon Web Service)의 클라우드 컴퓨팅)
-서버 컴퓨터마다 I/O 소스(키보드, 마우스, 모니터 등)를 부착하지 않아도 됨

3) 프롬프트(Prompt)
키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
터미널에서 입력하는 CLI의 명령줄 대기모드

4)
pwd(print working directory): 현재 위치 확인
mkdir(make directories): 새로운 폴더 생성(이름에 공백(띄어쓰기)이나 특수문자가 있으면, 백슬래시()를 이용해 적용)
ls(list): 특정 폴더에 포함된 파일이나 폴더 확인
ls -a(list -all): 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력
ls -l(list -long): 폴더나 파일의 포맷을 전부 표현(앞 글자 d면 폴더, '-'이면 파일)
ls -la, ls -al
open 경로: macOS에서 현재 위치를 GUI로 실행
cd(change directory): 폴더에 진입
touch: 파일 생성
cat(concatenate): 파일의 내용을 터미널에 출력
rm(remove): 단일 파일 삭제(휴지통을 거치지 않고 삭제)
rm -r(recursive): 폴더 삭제(휴지통을 거치지 않고 삭제)
rm -f(force): 질문을 받지 않고 지울 때 사용
rm -rf, rm -fr
mv: 폴더나 파일 이름 변경 or 위치 옮기기
이름 변경: mv [폴더나 파일의 현재 이름][새로운 파일의 이름]
위치 옮기기: mv [폴더나 파일의 이름][도착 폴더의 이름]
cp(copy): 파일 복사(cp [원본 파일 이름][복사할 파일 이름])
cp -r(copy): 폴더 복사(cp -r [원본 파일 이름][복사할 파일 이름])
whoami: 로그인된 사용자 확인
sudo: 관리자 권한 획득

5) 컴퓨터가 파일을 옮기거나 복사하는 방법
-옮기는 법: 파일 내용 저장 - 파일 삭제 - 저장된 내용으로 새로운 파일 생성
-복사하는 법: 파일 내용 저장 - 저장된 내용으로 새로운 파일 생성

6) 사용자, 관리자
관리자: 프로그램을 설치, 변경, 삭제하는 권한 가짐
사용자: 프로그램을 실행할 수 있지만, 변경할 수 없도록 제한된 권한 가짐

7) 사용자, 관리자 구분 이유
악성코드와 프로그램의 충돌 최소화

8) 절대경로, 상대경로
절대경로 기준: 루트 폴더(/)
상대경로 기준: 현재 폴더, 파일의 현재 위치

.: 현재 위치한 폴더
..: 상위 폴더
a/: a 폴더 내부
./: 현재 위치한 폴더 내부
../: 상위 폴더 내부
/: 루트 폴더(Linux의 관리자 영역)
~: "/Users/사용자 폴더[username]/"의 축약형(루트 폴더-Users 폴더-사용자 폴더)

9) nano
나노 실행: terminal에 nano 입력
참고 사이트: https://opentutorials.org/course/128/3682

<Chapter2. 패키지와 패키지 매니저>

1) 패키지, 패키지 매니저
-패키지: 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일(기본 구성: 프로그램 파일, 프로그램 설치 파일, 프로그램 설치 설명서, 프로그램에 대한 정보를 담은 파일)
-패키지 매니저: 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구(스마트폰 앱 스토어와 비슷한 역할)
리눅스 패키지 매니저: apt
macOS의 패키지 매니저: brew
node.js 생태계의 패키지 매니저: npm

2) 런타임
프로그래밍 언어가 실행되는 환경
JavaScript 런타임: Node.js, 크롬, 사파리

Node.js라는 새로운 JavaScript 런타임이 등장으로 웹 브라우저가 아닌 곳에서도 JavaScript를 실행될 수 있게 됨

<Chapter3. Node.js>

1) NVM(Node Version Manager)
Node.js의 다양한 버전을 설치, 관리하는 프로그램

명령어로 버전 변경 가능
ex. nvm use 12.18.3

2) NPM(Node Package Manager)
noed.js 생태계의 패키지 매니저
모듈들이 모여있는 모듈 스토어(일종의 앱스토어)
필요한 모듈을 다운로드할 수 있음

3) Package.json
참고 사이트: https://velog.io/@skyepodium/package.json

4) 라이브러리, 패키지, 모듈

출처: https://blog.naver.com/smhrd_official/222898150446
참고 사이트: https://hyunsitstory.tistory.com/entry/python-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%AA%A8%EB%93%88-%ED%95%A8%EC%88%98-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

5) 모듈 다운 과정
-package.json의 의존성 모듈을 일괄 다운받는 방법
package.json 파일 얻음
npm install 명령어 입력
프로젝트 파일 안에 node_modules 폴더 생성됨
node_modules 폴더에 package.json의 dependencies에 명시된 module들이 다운됨

-package.json 안의 단일 모듈 다운받는 방법
package.json 파일 얻음
npm install 모듈이름 명령어 입력
프로젝트 파일 안에 node_modules 폴더 생성됨
node_modules 폴더에 해당 module이 다운됨

6)
package.json: 정보만 있음
node_modules 폴더: 프로그램을 실행시키기 위해 필요한 실제 모듈 저장되는 곳

프로젝트 코드를 서로 주고받을 때
모든 모듈을 전달(X)
package.json에 있는 정보를 전달(O)

코드를 전달받은 사람이 package.json에 있는 정보에 따라 npm에서 직접 모듈을 다운받아 사용

7) package.json

script: CLI에서 사용할 수 있는 명령을 기술, CLI에서 실행할 때는 npm run 스크립트 이름 으로 실행
dependencies(의존성 모듈): 프로그램 실행 시 꼭 필요한 모듈 명시
devDependencies: 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들 명시, 프로젝트를 개발하는 환경에서 필요한 모듈들 명시(ex. lint(코드 모양 잡아줌), 테스팅 모듈).

8) 해당 프로젝트에 모듈 설치
npm install: dependencies, devDependencies의 모든 모듈을 설치
npm install --only=prod: dependencies의 모듈만 설치
npm install --only=dev: devDependencies의 모듈만 설치

9) 해당 프로젝트에 모듈 설치 + package.json에 모듈 추가
-다운받을 모듈을 dependencies에 추가하고 싶다면
npm install 모듈이름 --save
-다운받을 모듈을 devDependencies에 추가하고 싶다면
npm install 모듈이름 --save-dev

<Chapter4. Git>

1) Git, Github
Git: 분산형 버전 관리 시스템, 소스 코드 기록을 관리하고 추적할 수 있음
Github: Git Repository를 관리할 수 있는 클라우드 기반 서비스

Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람이 공유하고 접근 가능

2) git repository
-Remote repository
원격 온라인 서버상의 저장소, 여러 사람이 함께 공유 가능
-Local repository
내 컴퓨터의 저장소, 내 개인 전용 저장소

3) Fork, Clone, Pull, Push

0개의 댓글