TIL 6일차

ᄋᄋ·2021년 11월 20일
0

CLI vs GUI

CLI (Command Line Interface)

글자의 입출력(I/O)을 통해 사용자와 컴퓨터 간 소통하는 방식

GUI (Graphical User Interface)

그래픽을 이용해 사용자와 컴퓨터가 소통하는 방식


CLI 기본 명령어

프롬프트(Prompt)는 한 줄의 CLI의 명령줄 대기모드로 여기에 명령어를 입력하면 됨.

  • pwd : 현재 위치(폴더)를 확인하는 명령어 (print working directory)
  • mkdir : 새로운 폴더를 생성하는 명령어 (make directories)
  • ls : 폴더나 파일의 목록을 출력하는 명령어
  • nautilus (Ubuntu), open (macOS) : 현재 폴더를 파일 탐색기로 여는 명령어
  • cd : 폴더에 진입하는 명령어
  • touch : 새로운 파일을 생성하는 명령어 (예시_ touch hello.txt)
  • cat : 파일의 내용을 터미널에 출력하는 명령어
  • rm : 폴더나 파일을 삭제하는 명령어 (remove), 옵션: -rf
  • mv : 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어 (move)
  • cp : 폴더나 파일을 복사하는 명령어 (copy), 옵션: -rf
  • sudo : 관리자 권한
  • 각 명령어에 포함된 옵션은 명령어 이름만 입력하거나
    -h 또는 --help와 같은 옵션을 통해 확인할 수 있음.

  • 명령어를 사용할 때, 등장하는 키워드

    • / : (단독으로 쓰면)루트 디렉토리, /자체는 폴더를 뜻하기도 함.

    • ~ : 홈 디렉토리

    • 절대 경로의 시작은 루트 디렉토리/

    • 상대 경로의 시작은 현재 디렉토리.

    • cd .. 또는 cd ../ => 상위폴더로 이동

    • cd 폴더이름 또는 cd ./폴더이름 => 하위폴더로 이동

    • cd 또는 cd / => 루트폴더로 감.

    • 역슬래쉬\: 공백을 의미
      ex) 폴더이름을 so good으로 하려면, so\good 이나 "so good"으로 표기하면 됨. 만약 mkdir so good으로 하면, so라는 폴더와 good이라는 폴더 둘 다 생성됨!

    • 명령어 code는 Vscode 명령어임.
      --> code . => vscode 실행됨.
      --> code 파일이름 => vscode로 해당 파일 열기.

    • tab으로 특정 글자로 시작하는 폴더들 나오게 할 수 있음.
      : cd A + tab 하면 현위치에서 'A'로 시작하는 폴더 이름이 나옴.


패키지와 패키지 매니저

패키지와 패키지 매니저는, 포장된 상품과 온라인 쇼핑몰 같은 역할을 함.

  • 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일.

    • 구성 : 프로그램 파일, 프로그램 설치 파일, 프로그램 설치 설명서, 프로그램에 대한 정보를 담은 파일
  • 패키지 매니저 : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구임.(앱 스토어와 비슷함.)

    각 운영체제에 맞는 패키지 매니저가 있음.

    Linux Ubuntu 운영체제 --> apt 패키지 매니저

apt update 패키지의 업데이트 여부 확인 관리자 권한 필요
apt list --upgradable 업데이트 필요한 파일 조회
apt upgrade 프로그램 업그레이드 관리자 권한 필요
apt show 프로그램의 정보 확인
apt install 프로그램 설치 관리자 권한 필요
apt list --installed 설치된 프로그램 목록 보기
apt remove 프로그램 삭제 관리자 권한 필요
apt search 패키지 검색

패키지 설치/삭제 등의 작업을 진행할 때 sudo 명령어를 이용해서 관리자 권한을 획득해야 함. ex) sudo apt install 패키지


nvm, node.js

런타임이란 프로그래밍 언어가 구동되는 환경, 즉 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳을 말함.

JavaScript 런타임 : 웹 브라우저들, node.js

node.js를 이용해서 JavaScript로 웹 페이지 뿐만 아니라 서버와 같은 다른 프로그램을 만들 수 있음.

HTML script태그 내에 JavaScript 코드를 작성하면, 그 코드가 웹 브라우저에서 동작하는 것처럼,
CLI 환경에서 node 파일이름 명령어를 프롬프트에 입력하면 작성한 코드가 node.js라는 런타임에서 실행됨.

node.js는 nvm(Node Version Manager)을 통해 설치하는 게 좋음.
nvm은 node.js의 다양한 버전을 쉽게 설치하고, version을 쉽게 바꿀 수 있게 해주는 node의 버전 관리 프로그램으로 볼 수 있음. (윈도우즈 환경에서는 nvm을 사용할 수 없음!)


npm과 package.json

