Linux / Git 기초

Dongwoo Joo·2023년 2월 24일
0

codestates bootcamp

목록 보기
9/48

Summary

나무꾼의 주 업무는 나무를 하는 것(베고 나르는 것)이다.
나무를 하는데 필요한 직접적인 요소들은 '도끼, '나무지게'가 있다.

하지만, 나무를 하는데 필요한 간접적인 요소들도 있다.
벤 나무를 소규모로 자르기 위한 절단목 받침, 이를 보관하기 위해 나무 창고가 필요하고,
나무를 얼마나 했는지에 대한 기록지도 필요할 것이다.

개발자들이 개발하는데 직접적으로 관여하는 도구들인 HTML, CSS, JS가 있듯이,
개발자들의 개발하는데 간접적으로 기여하는 도구, 환경이 있다.
nano, npm, Node.js, Git, CLI를 알아보자.

CLI(Command-Line Interface)

명령어 - 줄 인터페이스 = 명령어 줄로 이루어진 입출력 화면

명령어는 특정 작업을 수행하기 위해 컴퓨터 프로그램에 내리는 명령이다. 인터페이스는 서로 다른 두 개 이상의 컴퓨터 시스템 구성 요소 간에 정보를 교환하는 공유 경계이다. 이를 통해 컴퓨터와 사용자는 통신(커뮤니케이션)을 할 수 있다.

컴퓨터와 의사소통을 통해 작업 명령을 실행시키고 결과를 확인하기 위해서는 입.출력이 필요하다.
사람이 명령할 때는 손으로 명령하고, 컴퓨터는 결과를 우리에게 시각적, 청각적 자료로 전달한다.
따라서, 입력값은 손(마우스, 키보드)으로 입력하고, 출력값은 눈(모니터)과 귀(스피커)로 보고 듣는다.

그런데, GUI(그래픽 유저 인터페이스)인 마우스가 없기 전에는 어떻게 컴퓨터와 의사소통 했을까?
CLI로 의사소통을 했다. 그리고 이것은 지금까지도 유용하게 쓰인다.
클라우드 컴퓨팅을 수행하는 수십만대의 서버 컴퓨터들의 개인 마우스, 키보드로 제어하면 매우 비효율적이기 때문에, 다른 컴퓨터로 터미널을 통해 서버 컴퓨터와 소통한다.

CLI의 대표적인 예시로는 도스, 명령 프롬프트, 터미널, 윈도우즈 터미널이 있다.

CLI 명령어

내가 사용하는 MacOs는 Terminal을 제공한다.
이와 관련된 몇 가지 용어를 짚고 넘어가자.

명령어: 용도 -> 예시

  • pwd: 현재 위치 확인 -> Users/dwjoo/desktop
    (print working directory)

  • mkdir: 새로운 폴더 생성 -> mkdir mr.joo => mr.joo 폴더 생성
    (make directory)

  • ls: 특정 폴더에 포함된 파일/폴더 확인 -> ls 입력 시, 현재 위치의 폴더 내 파일과 폴더가 확인됨(list)

  • ls-l: 파일과 폴더를 구분. d로 출력 = 폴더 / -로 출력 = 파일

  • ls-a : 파일과 폴더의 포맷을 전부 표현하라는 의미.

  • ls-al 또는 la: 숨겨진 파일 및 세부 정보를 포함해서 현재 디렉토리에 있는 모든 파일 및 하위 디렉토리를 표시

  • open .: 현재 위치를 GUI로 실행 실행

  • cd: 폴더 진입 -> 현재 위치에서 하위 폴더로 이동
    (change category)

  • cat: 파일의 내용을 터미널에 출력하기
    (concatenate)

  • rm: 폴더나 파일 삭제 -> 파일 삭제: rm 파일명.tx / 폴더 삭제: rm-rf 폴더명
    (remove)

  • mv: 폴더/파일 이름변경 or 위치 옮기기 -> 파일을 폴더로 이동: mv 파일이름 폴더이름 / 파일 이름 변경: mv 파일이름 파일이름
    (move)

  • cp: 복사하기 -> cp hello.txt bye.txt = hello.txt 파일 내용을 복사하여 bye.txt 파일 생성 후 복사한 내용 붙여넣기
    (copy)

