코딩응애의 개발블로그

코드스테이츠 10일차 - ([Linux/Git] 기초) & 회고 본문

코드스테이츠(부트캠프)

코드스테이츠 10일차 - ([Linux/Git] 기초) & 회고

이너멜 2022. 7. 6. 23:47

컴퓨터를 조작하기 위한 입력과 출력을 간단하게 I/O(Input/Output)라고 표기함. GUI 가 시장을 지배했어도 CLI가 더 유리한 이유가 AWS같은 대량의 컴퓨터를 설치하는 서비스에 하나하나 I/O소스 (마우스 모니터 등등)를 부착하는 일은 불가능에 가까워서 CLI에 익숙해 져야 한다. 

프롬프트

키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 프롬프트(Prompt)라고 한다. 터미널 만지면서 이걸 부르는 용어가 따로 있다는걸 처음 알음; 

 

각종 명령어 들을 배웠는데 여기에다 거진 다 정리한 것들이라 처음 안거나 추가적으로 적어야 할것 들만 적음 

 

nautilus .

터미널의 현재 위치를 GUI의 탐색기(파인더)로 열 수 있다.

rm -rf bye

폴더를 삭제를 할때는 rm말고도 r 과 f 라는 옵션을 이용을 해야 한다. 옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용 저렇게 2개 같이 사용하면 폴더지우면서 질문은 받지 않고 지우는 것이다.

 

mv로 폴더나 파일을 다른 폴더로 옮길 수 있다. 명령어 mv 뒤에는 순서대로 [폴더나 파일의 이름] [도착 폴더의 이름]

입력 해주면 된다. 

# "bye.txt"를 폴더 "bye"로 옮깁니다
mv bye.txt bye/
ls
# bye 폴더만 출력됩니다.

난 폴더명과 파일명을 바꾸는 기능만 있는줄 알았는데 다른 폴더로 옮길 수 있다는건 첨 알았다.

 

cp: 폴더나 파일을 복사하기

명령어 cp는 copy의 약자로, 폴더나 파일을 복사할 때 사용. cp [원본 파일 이름] [복사할 파일 이름]을 프롬프트에 입력

cp helloWorld.txt hiComputer.txt
ls
# helloWorld.txt hiComputer.txt 가 출력됩니다.

폴더를 복사 할때는 그냥 cp를 쓰면 안되고 옵션 r,f를 사용해야 한다 

 

절대 경로와 상대 경로

상대 경로는 특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타냅니다. 현재 위치한 폴더는 점(.)으로 표현하고, 상위 폴더는 두 개의 점(..)으로 표현.

명령어 ls를 통해 확인되는 폴더나 파일은, 상대 경로로써 ./을 붙여 표현할 수 있다.

만약 '현재 폴더 아래의 폴더 hi' 로 진입하려고 한다면, 명령어 cd를 이용할 수 있다.

점(.)은 현재 폴더를, 슬래시(/)는 폴더 내부를 나타냅니다. 따라서 다음 표현에 포함된 ./는 "현재 폴더 아래의"라는 뜻이다. 

절대 경로의 기준점인 루트 폴더(/)는 Linux의 관리자 영역. 사용자 폴더의 경로(Path)는 ~/로 표시. 

 

sudo: 관리자 권한을 획득하는 명령어

명령어 sudo는 기본적인 CLI 명령어의 앞에 작성하여, 관리자 권한을 일시적으로 획득하는 명령어이다

한시적으로나마 관리자 권한을 가지기 때문에 항상 비밀번호와 함께 사용. 

 

패키지와 패키지 매니저

리눅스 운영체제의 패키지와 패키지 매니저는, 포장된 상품과 온라인 쇼핑몰 같은 역할을 합니다. 패키지는 여러 파일이 담겨있는 하나의 상자입니다. 리눅스의 패키지는 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일이다. 

패키지 매니저는 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구. 패키지 매니저를 스마트폰으로 비유하면, 앱 스토어와 그 역할이 비슷. 패키지 매니저는 모든 패키지의 저장소 위치를 저장하고 있습니다. 사용자가 패키지 매니저에게 특정 프로그램의 설치를 요청하면, 패키지 매니저는 패키지가 저장된 위치에서 패키지를 다운로드해 설치 프로그램을 실행. 패키지 매니저는 설치된 모든 프로그램의 업데이트를 확인하거나, 필요 없는 프로그램을 제거하는 데에도 사용

 

