[Linux] 기초

chris0205.eth·2023년 4월 3일
0

웹 개발 기초

목록 보기
1/1
post-thumbnail

리눅스란?

리눅스CLI 형태의 운영체제라고 보면 된다. 우리가 익숙하게 사용하던, 윈도우, 맥 OS 등은 GUI 형태의 운영체제여서 일반적인 사용자들이 사용하기 편하다.
vs code에서도 리눅스를 사용할 수 있다.
위 이미지의 'terminal' 부분이 리눅스를 이용할 수 있는 공간이라고 보면 된다.
그럼 오늘은 리눅스를 사용할 수 있게 해주는 다양한 명령어에 대해서 알아보도록 하겠다.


리눅스 기본적인 명령어

ls

ls -l / ls -a / ls -al
ls의 옵션 -a는 “all”이라는 의미이다. -l은 폴더나 파일의 포맷을 전부 표현하라는 의미이다.
ls -l의 경우에 나타나는 포맷 중에서 d 로 시작하면 폴더, - 로 시작하면 파일을 의미한다.

open, touch, cat

open: 현재 디렉토리 finder로 열기
touch: 파일 만들기
cat: 파일의 내용을 터미널에 출력

rm

rm으로 삭제한 폴더나 파일은 휴지통을 거치지 않고 삭제된다.
rm은 단일 파일만 삭제할 수 있다.
폴더를 삭제하기 위해선 rm -rf <NAME_OF_FOLDER>를 사용해야 한다.

-rf: recursive & force
r for remove folder / f for remove without asking

mv

폴더나 파일을 이동할 때 사용한다.
gui 에선 drag&drop을 통해 폴더나 파일을 이동시킨다.
mv <NAME_OF_FOLDER(FILE)> <FOLDER>

폴더나 파일의 이름을 변경할 때 사용한다.
위 방식과 유사하게 앞에는 이름을 변경하고자 하는 폴더나 파일, 뒤에는 변경하려고 하는 이름을 배치해서 사용하면 된다.

cp

cp <original file> <file that will be copied and pasted>
폴더를 복사할 때는 -rf를 붙여주는 것 빼곤 다른것이 없다.


관리자 권한과 경로

컴퓨터의 운영체제에는 사용자와 관리자가 있다. 사용자는 일상적으로 PC를 켜서 바탕화면에 진입하기 위해 로그인하는 계정이다. 컴퓨터의 주인은 사용자 본인인데 왜 관리자가 필요했을까?

항상 관리자 권한으로 실행되는 컴퓨터는 악성 코드가 삽입된 프로그램이 어떠한 안전장치도 없이 설치되기 때문이다. 즉, 일종의 안전장치로서 관리자와 사용자를 나눠둔 것이다. 그럼 지금부터 CLI로 관리자 권한을 획득하고, 사용하는 방법을 알아보겠다.

절대 경로와 상대 경로

절대경로는 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트폴더(/)라고 한다. 정리하면, 절대 경로는 특정 폴더나 파일이 루트폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타낸다.

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

관리자(root) 권한

절대경로의 기준점인 루트폴더는 리눅스의 관리자 영역이다. 따라서 일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없다. 리눅스 관리자의 가장 큰 특징은 어떤 일이 있더라도 일반 사용자에게 관리자 권한(루트 권한)을 완전하게 넘기지 않는다.

사용자 권한은 [username] 폴더 내에서만 자유롭게 사용할 수 있다. 이 폴더는 Users/ 에 존재한다.

*사용자 폴더의 경로는 ~/로 표시된다. 물결기호는 루트폴더로부터 사용자 폴더(username)까지의 경로를 축약한 형태이다.

사용자가 관리자 권한을 사용하기 위해선 sudo 란 명령어를 사용한다.

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

sudo는 항상 비밀번호와 함께 사용된다. 또한, 아래 그림을 보면 알 수 있듯이 sudo를 사용해서 생성한 폴더는 root라고 써있음을 알 수 있다.


텍스트 에디터 nano

Vim의 기본적인 사용법

nano 실행

vs code 를 code hello.js 로 열듯이, nano도 똑같이 nano hello.js 로 열 수 있다.

파일 저장

ctrl + O 다음에 enter


패키지와 패키지 매니저

