[코드스테이츠/10DAY] Unit7 - [Linux/Git] 기초

오은비·2023년 2월 24일
0

코드스테이츠

목록 보기
10/18
post-thumbnail

Command-Line Interface

CLI와 GUI의 차이

  • CLI란?

    명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface의 줄임말로 글자를 입력하여 컴퓨터에 명령을 내리는 방식이다.

  • GUI란?

    Graphical User Interface의 약자. 현대 운영 체제는 물론이고 온갖 게임이나 유틸리티 등에서도 모두 이용되고 있다.

리눅스의 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있다.
리눅스의 터미널은 GUI가 개발되기 이전부터 컴퓨터를 조작하기 위해 사용되었기 때문에 GUI가 할 수 있는 모든 작업은 CLI로 할 수 있다.
수많은 서버컴퓨터 마다 I/O소스를 부착하는 일은 불가능에 가깝다.
Linux 환경에서 CLI를 이용하는 방법은 개발자가 되기를 원하는 사람이라면 반드시 학습 📖 필요!

학습 목표

  • 리눅스 터미널을 실행할 수 있다.
  • CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
  • 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
  • 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
  • 관리자 권한을 이해할 수 있다.
  • 절대 경로와 상대 경로의 차이를 이해할 수 있다.
  • 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.

CLI

프롬포트(Prompt)

  • 터미널에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
  • 명령어 실행시 Enter키를 누르면 된다.

pwd(print working directory)

  • 현재 위치 확인

mkdir(make directories)

  • 새로운 폴더 생성
  • mkdir은 생성할 폴더의 이름과 함께 입력해야 한다.

mkdir helloWorld

helloWorld라는 이름의 폴더를 생성하라고 컴퓨터에게 명령 전달

ls(list)

  • 특정 폴더에 포함된 파일이나 폴더의 리스트 출력
  • 명령어 ls를 이용해 명령어 mkdir을 통해 생성한 helloWorld 폴더 확인 가능

    ls

  • ls의 옵션 la
    cli에서 특정 명령어의 옵션을 사용하는 경우 -를 이용해 옵션을 입력했다고 컴퓨터에 전달한다.
  • ls -l
    : 옵션 l은 폴더나 파일의 포맷을 전부 표현하라는 의미
  • ls -a
    : 옵션 a는 "all"이라는 의미, 숨겨진 폴더나 파일 등의 모든 항목을 터미널에 출력
    하나의 파일 또는 하나의 폴더는 한 줄에 출력된다.
    가장 왼쪽에 출력 되는 두 글자 d는 폴더, -는 파일을 의미한다.
    (폴더는 cd를 통해 진입 가능하다.)
  • ls -al 또는 ls -la

명령어를 이용해 폴더를 GUI의 탐색기로 실행하기

  • Ubuntu

    nautilus .

  • macOS

    open .

cd(change directory)

  • 폴더에 진입하기

touch

  • 파일 생성하기

    ex) touch hi.txt
    -> touch 명령어로 파일 hi를 생성한다.

cat

  • 파일의 내용을 터미널에 출력하기

rm

  • 폴더나 파일 삭제
  • rm으로 삭제시 휴지통을 거치지 않고 삭제 된다.

    rm은 단일 파일을 삭제 할 수 있다. 폴더를 삭제하려면 옵션을 이용해야한다

    • 옵션 r : recursive, 폴더를 지울 때 사용
    • 옵션 f : force, 질문을 받지 않고 지울 때 사용
      주로 두 옵션을 이용하여 삭제한다. rm -rf

mv(move)

  • 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 변경

    mv bye.txt bye/
    bye.txt 파일을 bye 폴더 안으로 이동시킨다.

  • mv [폴더나 파일의 이름][도착 폴더의 이름]
  • mv [변경할 폴더나 파일의 이름][변경하고자 하는 폴더나 파일의 이름]

cp(copy)

  • 폴더나 파일을 복사
  • cp [원본 파일 이름][복사할 파일 이름]

    폴더를 복사하려면 옵션을 이용해야한다

    • 옵션 r : recursive, 폴더를 복사할 때 사용
    • 옵션 f : force, 질문을 받지 않을 때 사용
      주로 두 옵션을 이용하여 삭제한다. cp -rf