Node.js

프로그래밍 언어가 구동되는 환경, 즉 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳이 바로 런타임이라고 하는데 JS런타임 중 하나가 바로 Node.js 이다. 크롬이나 사파리 같은 웹 브라우저도 런타임중 하나다. 

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

되었다. 활용폭이 크게 확장. 

런타임이란, 프로그래밍 언어가 실행되는 환경, 그리고 Node.jsJavaScript 런타임입니다.

 

nvm

패키지 매니저처럼 node.js의 버전을 관리할 수 있도록 nvm으로 Node.js를 설치. nvm을 사용하면 Node.js의 다양한 버전을 쉽게 설치하고, 사용할 수 있습니다.

CLI 환경에서 node <file_name> 명령어를 프롬프트에 입력하면 작성한 코드가 Node.js라는 런타임에서 실행.

nvm은 Node Version Manager입니다. nvm을 통해 간단한 명령어로 Node.js를 설치하고, 다양한 Node.js version을 손쉽게

옮겨 다닐 수 있습니다. nvm다양한 Node.js version를 설치하고 관리할 수 있는 프로그램

 

npm과 package.json

남이 만들어놓은 모듈을 node.js 에서는 npm 모듈이라는 이름으로 부르며, 이에 대한 정보를 담아둔 곳이 바로 package.json

이다. node.js 환경에서 외부 라이브러리를 다운로드하기 위해 다양한 방법이 존재하지만, 그중 대표적인 것은 바로 npm.

npm은 Node Package Manager로 일종의 앱스토어, 필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어 이다.

 

package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법,

프로그램을 테스트하는 방법 등이 명시.

이 프로그램을 실행시키기 위해 필요한 실제 모듈은 따로 node_modules이라는 폴더에 저장된다는 것입니다.

package.json에는 어떤 모듈인지만 적혀 있습니다.

package.json이 주는 또 하나의 이점은 프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다는 점.

package.json 에 적혀있는 내용 중 하나인 devDependencies에는 이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다.

dependencies는 devDependencies와는 다르게, 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지가 적혀

있습니다.

대부분 다른 사람과 함께 개발하고 사용하게 됩니다. 그럼 다른 사람에게 이 프로젝트에 대해 알려주어야 하겠죠?!

그 역할을 하는 것이 바로 package.json 입니다.

 

scripts 항목은 CLI에서 사용 가능한 명령을 기술합니다. 우리는 이를 npm script라고 부릅니다. 

CLI에서 실행할 때에는 "npm run <스크립트 이름>" 으로 실행.

node.js 앱 실행 npm run start
테스트 실행 npm run test
코드 검사 npm run lint
과제 제출 (코드스테이츠 only) npm run submit

이러한 작업이 항상 모든 프로젝트에 있는 것은 아니며, 테스트 케이스 통과만이 목적인 경우에는, start 스크립트조차 없을 수

있습니다.

 

짝수 생성기 

함수 구현 자체는 어렵지 않았는데 index.js가 아닌 거기에 명시되어 있는 다른 js 파일에다가 구현을 해야 하는데 왜 안되는 거지 하고 거의 2시간을 씨름 하다가 성공함

 

Git 

Git으로 관리되는 파일은 Github, GitLab, Bitbucket 등의 여러 가지 원격 저장소를 이용해서 백업과 협업을 할 수 있습니다.

Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’

Git에서는 이렇게 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있습니다.

Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템입니다. Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스. 

Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공.

작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있습니다.

다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있습니다.

 

Fork

다른 원격 저장소에 있는 코드를 내 원격 저장소로 가지고 오는 작업을 Fork 라고 함

 

Clone

Remote Repository에 있는 코드를 Clone 해서 내 컴퓨터로 가지고 올 수 있어요.

원격저장소에 있는 코드를 내 컴퓨터로 가져오는 작업 

 

Push

내 컴퓨터에서 소스코드 변경 작업을 완료하고 변경된 내용을 commit을 통해 저장해 준 뒤, Remote Repository에 반대로

올려주는 작업이 필요. 이 과정을 Push 라고 합니다.

Push를 완료하고 나면 GitHub에는 Pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있습니다.

 

Pull

Remote Repository에서 변경 사항이 있을 때 Local Repository 로 가져오는 Pull 작업도 가능 clone과 pull에 대한 차이점 정리해 놓음 

 

 

 

Comments