앱과 앱스토어에 비유할 수 있다. 맥 os에선 brew를 사용한다.
패키지 않에는 하나의 프로그램이 정상적으로 설치되고 동작하기 위한 모든 파일이 압축되어 있다. 기본적으로 구성은 다음과 같다.

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

brew command

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

result of neofetch


Node.js

Runtime?
→ 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳(e.g. 자바스크립트 런타임은 크롬, 사파리같은 웹 브라우저가 포함된다. 또한 node.js 도 포함된다.)

nvm & node.js

nvm을 이용하면 node.js의 다양한 버전을 쉽게 설치하고, 사용할 수 있다.

nvm 간단 사용법

node version manager
nvm을 통해 간단한 명령어로 node를 설치하고, 다양한 node version을 손쉽게 옮겨 다닐 수 있다.
nvm ls nvm을 통해 설치한 node version들이 나온다.
nvm install 버전 특정 버전의 Node 설치
nvm use 버전 특정 버전의 node 사용
nvm use --lts lts 버전 사용

npm & package.json

node로 js 파일을 실행하기 위해선, node helloWorld.js 를 써주면 된다.

package.json?

npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일이다. 즉, 프로젝트(패키지) 전반에 관한 정보가 들어있다.

{
	"name": "modern-javascript-koans",
	"version": "1.0.0",
	"description": "",
	"main": "index.js",
	"scripts": {
      "test": "mocha modern-js-koans/*.js --sort",
      "report": "mocha modern-js-koans/*.js --sort --reporter @mochajs/json-file-reporter",
      "submit": "*****"
     },
	"keywords": [],
	"author": "*****",
	"dependencies": {
      "*****": "^1.1.1"
     },
	"devDependencies": {
      "@mochajs/json-file-reporter": "^1.2.1",
      "chai": "^4.2.0",
      "mocha": "^8.2.0",
      "sinon": "^9.0.3"
     }
}

line 1~3은 패키지에 대한 정보
“scripts”는 CLI에서 사용가능한 명령어 집함
“dependencies” & “devDependencies”는 개발과 관련된 dependency들

주의해야 할 것은 package.json은 어떤 모듈인지에 대한 설명만 적혀 있고, 실제 모듈은 따로 node_modules이라는 폴더에 저장된다는 것이다!

npm?
node.js 환경에서 외부 라이브러리를 다운로드하기 위해 다양한 방법이 존재하지만, 그중 대표적인 것은 바로 npm 이다.
macOS의 패키지 매니저가 brew이듯, node.js 생태계의 패키지 매니저는 npm이다.

천리길도 npm install 부터
위 명령어를 입력하면, package.json에서 필요하다고 하는 모듈을 다운로드한다. npm install이 완료된면 node_modules 디렉토리가 생긴 걸 확인할 수 있다!

devDependencies

프로그램 실행과 관계없는 오로지 개발을 위해 필요한 dependency(의존성 모듈)

{
  "devDependencies": {
    "@mochajs/json-file-reporter": "^1.2.1",
    "chai": "^4.2.0",
    "mocha": "^8.2.0",
    "sinon": "^9.0.3"
  }
}

위와 같이 키는 모듈 이름, 값은 버전이다.
npm install mocha --save-dev
--save-dev 옵션과 함께 install 실행시 자동으로 devDependencies에 추가된다.

*mocha는 테스트를 위해 필요한 모듈이다.

dependencies

프로젝트가 성공적으로 실행되기 위해 필요한 dependencies이다.

{
  "dependencies": {
    "react": "^16.7.0",
    "react-dom": "^16.7.0"
  }
}

해당 프로젝트에선 react를 사용하고 있다!

why save in package.json?

다른 사람에게 해당 프로젝트에 대해 알려주기 위해서 사용한 모듈을 적어놓는다!

scripts 항목

CLI에서 사용가능한 명령을 기술한다. 이를 우리는 npm script라고 부른다.
npm run <스크립트 이름> 으로 실행한다.

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

마치며

리눅스의 기본적인 명령어를 살펴보고, 리눅스로 패키지를 설치하고 사용하는 방법을 살펴봤다. 다음엔 현업에서 필수적인 git에 대해서 한 번 살펴보겠다.

profile
long life, long goal

0개의 댓글