절대경로와 상대경로

절대경로

ex) /Users/[username]/helloWorld/hello/
폴더 진입 과정을 한 줄로 줄여놓은 구문이 절대 경로이다.

상대경로

특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타낸다.
. : 현재 위치한 폴더
.. : 상위 폴더
/ : 폴더 내부
./ : 현재 폴더 아래의

ex)
./hi : 현재 폴더 아래의 폴더 hi

관리자 권한

절대 경로의 기준점인 루트 폴더 /는 Linux의 관리자 영역이다.
루트 폴더는 관리자의 영역이기 때문에 사용자 권한으로 할 수 있는 일은 없다

sudo

  • 관리자 권한을 획득하는 명령어
  • sudo를 이용하여 생성한 폴더의 소유자는 root이다.

brew 명령어

brew 자체 업데이트: brew update
업데이트 필요한 파일 조회: brew outdated
프로그램 업그레이드(업데이트): brew upgrade 프로그램 이름
프로그램 검색: brew search 검색어
프로그램 정보 확인: brew info 프로그램 이름
프로그램 설치: brew install 프로그램 이름
프로그램 삭제: brew uninstall 프로그램 이름
설치된 프로그램 보기: brew list

프로그램 설치

오늘 node.js, nvm, npm을 설치하였다.
npm을 설치하다 오류가 발생하였다. node_modules 폴더가 생성이 되지 않았기 때문이다.
검색하니 다음과 같은 해결책이 나와 해결하였다.

npm 설치 오류

문제점 : node_modules 폴더 생기지 않음

  1. 프로젝트 최상단 디렉토리로 이동
  2. npm init 을 통해서 package.json 을 생성
  3. npm install express 를 통해서 설치

npm과 package.json

: 협업을 위해 어떤 모듈을 사용하고 있는지 알려주는 안내서, 메타정보를 담고 있다.

npm init 명령어를 입력하면 새로운 package.json을 생성할 수 있다.

package.json에서 중요한 점

  1. devDependencies
    key : 모듈 이름
    value : 버전
    프로젝트를 개발하는 환경에서 필요한 모듈을 알려준다.
    --save-dev 을 사용하여 모듈 추가시 자동으로 devDependencies에 추가됩니다.
  2. dependencies
    devDependencies와는 다르게, 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈이 적혀있다.
    --save을 사용하여 모듈 추가시 자동으로 dependencies에 추가됩니다.
  3. scripts
    CLI에서 사용 가능한 명령을 기술한다.
    CLI에서 실행할 때에는 "npm run <스크립트 이름>"으로 실행한다.
작업 내용실행 스크립트
node.js 앱 실행npm run start
테스트 실행npm run test
코드 검사npm run lint

Git

Git과 Github의 차이

  • Git : 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템.
  • Github : Git Repository를 관리할 수 있는 클라우드 기반 서비스.
    Code Review 등을 통해 협업이 가능하다.

즉, Git으로 버전을 관리하는 폴더에 대해서 Github를 통해 여러 사람들이 공유하고 접근할 수 있다.

Git 용어

Git repository : Git으로 관리 되는 폴더. Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.

  • Local Repository에서 작업 할 수 있으며 다른사람들이 올려놓은 소스 코드를 내 Local로 가져올 수 있다.
  • Remote Repository에 업로드하여 내가 작업한 코드를 공유할 수 있다.

Fork : 다른 사람의 코드에 contribute 하기 위해서 내 Remote로 소스를 가져오는 작업을 말한다.
Clone : Fork한 코드를 수정하기 위해 내 컴퓨터로 가져오는 작업
Push : 코드 변경 작업을 완료 후 변경된 내용을 Commit을 통해 저장해준 후 Remote Repository에 반대로 올려주는 작업
Pull request : 내가 제안한 코드 변경사항에 대해 반영 여부 요청
Pull : Remote Repository에서 변경 사항이 있을 때 Local Repository로 가져오는 작업

profile
드림오구

3개의 댓글

comment-user-thumbnail
2023년 2월 26일

mkdir rabbit
cd rabbit
우후훗

1개의 답글