관리자 권한과 경로

  • 관리자와 사용자의 차이점
    악성코드, 프로그램 충돌로부터 사용자를 보호하기 위해 만들어짐.
    사용자 계정 컨트롤(User Account Control)은 시스템을 관리하는 관리자, 일반 pc 사용자를 구분
    관리자는 프로그램 설치/변경/삭제의 권한을 갖는다.

  • 절대경로와 상대경로
    절대경로: 기준점으로부터의 절대적인 위치. 기준점 = 루트 폴더(/)
    예시) /Users/dwjoo/desktop/codestates -> 파일/폴더의 절대적인 위치를 나타낸다.
    상대경로: 현재 위치를 기준점으로 파일/폴더의 위치를 표현.
    현재 위치한 폴더(.), 상위 폴더(..), 하위 폴더로 진입(./)
    cd ../ -> 현재 폴더의 상위 폴더로 진입(상위 폴더는 1개이기 때문에, 이름을 입력하지 않아도 된다)
    cd ./hi -> 현재 폴더의 하위 폴더인 hi로 진입(하위 폴더는 n개이기 때문에, 이름을 입력해야 함)

sudo: 관리자 권한을 획득하는 명령어
sudo mkdir sudodwjoo -> 관리자 권한으로 sudodwjoo라는 폴더가 생성된다.

nano(텍스트 에디터)

CLI에서 파일에 텍스트를 입력하기 위한 편집기
터미널에서 에디터를 사용하는 이유는 aws같은 원격 서버 환경에서 원격으로 텍스트 파일을 편집하기 위함이다.

  • 파일 열기: nano 파일이름

  • 나노 화면 설명
    파일을 열면 3구역으로 나눌 수 있다.
    맨 위 상단바 -> 파일 이름 // 중간 화이트보드 -> 편집 화면 // 하단바 -> 각종 단축키.
    하단바의 단축키 예시) ^G = Ctrl + G 키 조합을 의미한다.

  • 파일 저장
    ^WriteOut -> 파일을 저장하고 창을 닫지 않는다.
    ^X -> 창을 닫을 때 저장할 지에 대한 질문이 나오면 Y로 답하면 파일이 저장된다.

패키지와 패키지 매니저

패키지

하나의 프로그램이 정상적으로 설치되고 동작하기 위한 모든 파일이 압축되어 있다.

패키지 내 파일 구성

  • 프로그램 파일
  • 프로그램 설치 파일
  • 프로그램 설치 설명서
  • 프로그램에 대한 정보를 담은 파일

패키지 매니저
프로그램 업데이트 시, 매번 개별적으로 진행하면 불편하다. 패키지 내 모든 프로그램을 한꺼번에 업데이트하기 위한 도구이다. 스마트폰의 앱스토어 같은 역할이다.

MacOs는 Homebrew 패키지 매니저를 사용한다.
brew 명령어를 이용해서 패키지 매니저를 사용한다.

Node.js

JavaScript의 런타임 중 하나이다.

런타임은 프로그램이 동작하는 곳, 프로그래밍 언어가 실행되는 환경이다. Node.j는 웹 브라우저가 아닌 곳에서도 js를 실행할 수 있게 한다. 이는 웹 페이지 구성의 역할을 넘어 서버 구축 등 활용폭을 확장시켰다.

nvm(Node Version Manager)

패키지 매니저처럼 다양한 Node.js의 버전을 관리하는 프로그램
nvm install --lts
-> nvm 으로 lts 버전의 Node.js를 설치한다.

  • nvm 간단 사용법
    nvm ls -> nvm을 통해 설치한 node.js 버전 확인
    nvm install 12.18.3 -> 특정 버전의 node.js 설치

Node.js로 JavaScript파일 실행

nano를 이용해 새로운 파일 생성.
nano hello.js
-> nano로 hello.js라는 파일 생성하고 연다.

npm(node package manager)

npm은 필요한 모듈을 다운로드할 수 있는 모듈 스토어이다.
핖요한 모듈은 npm에서 다운로드 받으면 된다.

npm init => 새로운 package.json 파일 생성

package.json

패키지 버전을 관리하는 파일이다.
하나의 프로그램을 다양한 모듈이 합쳐져서 만들어진다.
package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법이 명시되어 있다.

한 줄 요약

개발에 필요한 부차적인 요소들, 환경에 대한 지식이 부족하다.
관련 글을 찾아보면서 이 프로그램들이 서로 어떻게 연동되어 실행되는지 파악해보자.

profile
pursue nature

0개의 댓글