하나의 프로그램은 다양한 모듈이 합쳐져서 만들어짐.
이러한 남이 만들어놓은 모듈을 node.js 에서는 npm 모듈이라는 이름으로 부르며, 이에 대한 정보를 담아둔 곳이 바로 package.json임.

  • npm (Node Package Manager)
    node.js 환경에서 외부 라이브러리를 다운로드 받는 대표적인 방법. 필요한 모듈을 다운로드받을 수 있는 모듈 스토어임.(앱스토어와 같은 개념)

    리눅스의 패키지 매니저가 apt, macOS의 패키지 매니저가 brew이듯, node.js 생태계의 패키지 매니저는 npm임.

  • package.json
    프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있음.

    package.json에 필요하다고 적혀있는 모듈들을 다운받으면 node_modules이라는 폴더가 생성되고, 그 폴더에 해당 모듈들이 저장됨.

    참고로, 이때 package.json에 명시된 모듈들을 다운받는 명령어는 npm install임. 만약 package.json에 명시되지 않는 모듈을 다운받아야 한다면 npm install 모듈이름으로 명령하면 됨.

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

    package.json은 크게 scrip, dependency, devDependency로 구성됨.

    • script : CLI에서 사용가능한 명령어들 실행시키기
    • dependency : 이 프로젝트가 실행될 때 직접적으로 필요한 모듈
    • devDependency : 개발 환경 세팅에 필요한 모듈로 프로젝트를 실행하는 데 있어서 필수적이지는 않음.


dependency & devDependency
위에 언급했던 npm install 명령어를 쓰면, dependency와 devDependency에 명시된 모듈들이 다운로드 되는 거임.

script
아래 예시를 살펴보면,

{
"scripts": {
  "start": "node index.js",
  "test": "mocha test/index.test.js",
  "lint": "eslint",
  "submit": "codestates-submission"
},
}

npm run start 명령어 : index.js 파일을 node.js로 실행한다는 걸 의미함.

npm run test 명령어 : test 폴더의 index.test.js 파일을 mocha 모듈로 실행시킨다는 걸 의미함. (테스트)

npm run submit 명령어 : codestates-submission 모듈로 과제 제출하라는 의미임.

*run은 생략 가능함.


명령어 ls의 옵션 l, a

명령어 ls에는 자주 사용하는 옵션 la가 있음.

ls -l
ls -a
ls -al 또는 ls -la (옵션 순서는 기능에 영향 미치지 않음.)

-a (a는 "all"임.)
숨어있는 폴더/파일을 포함한 모든 항목을 터미널에 출력함.

-l
폴더/파일의 포맷을 전부 표현하라는 의미임.
drwxr-xr-x
-rw-r--r--
d는 폴더를, -는파일을 나타냄. 폴더는 cd를 통해 진입할 수 있지만, 파일은 진입할 수 없음.


drwxr-xr-x를 해석해보자.
먼저 메세지를 두 부분으로 나누면,

d 1번 부분
rwxr-xr-x 2번 부분

2번 부분에 존재하는 r, w, x, - 글자는 특정 파일 및 폴더의 접근 권한에 대한 정보를 담고 있음.

r : read의 약자, 읽기 권한. (파일 및 폴더안에 있는 데이터, 속성, 서브 폴더 등에 접근이 가능함.)

w : write의 약자, 쓰기 권한. (파일 및 폴더의 속성과 데이터를 변경할 수 있음.)

x : execute의 약자, 실행 권한. (해당 파일을 실행하여 사용할 수 있음.)

-는 권한 없음을 의미함.

예시
rwx는 해당 파일에 읽기, 쓰기, 실행 권한이 있음을 의미함.
r-x는 읽기, 실행 권한은 있으나 쓰기 권한은 부여되지 않았음을 의미함.
r--는 오직 읽기 권한만 존재함을 의미함.


2번 부분을 다시 세 부분으로 나누면,

rwx 1번 부분
r-x 2번 부분
r-x 3번 부분

1번 부분은 파일 및 폴더를 소유하는 유저가 가지는 접근 권한에 대한 거임. 즉, 해당 파일을 소유한 유저는 파일에 대한 읽기, 쓰기, 실행 권한을 가짐.

2번 부분그룹, 3번 부분다른 유저가 해당파일에 대해 갖는 권한을 의미함.


명령어 rm의 옵션 r, f

명령어 rm으로 삭제한 폴더/파일은, 휴지통을 거치지않고 삭제함. 또한 단일 파일은 삭제할 수 있는데, 폴더를 삭제하려면 옵션을 이용해야 함. -r -f

rm -rf
옵션 r (recursive)은 폴더를 지울 때 사용하는데, 이때 파일을 저장하고 있는 폴더도 삭제 가능함.

옵션 f (force)는 질문을 받지 않고 강제적으로 지울 때 사용함.
보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있음.
그런 이유로 -f를 사용할 때는 각별히 주의해야 함!

-r과 -f 명령어를 합쳐 -rf 형태로 쓸 수 있음.
rm -rf 명령어는 건드리면 안 되는 파일도 무차별적으로 삭제하여 문제를 일으킬 수 있음.

*cp와 같은 다른 명령어에도 -f 옵션과 -r 옵션을 적용할 수 있음.


cat 명령어 대신 쓰는 명령어

cat 명령어의 문제점
cat은 터미널에서 파일의 내용을 출력함. 그런데 전체 내용을 출력하다보니 가령 파일이 담고 있는 내용이 너무 길 경우, 터미널 상에서 내용이 잘려서 나오는 경우가 생김.

전체를 열람하지 않고 파일 내용의 부분만 열람할 수 있게 만들어주는 명령어가 있음.

head 명령어, tail 명령어, more 명령어, less 명령어

profile
개발자A

0개의 댓글